PO模型-PageObject

目录

一、PO模型的介绍

二、PageObject设计模式

三、PO的核心要素

四、非PO实现

代码展示:

代码结构分析:

五、PO实现

1、实现BasePage

2、实现SearchPage

3、实现TestCase

六、组织代码

七、总结

八、PO模式的优点

九、多个page(界面)的操作

1、提供一个basepage类

2、多个page(界面操作)

3、单元测试

4、生成测试报告

5、测试报告代码展示


一、PO模型的介绍

在自动化中,selenium自动化测试中有一个名字经常被提及PageObject(统称为PO模型,思想与面向对象的特性相同),通常PO模型可以大大提高测试用例的维护效率。

优点:重用,业务和对象分离,代码结构清晰,方便代码维护

二、PageObject设计模式

三、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()

代码结构分析:

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

2、请求地址的变化(生产环境和测试环境):url = http://www.baidu.com可以剥离

3、操作元素时,常常要等待元素加载完成方可进行操作:可以把webdriver提供的find_element*方法封 装,在元素操作前,先判断元素是否可以操作

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

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

五、PO实现

1、实现BasePage

代码实现展示:

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains #鼠标操作

class BasePage():

'''BasePage封装所有界面都公用的方法。例如driver,find_element等'''
'''实例化BasePage类时,事先执行的__init__方法,该方法需要传递参数'''

    def __init__(self,driver):

        self.driver = driver

# 进入网址
def get(self,url):
self.driver.get(url)

#元素定位,
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值