python ipo模型,python自动化测试po模式
用Python编码时,会使用自己的编码设计格式,比如最常见的singleton模式。本文将为大家介绍PageObject自动设计模式(PO模式)的设计与实现。有兴趣的可以看看。
00-1010 PO模式PO三层模式PO设计模式的优势是什么?将改写后的脚本转为po设计模式,构建基础BasePage层,构建主页的Page层,构建登录页面,构建主页-订单-支付流程的Page层,设计PO模式下测试用例的转换,在Python中编码时会使用自己的编码设计格式,比如最常见的singleton模式,有点抽象的抽象工厂等等……在使用Python进行自动化测试时,你是否也有自己的设计模式?因此,在今天的小章节中,我们需要更多地了解python作为自动化测试中的一种设计模式,尤其是UI自动化的专属模式——“page object”自动化设计模式,简称“PO模式”。
并实现了“页面对象”的自动设计模式
目录
测试自动化中流行的设计模式可以减少自动化测试脚本的代码量,避免代码重复,使它们更容易阅读,并降低维护成本。
其实简单来说就是页面操作、脚本用例、通用页面元素分离的这样一种模式。
一般PO设计模式大多分为三层。
什么是PO模式
第一层:(核心、BasePage层)
对Selenium底层进行第二次封装,定义一个基本属性页面——base page,所有页面都继承。封装Selenium的基本方法,如:元素定位、元素等待、导航页、页面跳转等.PS:其实在使用的过程中不需要全部封装,需要多少方法就封装多少。(之前接触过其他大佬的自动化框架,他把selenium的底层方法都封装在一个层里。这是做很多事情的好方法,但是比较笨重。实际在实际使用中没有那么多用,所以不建议全部打包)。第二层:(页面层、也叫配置层)
页面是分开的,每个元素只定位一次,而且是孤立定位的。如果页面发生变化,只需改变相应的元素定位。如果有一些业务属性和方法,就需要通过业务方法把业务和运营要素的动作分开。第三层:(封装测试层)
使用单元测试框架封装和测试业务逻辑。
PO 三层模式
UI的频繁变化导致页面上UI元素的频繁变化,PO设计模式方便了元素定位变化的维护。
在传统的线性自动化中,同一个元素需要在多个用例脚本中重复定位,PO设计模式可以减少频繁定位元素的代码量。
Section:减少重复代码冗余,方便UI页面频繁变化下的元素定位和维护。
PO 设计模式的优点
首先在项目中创建一个名为pages的python包,然后在pages中创建一个模块base_page.py作为第一层base_page的核心层。
如下图:
将改写的脚本转为PO设计模式
尽量搭建最基础的base_page层。代码示例如下:
#编码:utf-8
从selenium导入web驱动程序
类基页(对象):
1.第一层——核心层——base page层,定义了一个被所有页面继承的页面层。
2.要使用的硒
m 的底层方法进行二次封装
"""
def __init__(self, driver, path=None): # 构造函数,类的初始化
"""
为了方便编写将 driver 初始化,
先使用 "self.driver = webdriver.Chrome()" 后续改为 self.driver = driver
"""
self.driver = webdriver.Chrome()
# self.driver = driver
self.driver.implicitly_wait(5) # 定义全局的默认加载时间
self.load_page(path) # 访问并加载网页
def load_page(self, path=None): # 访问并加载网页,如果 path 不为空的话,直接传给 driver.get() 访问
if path is not None:
self.driver.get(path)
def by_xpath(self, xpath): # 二次封装 selenium 的 xpath 元素定位
return self.driver.find_element_by_xpath(xpath)
def js_click(self, xpath): # JavaScript 定位元素,并执行 click
self.driver.execute_script(arguments[0].click(), self.by_xpath(xpath))
到这里,base_page 层算是写完了,这就是一个最底层、最基础的类,这个类让我们实现了 selenium 底层的 Xpath 定位方法 与 JavaScript 定位元素方法,这些方法能够帮助我们更好的去完成后续的定位处理操作。
ok,接下我们再去编写各个页面层的东西。
构建首页的 Page 层(HomePage)
代码示例如下:
# coding:utf-8
构建登录页的 Page 层(LoginPage)
代码示例如下:
# coding:utf-8
构建 首页 - 订单 - 支付 流程的 Page 层(OrderPage)
# coding:utf-8
以上,我们准备的所有页面需要准备的元素定位、基线流程算是写完了,但是具体的用例,应该如何实现呢?继续往下看。
PO 设计模式下测试Case的改造
代码示例如下:
# coding:utf-8
这里改造完成之后,记得将 "BasePage 层" 的 '# self.driver = driver' 取消注释,并将 'self.driver = webdriver.Chrome()' 注释掉 。
以上就是一个比较完整的通过 PO 的方式来连接三个页面与基础的 base_page 来写出的更简洁一些的测试用例。
运行结果如下:(速度可能过快,担待一下,gif 只有15秒的时间)
到此这篇关于一文详解Python中PO模式的设计与实现的文章就介绍到这了,更多相关Python PO模式内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。