#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)