写点什么

软件测试 | 什么是 PageObject 设计模式

  • 2023-02-14
    北京
  • 本文字数:1006 字

    阅读完需:约 3 分钟

测试人员为 UI 页面写测试用例时(如 Web 页面和移动端页面),测试用例中会存在大量元素和操作细节。当 UI 页面的功能发生变化时,测试用例也要跟着变化,我们用 PagaObject 可以很好地解决这个问题。


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


使用 PageObject


具体用法: 把要测试的元素信息和操作细节封装到 Page 类中,测试用例中调用 Page 对象(PageObject),例如,测试用例中存在一个“选择相册标题”的操作,这时在测试用例中需要为之建立函数 selectAblumWithTitle(),函数内部实现的细节为 findElements WithClass('album')等,如图 3-24 所示。


测试用例中实现“选取相册标题” 操办的伪代码如下。


selectAblumWithTitle(){     #选取相册     findElementsWithClass('ablum')     #选取相册标题     findElementWithClass('title-field')     #返回标题内容     return getText()}
复制代码


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


不要为每个 UI 页面都创建一个 page 类,应该只为页面中重要的元素创建 page 类。例如,一个页面显示多个相册,应该创建一个相册列表 PageObject。如果某些复杂 UI 的层次结构只是用来组织 UI,那么这些层次结构就不应该出现在 PageObject 中。使用 PageObject 的目的是通过给页面建模,使测试用例的执行步骤变得更加清晰,如图 3-25 所示。


通过 Web 页面时往往需要从一个页面跳转到另一个页面,页面跳转的实现需要测试用例初始化 page 对象,并返回另一个 page 对象,这样的效果就如点击 “注册” 按钮后,进入注册页面。测试用例中使用的代码中用的是 return Register()方法。


建议不要在 PageObject 中放断言。PageObject 用于提供页面的状态信息及页面方法,而不是用来验证某个页面功能的。

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 什么是PageObject设计模式_测试_测吧(北京)科技有限公司_InfoQ写作社区