五、Page Object模式

1、PO(Page Object)
  • 概念:是一种设计模式。将面向过程转变为面向对象(页面对象),整体思想是分层。将某个页面的所有“元素(包含控件)属性”及“元素操作”封装在一个类(Page类)中,以page为单位进行管理。
  • 目的:
    • 提高复用率,可读性和编写效率。
    • 测试代码与被测页面对象代码分离,降低页面变化带来的维护成本。
  • 尽量使用XPath,不建议使用name,link等。 xpath是基于页面元素所处的区域。
  • 分层:
    • 两层
      • 对象库层:页面元素和操作;
      • 业务层:测试用例操作;
    • 三层
      • 对象库层:页面元素和操作;
      • 逻辑层:封装好的功能用例模块;
      • 业务层:测试用例操作;
    • 四层
      • 对象库层:页面元素和操作;
      • 逻辑层:封装好的功能用例模块;
      • 业务层:测试用例操作;
      • 数据层:测试数据;
  • 原则
    • 方法意义
      • 用公共方法代表UI所提供的的服务;
      • 方法应该返回其他PO 或返回用于断言的数据;
      • 同样的行为不同的结果可建模为不同的方法;
      • 不要在方法中加断言;
    • 字段意义
      • 不要暴露页面内部的元素给外部;
      • 不需要建模UI内的所有元素;
  • 实践
  1. 把每个要测试的对象封装在一个page内, 这个page里包含这个对象可能的所有操作。
  2. 创建一个BasePage,这个BasePage包含所有待测page都能用到的公用方法,这个BasePage对应的类应该是个抽象类。
  3. 测试脚本自由引用page及page里的方法。
  4. python里有个第三方库page-objects, 基于python实现了PageObject模式,并且封装了很多有用的方法。
  5. webium是基于Python的一个Page Object实现。
  6. PO结构大致如下
 
2、使用PO的例子
  • BasePage---对象层
  • LoginPage---逻辑层
  • test_login_case---业务层
BasePage.py
 
LoginPage.py
 
 
test_login_case
 
 
3、总结:
  • case越多使用PO模式会使代码结构更清晰
  • 元素复用越多PO模式下维护非常容易
  • 逻辑复用越多PO模式下维护非常容易 (如果逻辑复用多,需要多考虑逻辑层的颗粒度)
  • 元素/逻辑/数据复用越多应选择更多层的PO模式
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-05-24 13:56  晨尛  阅读(554)  评论(0编辑  收藏  举报