PO模型介绍
在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject(思想与面向对象的特征相 同),通常PO模型可以大大提高测试用例的维护效率
优点:重用,业务和对象分离,代码结构清晰,方便代码维护
PO的核心要素
1.在PO模式中抽离封装集成一个BasePage类,该基类应该拥有一个只实现webdriver实例的属性 2.每一个page都继承BasePage,通过driver来管理本page中元素,将page中的操作封装成一个个方法
3.TestCase继承unittest.Testcase类,并依赖page类,从而实现相应的测试步骤
非PO实现
代码展示
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("jack")
sleep(1)
driver.find_element_by_id("su").click()
sleep(2)
driver.quit()
代码分析
不同的运行脚本环境,游览器不同:驱动webdriver.Firefox()可以剥离 请求地址的变化(生产环境和测试环境):url = http://www.baidu.com可以剥离 操作元素时,常常要等待元素加载完成方可进行操作:可以把webdriver提供的find_element*方法封 装,在元素操作前,先判断元素是否可以操作 实际测试场景中,可能有多个测试场景,如果每个测试场景都需要维护url,游览器驱动,元素定位等,效 率会非常低 因此基于以上分析,是否可以设计一个所有测试界面(selenium本身是B/S系统开展测试)的基类,来 维护公共的方法,此处定义名字为BasePage.py,用于存放页面公共方法及webdriver原有方法二次封装等。
PO实现
实现BasePage
BasePage代码实现
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #鼠标操作
class BasePage():
'''BasePage封装所有界面都公用的方法。例如driver,find_element等