8.Page Object

Page Object是一种UI自动化测试的最佳实践,旨在提高测试代码的可维护性。本文介绍了Page Object模式的基本概念,展示了如何实现Page Object,包括简单实例和封装改进。此外,文章还提及了poium这个基于Selenium/appium的Page Object测试库,它简化了元素定义并提供了多种定位方式、超时设置和元素描述等功能,提高了自动化测试的效率。
摘要由CSDN通过智能技术生成

Page Object 是 UI 自动化测试项目开发实践的最佳设计模式之一,它的主要特点体现在对界面交互细节的封装上,使测试用例更专注于业务的操作,从而提高测试用例的可维护性。

1. 认识 Page Object

当为 Web 页面编写测试时,需要操作该 Web 页面上的元素。直接操作这些元素,这样代码十分脆弱,因为 UI 会经常变动。

page 对象的一个基本经验法则是:凡是人能做的事,page 对象通过软件客户端都能做到。它提供一个易于编程的接口,并隐藏窗口中底层的部件。page 对象把在 GUI 控件上所有查询和操作数据的行为封装为方法。

一个好的经验法则是,即使改变具体的元素,page 对象的接口也不应当发生变化。

页面上有重要意义的元素可以独立为一个 page 对象。经验法则的目的是通过给页面建模,使其对应用程序的使用者变得有意义。

Page Object 是一种设计模式,在自动化测试开发中应遵循这种设计模式来编写代码。
Page Object 应该遵循以下原则进行开发:

  • Page Object 应该易于使用。
  • 有清晰的结构,如 PageObjects 对应页面对象,PageModules 对应页面内容。
  • 只写测试内容,不写基础内容。
  • 在可能的情况下防止样板代码。
  • 不需要自己管理浏览器。
  • 在运行时选择浏览器,而不是类级别。
  • 不需要直接接触 Selenium。

2. 实现 Page Object

(1)Page Object 简单实例

当有以下测试代码 test_baidu.py ,两条测试用例中重复使用了元素的定位和操作,当元素定位变化后,那么这两条测试用例都需要修改。如果测试用例有几百条,UI 频繁变化,那么自动化测试用例维护成本较高。

...

    def test_baidu_search_case1(self):
        """ 搜索关键字:selenium """
        self.driver.get(self.base_url)
        self.driver.find_element_by_id('kw').send_keys('selenium')
        self.driver.find_element_by_id('su').click()
        sleep(2)

    def test_baidu_search_case2(self):
        """ 搜索关键字:page object """
        self.driver.get(self.base_url)
        self.driver.find_element_by_id('kw').send_keys('page object')
        self.driver.find_element_by_id('su').click()
        sleep(2)

...

Page Object 的设计思想上是把元素定位与元素操作进行分层,这样带的来最直接的好处就是当元素发生变化时,只需维护 page 层的元素定位,而不需要关心在哪些测试用例当中使用了这些元素。

创建 baidu_page.py 文件,代码如下:

class BaiduPage():
    def __init__(self, driver):
        self.driver = driver

    def search_input(self, search_key):
        self.driver.find_element_by_id('kw').send_keys(search_key)

    def search_button(self):
        self.driver.find_element_by_id('su').click()

修改 test_baidu.py,修改部分如下:

from baidu_page import BaiduPage
...

    def test_baidu_search_case1(self):
        """ 搜索关键字:selenium """
        s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值