Selenium系列(二十) - PageObject模式的详细介绍

简介: Selenium系列(二十) - PageObject模式的详细介绍

如果你还想从头学起Selenium,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

 

其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)

 

前言


  • 在UI自动化测试中,PO是目前最为主流,也是公认最佳的设计模式
  • UI自动化测试最初是通过关键字驱动+数据驱动的形式来实现,然后升级到PO模式

 

什么是关键字驱动


  • 简单而言,就是将Selenium常用功能进行二次封装
  • 譬如:把查找元素、点击、输入等原生方法进行封装
  • 特点:可以让不懂代码的测试人员也能做自动化测试,彻底地实现测试步骤、测试数据和程序的分离

 

关键字驱动 vs RF

  • 可以把关键字驱动对比用RF(Robot Framework)做的自动化测试,在RF GUI界面调用关键字,并传入参数即可完成一系列的元素操作;
  • 而我们在Pycharm上完成关键字驱动也是相同道理,封装好Selenium常用方法,然后去调用关键字,不同页面传入不同的参数即可完成一系列的元素操作

 

什么是数据驱动


  • 固定的程序,固定的测试步骤,使用不同的数据进行测试【需要多组数据来测试】
  • 将代码和数据进行分离,单纯由数据组成文件,再由文件来驱动关键字,最终实现整个自动化的流程

 

什么是关键字驱动+数据驱动


  • 读取数据,将固定格式的数据进行拼接【读取数据】
  • 拼接后的内容作为关键字所需要的参数,进行传入【传入数据】
  • 调用关键字,将执行结果和预期结果进行对比,从而获取单条测试用例执行是否通过的结果【执行关键字,断言结果】

 

关键字驱动+数据驱动是一种设计模式哦!

 

什么是PO模式


  • PO模式是page object model的缩写,是一种设计模式
  • 把待测页面当成一个页面对象,一般包含了元素对象的定位和元素操作方法,将页面对象和真实的网站页面一 一映射起来
  • 比如一个登录页面,使用PO模式后,操作的步骤如下:
  1. 会先创建一个class,该class就是登录页面对象类
  2. 类的属性:用户名输入框,密码输入框,登录按钮的webElenent
  3. 类的方法:各种元素操作的方法
  4. 方法里面会调用对象库层的二次封装Selenium的方法
  5. 测试层从页面操作层调用操作方法,写成测试用例,这种模式可以做到定位元素与测试用例分离
  • 所以这样的设计理念就是PO模式

 

PO模式的分层


PO模式可以把一个页面一般分为三层

对象库层:二次封装Selenium的方法

页面操作层(也称:逻辑层):封装页面的元素对象和元素操作

测试层(也称:业务层):多个页面操作完成一个业务测试,一般结合单元测试框架(unittest、pytest)来测试


当然也有分四层的

对象库层:二次封装Selenium的方法

页面层:封装页面的元素对象

操作层:封装页面的元素操作

测试层:多个页面操作完成一个业务测试

 

PO模式和关键字驱动+数据驱动有什么区别?(PO模式的原理)


  • 升级到PO模式之后,首先将Selenium常用的功能,结合实际业务需要进行二次封装;封装的内容是完全贴合实际业务来实现的【封装Selenium】
  • 将元素对象和元素操作进行整合【元素对象整合】
  • 将对象库和测试代码分离,实现数据与代码分离【数据与代码分离】

 

PO模式给代码带来的优势


  • 代码冗余明显降低:二次封装Selenium方法和提取公共方法,提高代码复用性
  • 代码的阅读性明显提升:因为三层分级,将不同内容进行不同的封装,整体代码阅读性提升
  • 代码维护性明显提升:UI测试中,页面若经常变动,代码的维护量随之增多;因为三层分级,我们只需要修改页面对象的代码,如元素对象或者操作对象的方法,不用修改测试用例的代码,也不影响测试用例的正常执行
  • 降低代码耦合性
相关文章
|
7月前
|
Web App开发 数据可视化 测试技术
Selenium Headless模式:无头浏览器的使用与优势
Selenium Headless模式是无界面的自动化测试方式,适用于Chrome和Firefox等浏览器,提供更快的速度、更高的隐秘性和资源节省。在Python中启用该模式,需导入Options并设置相关参数。示例代码展示了如何在无头模式下访问网站、执行点击和输入操作。这种模式提升了测试效率和稳定性,尤其适合大规模测试和CI环境。
|
Web App开发 Linux vr&ar
Linux中Chrome无界模式动态代理IP的配置(Selenium)
Linux中Chrome无界模式动态代理IP的配置(Selenium)
757 0
【selenium】关于cookie的操作和无头模式
简介:【selenium】关于cookie的操作和无头模式
【selenium】关于cookie的操作和无头模式
|
前端开发 Python
Selenium python 无头模式和有显模式下 页面截图后的字体不同
无头模式和有显模式下 页面截图后的字体不同
647 0
Selenium python 无头模式和有显模式下 页面截图后的字体不同
|
Web App开发 Python 测试技术
selenium+python自动化87-Chrome浏览器静默模式启动(headless)
前言 selenium+phantomjs可以打开无界面的浏览器,实现静默模式启动浏览器完成自动化测试,这个模式是极好的,不需要占用电脑的屏幕。 但是呢,phantomjs这个坑还是比较多的,并且遇到问题也看不到页面,无法排查问题。
3352 0
|
Python
selenium+python自动化84-chrome手机wap模式
前言 我的环境 chrome 62 chromedriver 2.33 遇到问题 1.登录手机版淘宝时候,验证码无法通过点击事件触发 [wap版淘宝](https://login.m.taobao.
2319 0
|
Web App开发 Java 测试技术
|
测试技术 数据安全/隐私保护 Python
Selenium的PO模式(Page Object Model)[python版]
Page Object Model 简称POM  普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driver.
2225 0
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
131 5
|
2天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
42 19
Selenium IDE:Web自动化测试的得力助手