一、介绍

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

from selenium import webdriver
import timedriver = 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 模式:

UI自动化测试 - POM设计模式相关推荐

  1. UI自动化测试POM设计之-maven工程

    为了更好的管理UI自动化测试项目,介绍一下Maven项目创建以及应用 一. 配置Maven环境 1. 下载并安装Maven 下载地址:http://maven.apache.org/download. ...

  2. Software Testing - UI自动化测试常用设计模式之工厂(Java)

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 一般来说,工厂模式是为了把创建一个对象的操作都集中在 ...

  3. 【Web UI自动化测试】Web UI自动化测试之PO篇(全网最全)

    本文大纲截图: 1.PO模式基本介绍[文末免费分享自动化测试学习资源] 概念:PO是Page Object的缩写,PO模式是自动化测试项目开发实践的最佳设计模式之一. 作用:通过对界面元素的封装减少冗 ...

  4. Web UI自动化测试系统设计

    Web UI自动化测试系统设计 1. 自动化测试简介 1.1 什么是好的自动化测试框架 在创建测试自动化框架时,我们应该考虑以下要点: 能够通过使用适当的抽象层快速创建自动化测试 应易于维护和扩展应该 ...

  5. 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...

  6. UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答

    这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适? 我想说的是,如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面或者单独存放在一个目录中,新键 ...

  7. 阿里疯传,手把手教你如何从0开始开展UI自动化测试?

    如何进行一个Web项目的UI自动化测试,首先需要建立一个自动化测试团队.理想情况下,该团队由四个人组成,即测试和开发工程师.中高级自动化测试工程师和两名初级自动化工程师.在非理想情况下,可能只需要一个 ...

  8. python写ui自动化测试用例_自动化测试(6) | Web UI 自动化测试方案

    Web项目的 UI 自动化测试方案 有用的链接: 项目讨论 项目中符合自动化测试的部分有哪些?(目标和范围 scope, 准入准出标准) 稳定的需求点.变动较少的页面 每日构建后的测试验证 daily ...

  9. APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...

最新文章

  1. 最牛B隐藏文件(续)
  2. Python多版本共存之pyenv
  3. html5显示字幕信息,HTML5 Placeholder实现input背景文字提示效果
  4. 配置arm-linux-gcc 位置
  5. 模糊c均值聚类_六种常用的文本聚类方法介绍
  6. neutron plugin 与 extension 编写流程
  7. 阿里云服务器(ECS)CentOS修改yum源为阿里源
  8. 收货地址 - 需求分析与表设计
  9. Python中的这几种报错你遇到过吗?
  10. .tcl文件_TCL电视自己安装的软件,有声音但没有画面?详细解决步骤奉上
  11. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
  12. cisco 2811路由器详细配置
  13. matlab进化树的下载,mega7进化树软件下载
  14. yolov3识别的类别_Yolo3 如何只识别一个类别
  15. 草根站长故事之:我的业余站长之路(中)
  16. 物联网智能空气环境监测系统解决方案
  17. 浅谈软件需求分析中的参与者
  18. Solidworks将英文菜单汉化
  19. 报表技术2(百万数据导入导出,POI操作word)
  20. cad打开卡死_在打开cad文件的时候会出现死机的状态

热门文章

  1. 前端常用的地图框架(webGIS)
  2. IDEA的Android Studio配置黄油刀(butterknife)
  3. 自动驾驶激光雷达、摄像头、毫米波雷达融合算法
  4. 多个视频时,利用函数实现播放一个,其他自动暂停
  5. ORACLE如何删除重复数据
  6. android视频压分辨率压缩,视频的文件格式、压缩格式、码率、分辨率
  7. 文本识别论文CRNN
  8. GE千兆以太网光口模式协商原理
  9. DB2 Catalog浅析学习笔记
  10. 瓷砖覆盖地板c语言程序,编程之美4.2 瓷砖覆盖地板