UI自动化之PO模型

本文介绍了UI自动化测试中PageObject(PO)模型的概念、设计原则及其实现方式。PO模式有助于减少代码重复,提高测试维护性。文章详细讲解了从线性脚本到数据驱动+关键字驱动,再到PO模型的测试框架发展历程,强调了PO设计的分层理念,并提供了实际的代码示例。最后,作者讨论了关于断言、页面对象的粒度以及如何组织页面对象的思考。
摘要由CSDN通过智能技术生成

简述

PageObject(页面即对象),PO模式是UI自动化测试实现中广泛使用的模式,它基本上由应用程序页面元素和类之间的映射组成;它还使用其元素在该页面上定义了用户操作;po模式和工具(selenium)结合使用时,可以在代码维护方面提供具有高业务价值和低成本的自动化测试。

重构,维护成本低
测试代码是代码,因此重构测试自动化代码与重构应用程序代码一样重要。否则,测试将很难维护,最好扔掉所有东西,然后重新开始。通过遵循一些技巧可以避免这种成本,这些技巧可帮助减少代码量,功能文件和步骤定义的维护成本。

在Web应用程序的UI中,您的测试与某些区域交互。Page Object只是将它们建模为测试代码中的对象。这减少了重复代码的数量,并且意味着如果UI更改,则仅需要在一个地方应用此修复程序。

测试框架发展

1,线形脚本
少量代码实现的针对某一个功能的自动化操作步骤;
特点:上手简单,少量代码,无扩展性,无复用性,基本不具备业务价值

2,数据驱动+关键字驱动(selenium二次封装)
测试脚本与测试数据分离,通过给定的数据执行对应的测试步骤,通过编写用例数据与维护用例数据来实现自动化测试,当页面ui发生变动后只需要修改对应的数据文件,而不需要修改测试脚本代码;
特点:框架开发有一定难度,用例编写变得简单,易于维护,具有很高的业务价值,扩展性底;

3,po模型+数据驱动+关键字驱动
在数据驱动+关键字驱动基础上升级,保留其本身的优点,并有效的提高了扩展性,灵活性,要求有一定的代码功底;

设计分层

在这里插入图片描述
设计架构图
在这里插入图片描述

设计理念

1,可以将PageObject视为同时面向两个方向;面向测试的开发人员,它们代表特定页面提供的服务。面对开发人员,它们应该是唯一了解页面(或页面一部分)HTML结构的唯一事物。

2,将页面对象上的方法视为提供“服务”是页面最基本的信息。鼓励测试开发人员在PageObject开发中只考虑页面交互的服务,而不是基础的WebDriver的实现。

3, PageObject上的方法应返回其他PageObjects。这意味着我们可以通过我们的应用程序有效地模拟用户的操作流程。也意味着,页面之间的交互流程发生改变(例如,登录页面要求用户在首次登录服务时更改密码,而之前没有这样做),只需更改适当的方法即可。

这种方法的一个后果是,可能有必要对成功和不成功的登录进行建模,或者根据应用程序的状态,单击可能会产生不同的结果。发生这种情况时,通常在PageObject上具有多个方法:

public class LoginPage {
   
    public HomePage loginAs(String username, String password) {
   
        // ... 登录成功
        return new HomePage(driver);
    }
    
    public LoginPage loginAsExpectingError(String username, String password) {
   
        //  ... 登录失败,可能是用户名密码错误
        return new LoginPage(driver)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值