问题
在做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
设计模式主要应用在自动化中,有助于减少代码重复并改进测试用例维护。