目录:导读
前言
1、POM模式是什么
页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库
在POM模式下,应用程序的每一个页面都有一个对的page class
每一个page class维护着该web页的元素集合操作这些元素的方法
page class中的方法名最好根据业务场景进行
POM模式的代码目录组织示例:
2、 POM的优势
POM提供了一种在UI层操作、业务流程与验证分离的模式,这使得测试代码变得更加清晰和高可读性
对象库与用例分离,使得我们更好的复用对象,甚至能与不同的工具进行深度结合应用
可复用的页面方法代码会变得更加优化
更加有效的命名方式使得我们更加清晰的知道方法所操作的UI元素。例如我们要回到首页,方法名命名为: gotoHomePage(),通过方法名即可清晰的知道具体的功能实现。
可以理解POM模式是一种底层、逻辑、用例的分层。
3、POM分层封装
1)driver层的封装(最底层的封装base)
这一层主要是对于webdriver方法的封装,这里来举一个栗子,最常用的定位方法,使用find_element()方法通过BY类、字符串、元组三种方法传递定位类型和数据,这里我使用元组的形式(例如locator = (“id”,“name_box”))来传递参数
定位元素方法封装:
这个定位元素的公共方法中,加了很多东西;如果每次定位的时候写这些异常捕获、打印操作的话,那么程序会非常臃肿,所以需要单独提出来,每次需要定位的时候统一调用这个方法。
有一个入参locator,格式为(‘定位类型’,‘定位参数值’),返回我们所定位到的元素;
加入了元素等待,并判断该元素是否存在;
对关键信息的打印输出,方便定位监控;
加入了异常捕获,定位失败后可以继续执行程序;
def findElementNew(self, locator):
'''定位到元素返回元素对象,没定位到,返回timeout异常'''
# isinstance() 函数来判断一个对象是否是一个已知的类型
if not isinstance(locator, tuple):
print('locator参数类型错误