#models/driver.py from selenium.webdriver import Remote from selenium import webdriver def browser(): # driver=webdriver.Chrome() host='127.0.0.1:4444' # 运行主机:端口号 dc={'browserName':'chrome'} driver=Remote(command_executor='http://'+host+'./login',desired_capabilities=dc) return driver if __name__=='__main__': dr=browser() dr.get('http://www.baidu.com') dr.quit() #models/function.py from selenium import webdriver import os def insert_img(driver,file_name): base_dir=os.path.dirname(os.path.dirname(__file__)) base_dir=str(base_dir) base_dir=base_dir.replace('\','/') base=base_dir.split('/test_case')[0] file_path=base+'/report/image/'+file_name driver.get_screenshot_as_file(file_path) if __name__=='__main__': driver=webdriver.Chrome() driver.get("http://www.baidu.com") insert_img(driver,'default.jpg') driver.quit() #models/myunit.py from selenium import webdriver from .driver import browser import unittest import os class MyTest(unittest.TestCase): def setUp(self): self.driver=browser() self.driver.implicitly_wait(10) self.driver.maximize_window() def tearDown(self): self.driver.quit() page_obj/base.py class Page(): ''' ''' demo_url='http://127.0.0.1:10000' def __init__(self,selenium_driver,base_url=demo_url,parent=None): self.base_url=base_url self.driver=selenium_driver self.timeout=30 self.parent=parent def _open(self,url): url=self.base_url+url self.driver.get(url) assert self.on_page(),'Did not land on s%' % url def find_element(self,*loc): return self.driver.find_element(*loc) def find_elements(self,*loc): return self.driver.find_elements(*loc) def open(self): self._open(self.url) def on_page(self): return self.driver.current_url==(self.base_url+self.url) def script(self,src): return self.driver.execute_script(src) #page_obj/loginPage.py from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By from .base import Page from time import sleep class login(Page): url='/' # Action demo_login_user_loc=(By.XPATH,"//div[@id='mzCust']/div/img") demo_login_button_loc=(By.ID,"mzLogin") def demo_login(self): self.find_element(*self.demo_login_user_loc).click() sleep(1) self.find_element(*self.demo_login_button_loc).click() login_username_loc=(By.ID,"usernameInput") login_password_loc=(By.ID,"passwordInput") login_button_loc=(By.CSS_SELECTOR,"button.btn.btn-flat.btn-primary.btn-block.btn-lg") def login_username(self,username): self.find_element(*self.login_username_loc).send_keys(username) def login_password(self,password): self.find_element(*self.login_password_loc).send_keys(password) def login_button(self): self.find_element(*self.login_button_loc).click() def user_login(self,username="bl7h",password="newegg@002"): self.open() #self.demo_login() self.login_username(username) self.login_password(password) self.login_button() sleep(1) user_error_hint_loc=(By.ID,"usernameInput-error") pawd_error_hint_loc=(By.ID,"passwordInput-error") user_login_error_loc=(By.ID,"loginError") def user_error_hint(self): return self.find_element(*self.user_error_hint_loc).text def pawd_error_hint(self): return self.find_element(*self.pawd_error_hint_loc).text def user_login_success(self): return self.find_element(*self.user_login_error_loc).text #test_case/login_sta.py from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By from .base import Page from time import sleep class login(Page): url='/' # Action demo_login_user_loc=(By.XPATH,"//div[@id='mzCust']/div/img") demo_login_button_loc=(By.ID,"mzLogin") def demo_login(self): self.find_element(*self.demo_login_user_loc).click() sleep(1) self.find_element(*self.demo_login_button_loc).click() login_username_loc=(By.ID,"usernameInput") login_password_loc=(By.ID,"passwordInput") login_button_loc=(By.CSS_SELECTOR,"button.btn.btn-flat.btn-primary.btn-block.btn-lg") def login_username(self,username): self.find_element(*self.login_username_loc).send_keys(username) def login_password(self,password): self.find_element(*self.login_password_loc).send_keys(password) def login_button(self): self.find_element(*self.login_button_loc).click() def user_login(self,username="bl7h",password="newegg@002"): self.open() #self.demo_login() self.login_username(username) self.login_password(password) self.login_button() sleep(1) user_error_hint_loc=(By.ID,"usernameInput-error") pawd_error_hint_loc=(By.ID,"passwordInput-error") user_login_error_loc=(By.ID,"loginError") def user_error_hint(self): return self.find_element(*self.user_error_hint_loc).text def pawd_error_hint(self): return self.find_element(*self.pawd_error_hint_loc).text def user_login_success(self): return self.find_element(*self.user_login_error_loc).text #esdotestpro/run_demo_test.py from HTMLTestRunner import HTMLTestRunner from email.mime.text import MIMEText from email.header import Header import smtplib import unittest import time import os def send_mail(file_new): f=open(file_new,'rb') mail_body=f.read() f.close() msg=MIMEText(mail_body,'html','utf-8') msg['Subject']=Header("自动化测试报告",'utf-8') smtp=smtplib.SMTP() smtp.connect("smtp.126.com") smtp.login("username@126.com","receive@126.com",msg.as_string()) smtp.quit() print('email has send out!') def new_report(testreport): lists=os.listdir(testreport) lists.sort(key=lambda fn:os.path.getatime(testreport+'\'+fn)) file_new=os.path.join(testreport,lists[-1]) print(file_new) return file_new if __name__=='__main__': now=time.strftime("%Y-%m-%d %H_%M_%S") filename='./demo/report/'+now+'result.html' fp=open(filename,'wb') runner=HTMLTestRunner(stream=fp,title='***',description='') discover=unittest.defaultTestLoader.discover('./demo/test_base',pattern='*_sta.py') runner.run(discover) fp.close() file_path=new_report('./demo/report/') send_mail(file_path)