1、封装基础函数---执行日志、异常处理、失败截图等操作
2、提取所有页面公共的部分
新建一个包Common,在包中新建一个basepage.py
1、提取初始化函数
1 class BasePage: 2 # 初始化函数 3 def __init__(self,driver): 4 self.driver=driver 5 self.log=MyLogger()
2、封装基础函数
1 from selenium.webdriver.support import expected_conditions as EC 2 from selenium.webdriver.support.wait import WebDriverWait 3 import os 4 from Common.tools.get_file_path import * 5 import datetime 6 class BasePage: 7 # 初始化函数 8 def __init__(self,driver): 9 self.driver=driver 10 self.log=MyLogger() 11 12 # 等待元素可见 13 def wait_eleVisible(self,locator,times=30,poll_frequency=0.5,doc=''): 14 ''' 15 :param locator: 元素定位。元组形式(元素定位类型,元素定位方式) 16 :param times: 等待时间 17 :param poll_frequency: 等待时间间隔 ,每0.5秒查看一次 18 :param doc: 截屏函数的形参 19 :return: 20 ''' 21 self.log.info("等待元素{0}可见".format(locator)) 22 try: 23 # 开始等待的时间 24 start=datetime.datetime.now() 25 WebDriverWait(self.driver,times,poll_frequency).until(EC.visibility_of_element_located(locator)) 26 #结束等待的时间 27 end = datetime.datetime.now() 28 #等待时长 29 wait_time=(end-start).seconds 30 self.log.info('等待结束,等待时长为:{0}'.format(wait_time)) 31 except: 32 self.log.error("等待元素可见失败,异常为:{0}".format(e)) 33 #截图 34 self.save_screenshot(doc)#失败截图操作 35 raise 36 37 #截图操作 38 def save_screenshot(self,name): 39 # 图片名称:模块名_页面名称_操作名称_时间(年-月-日_时分秒).png 40 file_name=os.path.join(GetFilePath.screenshots_path,'{0}_{1}.png').format(name,datetime.datetime.now().strftime('%c'))#时间格式化输出 41 self.driver.save_screenshot(file_name) 42 self.log.info("截取网页成功。文件路径为:{0}".format(file_name))
3、提取的basepage.py中的封装函数在页面对象中使用
1、使用basepage.py之前的代码
1 from selenium.webdriver.support import expected_conditions as EC 2 from selenium.webdriver.support.wait import WebDriverWait 3 from PageLocators.loginpage_locators import LoginPageLocator as loc 4 class LoginPage: 5 def __init__(self,driver): 6 self.driver=driver 7 8 def login(self,username,pwd,remember_user=True): 9 # 等待定位元素出现 10 WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc.user_text)) 11 # 输入用户名 12 self.driver.find_element(*loc.user_text).send_keys(username) 13 # 输入密码 14 self.driver.find_element(*loc.pwd_text).send_keys(pwd) 15 # 定位记住手机号元素 16 remember_ele=self.driver.find_element(*loc.remember) 17 # 判断时候记住手机号 18 if remember_user==True: 19 remember_ele.checked=True 20 else: 21 remember_ele.checked=False 22 # 点击登录 23 self.driver.find_element(*loc.login_btn).click()
2、使用basepage.py之后的代码
1 from PageLocators.loginpage_locators import LoginPageLocator as loc 2 from Common.basepage import BasePage 3 class LoginPage(BasePage): 4 def login(self,username,pwd,remember_user=True): 5 doc='登录页面_登录功能' 6 # 等待定位元素出现 7 self.wait_eleVisible(loc.user_text,doc=doc) 8 # 输入用户名 9 self.input_text(loc.user_text,username,doc=doc) 10 # 输入密码 11 self.input_text(loc.pwd_text, pwd, doc=doc) 12 # 定位记住手机号元素 13 remember_ele=self.get_element(loc.remember) 14 # 判断时候记住手机号 15 if remember_user==True: 16 remember_ele.checked=True 17 else: 18 remember_ele.checked=False 19 # 点击登录 20 self.click_element(loc.login_btn,doc=doc)
basepage.py文件中初始化函数和封装基础函数,在封装基础函数的同时,将异常捕获、日志信息、失败截图等操作都封装到了自定义的函数中,调用后不用再对函数进行异常捕获,使用起来比较方便、简介、结构清晰、出现问题容易查找问题等
4、失败截屏操作函数
1 #截图操作 2 def save_screenshot(self,doc): 3 # 图片名称:模块名_页面名称_操作名称_时间(年-月-日_时分秒).png 4 file_name=os.path.join(GetFilePath.screenshots_path,'{0}_{1}.png').format(doc,datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')) 5 try: 6 file=self.driver.save_screenshot(file_name) 7 self.log.info("截取网页成功。文件路径为:{0}".format(file_name)) 8 except: 9 self.log.error("截图失败")