一
. 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
原有方法二次封装等。
实现
BasePage
![](https://i-blog.csdnimg.cn/blog_migrate/eb95b8fbf92d5b5ef9a0054dbbee4fb4.png)
实现
实现代码
输出效果
PO
设计模式中的
BasePage
基类对应案例中的
BasePage.py
文件
PO
模式中的
pages
中的案例显示
Search.py
PO
模式设计中
TestCase
对应案例中的
TestCase.py
PO模式的优点
1:PO
提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰
2
:页面对象与用例分离,使得我们更好的复用对象
3
:可复用的页面方法代码会变得更加优化
4
:更加有效的命令方式使得我们更加清晰的知道方法所操作的
UI
元素