简述 PageObject 设计模式

问题

在做UI自动化中,是否使用了设计模式?

什么是Page Object Model?

Page Object Model需要遵循的规则有哪些?

考察点

面试官想了解:

  • UI自动化分层概念

  • 是否了解过Page Object Model

  • Page Object Model 规则

技术点

涉及的技术点:

  • Page Object Model

回答

介绍

Page Object Model 也称为 POM/PO,是 Selenium 中的一种设计模式,它创建类对象来存储页面元素及相关操作;
其中,可以将被测应用的每个页面视为一个class类,并且每个class类包含当前页面相关的元素及其相关操作的方法。

理解

可以从两个方面进行理解:一个是class类对应的属性,一个是class类对应的方法。


属性

首先,从类的属性上进行说明。一个页面对应一个class类,当前页面的元素定位则表示为当前类的成员变量。

由于元素只属于当前页面,所以类的成员变量不可以暴露给外部,即对应页面元素定位需要设置为私有化属性;

一个页面对应的操作有可能只涉及到当前页面的某几个元素,很少会涉及页面的所有元素,所以在一个类里面不需要建模当前页面的所有元素。

方法

其次,从类的方法上进行说明。一个class类可以包含多个操作方法,对应的每个方法都是当前页面可进行的操作。

如果操作完成后页面会跳转,则对应方法需要返回其他页面的class类;如果操作完成后页面会返回用于断言的数据,则对应方法则需要返回存放数据的Object。

每一个类里面的方法都是需要测试用例去进行调用,则Class类中的method方法需要作为公共方法。

如果在一个页面进行相同的操作,会造成不同的结果,则编写class类的方法时需要建模为不同的方法。

最后,所有的测试用例断言都是在测试方法调用时进行,编写PO内的方法时不可以在方法内添加断言,只可返回断言相关数据给测试方法调用时获取。

优点

PO设计模式主要应用在自动化中,有助于减少代码重复并改进测试用例维护。

1 个赞