写点什么

PageObject 设计模式

  • 2023-04-20
    北京
  • 本文字数:987 字

    阅读完需:约 3 分钟

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

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

使用 PageObject

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

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

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

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

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

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

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

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

用户头像

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

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

评论

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