UI自动化测试 - POM设计模式

一、介绍

基于selenium 的ui自动化测试核心上只要定位到元素,对元素执行相应的操作即可。例如下面的脚本代码:打开Chrome浏览器,在百度页面搜索自动化测试:

from selenium import webdriver
import time

driver = webdriver.chrome()
driver.implicitly_wait(30)

# 打开浏览器,百度
driver.get("http://www.baidu.com")

# 定位 百度搜索框,id为 kw,并输入 自动化测试
driver.find_element_by_id("kw").send_keys("ui 自动化测试")

# 定位 百度一下 按钮,id为 su;单击
driver.find_element_by_id("su").click()

time.sleep(5)
# 推出
driver.quit()

        这样一个小的脚本很简单;但是,若项目庞大,前端页面几十个,甚至上百个;那么页面元素的任何细小改变都会让脚本的维护变得繁琐复杂,而且耗时易出错。
        为此,引入POM设计模式,POM 即 Page Object Model  页面对象模式,能让测试代码变得可读性更好,高可维护性,高复用性。

二、POM是什么

        POM是页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库;目的是为了解决软件前端元素或者UI界面频繁变化,从而造成自动化测试脚本维护和更改困难;基本理念是将软件各个页面抽象成一个单独的页面类,类中封装页面元素的定位和操作方法,这种页面模式是页面与测试用例之间的桥梁。在POM下,应用程序的每一个页面都有一个对应的page class;每一个page class维护着该web页的元素集和操作这些元素的方法;page class中的方法命名最好根据其对应的业务场景进行。
        采取POM后,页面元素和业务逻辑和测试脚本分离出来到两个不同类文件。ClassA只写页面元素定位,和业务逻辑代码操作的封装,ClassB只写测试脚本,不关心如何定位元素,然后继承ClassA中的方法去覆盖不同的测试场景。如果前端页面发生变化,只需要修改ClassA的元素定位,而不需要去修改ClassB中的测试脚本代码。

三、优点

        POM提供在UI层操作、业务流程与验证分离的模式,使得测试代码具有更高可读性对象库与用例分离,能更好的复用对象,甚至能与不同的工具进行深度结合应用可复用的页面方法代码会变得更加优化更加有效的命名方式使得我们更加清晰的知道方法所操作的UI元素。
        但是这样做虽然松耦合,但是 POM 思想多维护了一个类,在一定程度上也增加复杂性;因此,可以视情况而定,项目不大时可以不用pom思想。

四、代码示例

        把上述在百度页面搜索自动化测试的代码, 改写成 POM 模式:

猜你喜欢

转载自blog.csdn.net/guanrongl/article/details/125006830