8年测试老鸟,Python Selenium自动化测试-POM分层封装框架(超全整理)


前言

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参数类型错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值