软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具

简介: 软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具

为 UI 页面写测试用例时(比如 web 页面,移动端页面),测试用例会存在大量元素和操作细节。当 UI 变化时,测试用例也要跟着变化, PageObject 很好的解决了这个问题。

使用 UI 自动化测试工具时(包括 selenium,appium 等),如果无统一模式进行规范,随着用例的增多会变得难以维护,而 PageObject 让自动化脚本井然有序,将 page 单独维护并封装细节,可以使 testcase 更稳健,不需要太多改动。

使用

具体做法:把元素信息和操作细节封装到 Page 类中,在测试用例上调用 Page 对象(PageObject),比如存在一个功能“选取相册标题”,需要为之建立函数 selectAblumWithTitle() ,函数内部是操作细节 findElementsWithClass('album') 等:

在这里插入图片描述

以选“取相册标题”举例,伪代码如下:

selectAblumWithTitle() {

#选取相册
findElementsWithClass('album')
#选取相册标题
findElementsWithClass('title-field')
#返回标题内容
return getText()

}

PageObject 的主要原则是提供一个简单接口 (或者函数,比如上述的 selectAblumWithTitle ),让调用者在页面上可以做任何操作,点击页面元素,在输入框输入内容等。因此,如果要访问一个文本字段,PageObject 应该有获取和返回字符串的方法。PageObject 应该封装对数据的操作细节,比如查找元素和点击元素。当页面元素改动时,应该只改变 page 类中的内容,不需要改变调用它的地方。

不要为每个 UI 页面都创建一个 page 类,应该只为页面中重要的元素创建 page 类。比如,一个页面显示多个相册,应该创建一个相册列表 PageObject,它包含许多相册 PageObject。如果某些复杂 UI 的层次结构只是用来组织 UI,那么它就不应该出现在 PageObject 中。PageObject 的目的是通过给页面建模,从而对应用程序的使用者变得有意义:

在这里插入图片描述

跳转到另一个页面,初始 page 对象应当 return 另一个 page 对象,比如点击注册,进入注册页面,在代码中就应该 return Register()。如果想获取页面信息,可以 return 基本类型(字符串、日期)。

建议不要在 PageObject 中放断言。应该去测 PageObject,而不是让 PageObject 自己测自己,PageObject 的责任是提供页面的状态信息。这里仅用 HTML 描述 PageObject,这种模式还可以用来隐藏 Java swing UI 细节,它可用于所有 UI 框架。

PO 设计模式 6 大原则
字段意义

不要暴露页面内部的元素给外部

不需要建模 UI 内的所有元素

方法意义

用公共方法代表 UI 所提供的功能

方法应该返回其他的 PageObject 或者返回用于断言的数据

同样的行为不同的结果可以建模为不同的方法

不要在方法内加断言

总结

总的来说,使用 Page Object 模式的测试用例具有更高的可读性、可维护性和代码复用性。

相关文章
|
1月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
46 1
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
1月前
|
敏捷开发 测试技术 持续交付
提升软件测试效率与质量的自动化策略
【2月更文挑战第19天】 在快速迭代的软件开发周期中,传统的手动测试方法往往难以满足高效率和高质量的双重要求。本文将探讨如何通过实施自动化测试策略来优化软件测试流程,减少重复劳动,提高测试覆盖率及发现缺陷的速度。我们将分析自动化测试的关键优势,包括时间效率、一致性、可重复性以及其在持续集成环境中的作用,并讨论实施过程中面临的挑战及解决策略。
|
1月前
|
敏捷开发 分布式计算 测试技术
深入理解软件测试中的自动化框架选择与优化策略
【2月更文挑战第29天】 在软件开发的生命周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的普及,自动化测试成为确保软件质量和加快产品上市速度的关键手段。本文将探讨在构建自动化测试框架时面临的挑战,分析不同类型自动化框架的特点及其适用场景,并提出一系列优化策略,旨在帮助测试工程师提高测试效率,确保测试结果的准确性。
23 0
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
1月前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
5天前
|
XML Web App开发 测试技术
python的Web自动化测试
【4月更文挑战第16天】Python在Web自动化测试中广泛应用,借助Selenium(支持多浏览器交互)、BeautifulSoup(解析HTML/XML)、Requests(发送HTTP请求)和Unittest(测试框架)等工具。测试步骤包括环境搭建、编写测试用例、初始化浏览器、访问页面、操作元素、验证结果、关闭浏览器及运行报告。注意浏览器兼容性、动态内容处理和错误处理。这些组合能提升测试效率和质量。
11 6
|
17天前
|
敏捷开发 监控 测试技术
深入探索软件测试中的自动化边界
【4月更文挑战第10天】 在现代软件开发过程中,自动化测试已成为提升效率、确保质量的关键手段。然而,随着技术的不断进步和项目需求的多样化,确定自动化的合理边界成为测试工程师面临的重要问题。本文将探讨如何界定自动化测试的有效范围,包括成本效益分析、风险评估与技术选型等方面,并提出一种基于风险和回报权衡的自动化测试策略。
11 0
|
19天前
|
测试技术
深入理解软件测试中的自动化边界
【4月更文挑战第7天】 在追求快速交付和质量保证的双重压力下,软件测试领域正经历着从手工到自动化的转变。本文旨在探讨自动化测试的有效边界,即哪些场景适合自动化,以及如何界定这些边界以优化测试策略。通过对自动化测试优势、挑战及适用性的分析,文章为读者提供了一个清晰的框架,用于评估和实施自动化测试。
|
22天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6

热门文章

最新文章