【20221115每日面经】自动化设计模式 - PageObject设计模式是什么

每日面经(极为经典,面试必考)

  • 考察点:设计模式
  • 难度: 中等
  • 题目:什么是PO(Page Object)设计模式?PO设计模式遵循的规则是什么?有哪些需要注意的点?

ps:每周一公布上周所有题目答案

PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类,即一个py文件,并以页面为单位来写测试用例,实现页面对象和测试用例的分离。

原则:
原则一:要封装页面中的功能或服务,比如点击页面元素,可以进入到新的页面,则可为这个服务封装方法"进入新页面"
原则二:封装细节,对外只提供方法名(或者接口)
原则三:封装的操作细节中不要使用断言,把断言放到单独的模块中,比如:testcase
原则四:点击一个按钮会开启新的页面,可以用return方法便是跳转,比如return MainPage()表示跳转到主页
原则五:只为页面中重要的元素进行PO设计,舍弃不重要的内容
原则六:一个动作可能产生不同结果,比如点击按钮后,可能成功,也可能失败,为两种结果封装两个方法:click_success和click_error

PO 设计模式是马丁福勒提出的一个编程思想,通过把页面抽象成一个类,在其中统一进行元素定位信息的管理和页面功能的实现,并对外提供页面功能API,编写测试时只需要根据业务逻辑调用页面提供的方法来组织业务流程。

实现元素代码和测试代码分离,当UI元素发生变化时,只需要做更少的改动即可完成维护,提高了测试代码的复用性和可维护性。

注意的点(PO六原则):

  • 封装page类时,不要暴露页面细节,只提供业务方法
  • 不需要对页面所有元素都进行封装
  • 将页面服务封装成公共方法
  • 将页面服务封装成的公共方法中,不要加断言
  • 对同一个元素操作产生的不同结果封装成不同的方法
  • 封装方法的返回值应该是基础类型用以断言或者是页面对象

解答思路