当前位置: 首页 > news >正文

UI自动化框架介绍

selenium+ Pytest + Allure

优势

1.1 更高效的自动化测试

  • Selenium 提供了强大的浏览器自动化能力,可以模拟用户与网页的交互。它能够在不同浏览器上运行测试,确保 Web 应用程序在多种环境下的兼容性。
  • Pytest 是一个非常灵活、简洁的 Python 测试框架,它支持多种测试需求,如单元测试、集成测试和功能测试。Pytest 具有简单易用的语法,支持自动发现测试用例,并具有强大的插件体系,能帮助你实现更高效的测试。
  • Allure 是一个流行的测试报告框架,专为生成美观且富有洞察力的测试报告而设计。它与 Pytest 和 Selenium 配合得很好,能够生成清晰的 HTML 测试报告,帮助团队理解测试结果。

1.2 易于扩展和维护

  • Pytest 的插件机制非常强大,可以通过简单的配置扩展功能。例如,你可以很容易地与 Selenium 集成,也可以使用 Pytest 的 fixture 功能来组织测试准备工作(例如启动浏览器、登录等)。
  • Selenium 跨浏览器的支持使得你能够在不同环境下运行相同的测试,确保 Web 应用在各大浏览器中的表现一致。这使得测试具有较强的可维护性。
  • 使用 Allure 生成的报告可以清晰地展示每个测试的执行情况,帮助开发人员和测试人员快速诊断问题。

1.3 生成易于理解的测试报告

  • Allure 的测试报告功能非常强大,能够提供详细的测试执行信息,包括测试步骤、日志、截图、失败的原因等。它能够清晰地展示测试用例的执行结果,便于团队成员分析问题。
  • Allure 生成的报告非常直观,支持丰富的格式(如历史趋势图、失败用例统计、测试步骤等),让项目团队更容易了解项目的测试状况,并作出相应的决策。

1.4 并行测试和性能优化

  • 使用 Pytest 与 pytest-xdist 插件,你可以轻松地将测试并行化,在多台机器或多个处理器上运行测试,显著提高测试的效率。
  • Selenium 的并行化测试可以通过 Selenium Grid 配合 Pytest 执行,这样就能在多个浏览器和操作系统上同时运行测试,提高测试覆盖率并减少执行时间。

1.5 更清晰的日志和调试

  • Pytest 提供了强大的日志功能,能够帮助你记录测试的执行过程并对失败的测试进行调试。在测试过程中,你可以通过 Pytest 的日志记录详细的信息。
  • 当与 Selenium 一起使用时,Pytest 能帮助你捕获 WebDriver 操作中的异常,并通过详细的日志进行追踪。这使得你可以更快速地定位和解决问题。
  • 在出现失败时,Allure 会自动展示失败的截图、日志和详细的堆栈信息,进一步帮助排查问题。

1.6 提高开发和测试效率

  • Selenium + Pytest 提供了灵活的测试组织方式。你可以利用 Pytest 的标记和 fixture 来复用测试代码和环境,避免冗余的测试代码。
  • 配合 Allure 使用时,测试人员和开发人员能够迅速理解报告,做出响应,避免在重复的测试调试上浪费过多时间。

Selenium介绍

Selenium 是一个广泛使用的自动化测试框架,主要用于自动化Web应用程序的UI测试。它可以模拟用户在浏览器中的操作,从而帮助测试人员验证网页的功能、UI设计、响应性等方面。以下是 Selenium 的一些基本介绍:

1. Selenium 简介

Selenium 是一个开源的自动化测试工具,支持多种浏览器和操作系统。它的核心功能是自动执行用户操作,如点击按钮、输入文本、选择下拉框等,帮助开发者和测试人员进行自动化测试。

2. Selenium 的组件

Selenium 主要包括以下几个组件:

  • Selenium WebDriver:这是 Selenium 的核心组件,允许程序控制浏览器并模拟用户行为。它提供了与浏览器交互的接口,可以通过编程语言(如 Java、Python、C# 等)编写脚本来执行各种操作。
  • Selenium IDE:是一个用于记录和回放浏览器操作的工具。适合初学者,它可以通过简单的点击和录制操作生成测试脚本。
  • Selenium Grid:这个组件允许你并行执行测试,能够在多台机器和不同浏览器之间分配测试任务。对于分布式测试环境非常有用。

3. WebDriver 的工作原理

WebDriver 是 Selenium 的核心,它模拟浏览器的用户操作,通过发送指令来控制浏览器的行为。

  • 它通过与浏览器的通信协议(如 ChromeDriver、GeckoDriver)实现浏览器控制。
  • WebDriver 通过对浏览器的具体实现进行调用来完成动作,并且能获取页面元素进行验证。

4. 常用的 WebDriver 操作

Selenium WebDriver 允许测试人员进行以下操作:

  • 打开/关闭浏览器:打开指定的 URL,关闭浏览器窗口。
  • 查找元素:通过元素的 ID、类名、标签名、XPath 或 CSS 选择器等方式查找页面中的元素。
  • 模拟用户操作:如点击、输入文本、选择下拉框选项、模拟键盘输入等。
  • 获取页面信息:获取当前页面的标题、URL、页面源代码等信息。
  • 等待元素:设置等待时间,确保元素加载完成后再进行操作(如显式等待和隐式等待)。

5. 编程语言支持

Selenium 支持多种编程语言,开发者可以选择他们熟悉的语言来编写自动化脚本。常见的语言包括:

  • Java
  • Python
  • C#
  • Ruby
  • JavaScript(通过 Node.js)

6. Selenium 的优势

  • 跨浏览器支持:Selenium 可以与多种主流浏览器(如 Chrome、Firefox、Edge、Safari 等)兼容,支持跨平台运行。
  • 支持多种编程语言:用户可以选择适合自己的编程语言来编写自动化测试脚本。
  • 开源且活跃的社区:Selenium 是一个开源项目,具有庞大的社区支持,用户可以轻松获取帮助和资源。
  • 与其他工具兼容:Selenium 可以与 Jenkins、TestNG、JUnit 等工具配合使用,支持集成持续集成/持续交付(CI/CD)流程。

7. Selenium的缺点

尽管 Selenium 功能强大,但它也有一些限制:

  • 学习曲线:对于新手而言,Selenium 的学习曲线较陡,尤其是在选择正确的等待策略、处理动态内容和调试测试脚本时。
  • 对复杂UI测试支持有限:对于一些需要复杂图形界面或无法简单通过 DOM 操作的页面,Selenium 可能不够灵活。

8. 总结

Selenium 是一个强大且灵活的自动化测试工具,适用于 Web 应用程序的 UI 自动化测试。通过模拟用户操作,测试人员可以高效地执行功能验证和回归测试。虽然学习曲线相对较陡,但它的跨平台、跨浏览器支持和与多种工具的兼容性,使其成为UI自动化测试的首选工具之一。

PO设计模式

Page Object模式的核心思想是将页面中的元素和操作封装在一个独立的类中,使得UI测试脚本与页面的具体实现细节解耦。通过这种方式,UI测试脚本与页面对象之间的交互变得更加抽象,从而简化了测试的维护工作。

PO模式的六大原则:

1、公共方法代表页面提供的服务

---要封装页面中的功能(或者服务),比如点击页面中的元素,可以进入到新的页面,于是,可以这个服务封装方法“进入新页面”

2、不要暴露页面操作

---封装细节,对外只提供方法名(或者接口)

3、不要把断言和操作细节混用

---封装的操作细节中不要使用断言,把断言放在单独的模块中,比如testcase

4、方法可以return到新打开的页面

---点击一个按钮会开启新的页面,可以使用return方法表示跳转,比如return Mainpage()表示跳转到新的PO:MainPage

5、不要把整页的内容都放到PO中

---只为页面中重要的元素进行PO设计,舍弃不重要的内容。

6、相同的行为会产生不同的结果,可以封装不同结果

---一个动作可能产生不同结果,比如点击按钮后,可能点击成功,也可能点击失败,为两种结果封装两个方法,click_success和click_error。

PO模式的优点:

  1. 提高可维护性:
    • 通过将页面元素和操作封装在页面对象中,减少了测试脚本的重复代码。如果页面结构或元素发生变化,只需要修改页面对象类,而不必更新每个测试脚本。
  2. 提高可读性:
    • 测试脚本中只关心业务逻辑和断言,页面操作被抽象化为简单的函数调用,使得测试脚本更加简洁和易懂。
  3. 提高可重用性:
    • 页面对象类可以被多个测试用例共享,从而避免了重复的代码,提高了代码的复用性。
  4. 减少维护成本:
    • 如果页面发生变化(例如HTML结构或元素的ID变更),开发人员只需在一个地方修改页面对象类,而不必逐一更新测试脚本中的元素定位逻辑。

相关文章:

UI自动化框架介绍

selenium Pytest Allure 优势 1.1 更高效的自动化测试 Selenium 提供了强大的浏览器自动化能力,可以模拟用户与网页的交互。它能够在不同浏览器上运行测试,确保 Web 应用程序在多种环境下的兼容性。Pytest 是一个非常灵活、简洁的 Python 测试框架&a…...

【工具推荐】在线提取PDF、文档、图片、论文中的公式

网址1:https://simpletex.cn/ai/latex_ocr 网址2: https://www.latexlive.com/home 推荐理由:无需下载,在线使用,直接 截图 CTRLV 效果更佳。...

帮我设计一个c语言学习阶段

以下是一个针对不同学习阶段的C语言学习计划,你可以根据自己的基础和目标进行调整: 第一阶段:基础语法与程序结构(第1-4周) 目标 熟悉C语言的基本语法和程序结构。 能够编写简单的程序。 学习内容 环境搭建 安装…...

解决windows npm无法下载electron包的问题

1.将nsis.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 2.将winCodeSign.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 3.将electron-v20.3.8-win32-ia32.zip复制到C:\Users\XXX\AppData\Local\electron\Cache 4.将electron-v20.3.8-win32-…...

网络编程 day01

网络编程 day01 0. 网络编程课程介绍1. 认识网络1.网络发展史2.局域网与广域网局域网(LAN)广域网(Wan) 3.光猫4.路由器5.交换机与路由器6.网线 2. IP1. 基本概念2. 网络号/主机号(二级划分)3. IP地址分类整…...

【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】

去年团队庆功宴上,我司CTO端着酒杯过来:“老王啊,咱们现在文档解析做得挺溜了,但老师们总抱怨下载的作业格式乱码…” 我看了眼手机里凌晨三点收到的崩溃警报,把杯里的可乐一饮而尽——得,新的副本又开了。 一、为什么PDF转换比想象中难十倍? 某次用户调研中,数学教研…...

2915. 和为目标值的最长子序列的长度

给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。 返回和为 target 的 nums 子序列中,子序列 长度的最大值 。如果不存在和为 target 的子序列,返回 -1 。 子序列 指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来…...

谷仓的安保

Farmer John给谷仓安装了一个新的安全系统&#xff0c;并且要给牛群中的每一个奶牛安排一个有效的密码。一个有效的密码由L(3 < L < 15)个小写字母(来自传统的拉丁字母集a...z)组成&#xff0c;至少有一个元音(a, e, i, o, 或者 u)&#xff0c;至少两个辅音(除去元音以外…...

vcredist_x64 资源文件分享

vcredist_x64 是 Microsoft Visual C Redistributable 的 64 位版本&#xff0c;用于在 64 位 Windows 系统上运行使用 Visual C 开发的应用程序。它包含了运行这些应用程序所需的运行时组件。 vcredist_x64 资源工具网盘下载链接&#xff1a;https://pan.quark.cn/s/ef56f838f…...

MySQL零基础教程14—子查询

子查询比较简单&#xff0c;我们还是通过案例引入。 有时候我们查询的时候&#xff0c;需要用到的不止一个表的数据&#xff0c;比如下面的场景&#xff1a; 查询名字叫李晓红同学的班主任姓名 我们提供三个表的基础信息如下&#xff1a; 从三张表的结构&#xff0c;我们不难…...

使用mermaid查看cursor程序生成的流程图

一、得到cursor生成的流程图文本 cursor写的程序正常运行后&#xff0c;在对话框输入框中输入诸如“请生成扫雷的代码流程图”&#xff0c;然后cursor就把流程图给生成了&#xff0c;但是看到的还是文本的样子&#xff0c;保留这部分内容待用 二、注册一个Mermaid绘图账号 …...

L1-031 到底是不是太胖了

L1-031 到底是不是太胖了 - 团体程序设计天梯赛-练习集 (pintia.cn) 解题思路 输入数据 首先从输入中读取正整数 n&#xff0c;表示要处理的人数。 然后通过循环 n 次&#xff0c;每次读取一个人的身高 h&#xff08;单位&#xff1a;厘米&#xff09;和实际体重 w&#xff0…...

服务器时间同步

[rootbogon hwh-ansible]# cat time-sync.sh #!/bin/bash # NTP 服务器信息 NTP_SERVER"192.168.42.12" PASSWORD"123456" # 多个 IP 地址 HOSTS("192.168.42.8" "192.168.42.9" "192.168.42.10" "192.168.42.11"…...

01. HarmonyOS应用开发实践与技术解析

文章目录 前言项目概述HarmonyOS应用架构项目结构Ability生命周期 ArkTS语言特性装饰器状态管理 UI组件与布局基础组件响应式布局样式与主题 页面路由与参数传递页面跳转参数接收 数据绑定与循环渲染数据接口定义循环渲染 条件渲染组件生命周期最佳实践与性能优化组件复用响应式…...

【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法

【大厂AI实践】清华&#xff1a;清华古典诗歌自动生成系统“九歌”的算法 &#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 自小刺头深草里&#xff0c;而今渐觉出蓬蒿。 文章目录 **01 自动作诗缘起****1. 诗歌自动写作** **02 九歌的模型…...

JS基础之函数

函数使用 函数名命名规范 和变量命名基本一致> 尽量小驼峰式命名法 前缀应该为动词 命名建议:常用动词约定 动词含义can判断是否可执行某个动作has判断是否含义某个值is判断是否为某个值get获取某个值set设置某个值load加载某些数据 有返回值的函数 细节: 在函数体中使用…...

基于java SSM springboot学生信息管理系统设计和实现

基于java SSM springboot学生信息管理系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 …...

【MongoDB】在Windows11下安装与使用

官网下载链接&#xff1a;Download MongoDB Community Server 官方参考文档&#xff1a;https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 选择custom类型&#xff0c;其他默认 注意&#xff0c;此选…...

HTML在网页开发中的应用与重要性

## 摘要 HTML&#xff08;HyperText Markup Language&#xff09;是网页开发的基础语言之一&#xff0c;它定义了网页的结构和内容。随着互联网的快速发展&#xff0c;HTML不断演进&#xff0c;从HTML4到HTML5&#xff0c;其功能和特性得到了极大的增强。本文将探讨HTML在网页…...

深度学习-140-RAG技术之Agentic Chunking分块技术的实现细节和完备实现

文章目录 1 类AgenticChunker1.1 add_propositions添加命题列表1.2 add_proposition添加单个命题1.3 add_proposition_to_chunk命题添加到块中1.4 _update_chunk_summary更新块摘要1.5 _update_chunk_title更新块主题1.6 _get_new_chunk_summary获取新块摘要1.7 _get_new_chunk…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4&#xff0c;后7...