UI 自动化的 PageObject 设计模式

目录

前言:

什么是 PageObject 模型?

为什么使用 PageObject 模型?

PO 模式优点

PageObject 实践


前言:

UI 自动化是一种软件测试方法,它主要用于检查应用程序的用户界面是否符合预期。PageObject 是 UI 自动化中的一个重要概念,它是一种将页面元素映射到 Python 对象的设计模式。

PageObject 模式就是对 HTML 页面以及元素细节的封装,并对外提供应用级别的 API,使你摆脱与 HTML 的纠缠。

什么是 PageObject 模型?

PageObject 模型是一种设计模式,其核心是减少代码重复(最小化代码更新/维护用例)以降低用例开发的工作量。利用 PageObject 模型,为每个网页创建 Page 类,测试场景中用的定位器/元素存储在单独的类文件中,并且测试用例在不同的文件中,使代码更加模块化。由于元素定位器和测试脚本是分开存储的,因此对 Web UI 元素的任何更改只需要在测试场景代码中进行更改即可。

基于 PageObject 模型的实现包含以下两点:

Page 类——将页面封装成 Page 类,页面元素为 Page 类的成员元素,页面功能放在 Page 类方法里。

测试类——针对这个 Page 类定义一个测试类,在测试类调用 Page 类的各个类方法完成测试。它使用 Page 类中的页面方法/方法与页面的 UI 元素进行交互。如果网页的 UI 有变化,只需要更新 Page 类,测试类无需改动。

为什么使用 PageObject 模型?

随着项目新需求的不断迭代,开发代码和测试代码的复杂性增加。因此,开发自动化测试代码时必须遵循正确的项目结构。否则,代码可能会变得难以维护。

Web 由各种 WebElement(例如,菜单项、文本框、复选框、单选按钮等)的不同网页组成。测试用例与这些元素交互,如果 Selenium 定位器没有以正确的方式管理,代码的复杂性将成倍增加。

测试代码的重复或定位器的重复使用会降低代码的可读性,从而导致代码维护的开销成本增加。例如,测试电子商务网站的登录功能,我们使用 Selenium 进行自动化测试,测试代码可以与网页的底层 UI 或定位器进行交互。如果修改了 UI 或该页面上元素的路径发生了变化,会发生什么情况?自动化测试用例将失败,因为该用例执行的过程在网页上找不到依赖的页面元素。如果你对所有网页采用相同的测试开发方法。在这种情况下,测试者必须花费大量精力来即时更新分散在不同页面中的定位器。

PO 模式优点

PageObject 模型的优点
现在大家已经了解了 PageObject 设计模式的基础知识,让我们来看看使用该设计模式的一些优点:

提高可重用性——不同 POM 类中的 PageObject 方法可以在不同的测试用例/测试套件中重用。因此,由于页面方法的可重用性增加,整体代码量将大大减少。

提升可维护性——由于测试场景和定位器是分开存储的,它使代码更清晰,并且在维护测试代码上花费的精力更少。

降低 UI 更改对用例造成的影响——即使 UI 中经常发生更改,也只需要在对象存储库(存储定位器)中进行更改,对测试场景几乎没有影响。

便与多个测试框架集成——由于测试实现与 PageObject 的存储库分离,我们可以将相同的存储库与不同的测试框架一起使用。例如,Test Case-1 可以使用 Robot 框架,Tese Case - 2 可以使用 pytest 框架等,单个测试套件可以包含使用不同测试框架实现的测试用例。

PageObject 实践

首先我们先看一个反例,一个不使用 PageObject 模式的自动化测试示例ÿ

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用的WebUI自动化设计模式包括: 1. Page Object模式:将每个网页或页面的元素和操作抽象为一个Page类,封装页面的行为和属性,使测试代码更易于维护和重用。 2. 数据驱动模式:使用外部数据源(如Excel、CSV文件)来驱动测试用例的执行,可以实现批量执行测试数据,提高测试覆盖率。 3. 关键字驱动模式:将测试用例分解为一系列关键字,每个关键字代表一个功能或操作,通过调用关键字来组合测试用例,提高测试代码的可读性和可维护性。 4. 数据库模式:在测试执行期间,通过与数据库交互来进行数据验证、数据准备或数据清理操作,确保测试环境的一致性和可靠性。 5. 并行执行模式:利用多线程或分布式执行测试用例,提高测试效率和缩短测试时间。 6. 日志记录模式:在测试过程中记录详细的日志信息,包括测试步骤、输入参数、预期结果和实际结果,便于定位和排查问题。 7. 异常处理模式:针对可能出现的异常情况,设计相应的异常处理机制,如超时处理、元素定位失败处理等,增强测试的健壮性和稳定性。 8. 重试机制模式:在用例执行过程中,出现预期外的情况时,可以进行重试操作,以提高测试的稳定性和准确性。 以上是常用的WebUI自动化设计模式,根据具体需求和场景,可以选择合适的设计模式来进行开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值