Selenium自动化测试框架之PO设计模式

面向对象的特性:封装、继承、多态。在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率。

##传统测试脚本的弊端

测试脚本分离,维护成本高

可扩展性差

复用性低等

PageObject设计模式

PO的核心要素:

在PO模式中抽象封装成一个BasePage类,该基类应该拥有一个只实现webdriver实例的属性。

每个一个page都继承BasePage,通过driver来管理本page中元素,将page中的操作封装成一个个的方法。

TestCase继承unittest.Testcase类,并且依赖page类,从而实现相应的测试步骤。

案例

基础案例

前面基础场景选取的是baidu搜索页面(baidu页面简单,不需要搭建测试环境)baidu.py

将上面的脚本放在baidu.py文件中。

分析

通过对baidu.py脚本的分析,可以提取到:

不同的运行脚本环境,浏览器不同:驱动webdriver.Firefox()可以剥离,

操作元素时,常常需要等待元素加载完毕后方可进行操作:是否可以把webdriver提供的findelement* 方法封装下,才操作元素前,先判断元素的是否可操作。

实际测试场景中,可能有多个测试场景,如果每个测试场景都需要维护url、浏览器驱动、元素定位等,效率会非常低。

因此基于对上面的分析,是否可以设计一个所有测试页面(selenium本身是对B/S系统开展测试)的基类,来维护一些公共的方法。此处先定义个名字哦BasePage.py,用于存放页面公共方法及webdriver原有方法二次封装等。

BasePage.py内容如下:

测试脚本的优化

BasePage.py提取完毕,其中设计了BasePage类,对一些webdriver的方法进行了二次封装。

baidu.py基于BasePage.py进行优化(充分体现PO的设计思想,封装、继承)

PageObject总结

PO设计模式中的BasePage基类对应案例中的BasePage.py文件。

PO模式中的page1或pageN对应案例中的Search.py

PO设计模式中TestCase对应案例中的TestCase.py

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180925B1BP2T00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券