当前位置: 首页 > 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…...

OpenHarmony基线移植实战:从开源仓到定制仓的完整路径

1. 为什么需要移植OpenHarmony基线&#xff1f; 第一次接触OpenHarmony基线移植时&#xff0c;我也很困惑&#xff1a;为什么不能直接用官方开源代码&#xff1f;非要折腾这一套移植流程&#xff1f;直到在实际项目中踩了几个坑才明白&#xff0c;基线移植是产品开发的必经之路…...

如何为Whisper ASR Webservice开发自定义引擎和插件

如何为Whisper ASR Webservice开发自定义引擎和插件 【免费下载链接】whisper-asr-webservice OpenAI Whisper ASR Webservice API 项目地址: https://gitcode.com/gh_mirrors/wh/whisper-asr-webservice Whisper ASR Webservice是一个基于OpenAI Whisper的语音识别服务…...

思源宋体TTF:开源字体选型与商业价值指南

思源宋体TTF&#xff1a;开源字体选型与商业价值指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是否曾为商业项目的字体授权成本而困扰&#xff1f;是否在寻找既能满足专业设计…...

探秘书匠策AI:毕业论文写作的“智慧引擎”

在学术探索的征途中&#xff0c;毕业论文如同一座巍峨的山峰&#xff0c;让无数学生既敬畏又向往。它不仅是对所学知识的综合检验&#xff0c;更是学术生涯的重要里程碑。然而&#xff0c;面对这座大山&#xff0c;许多人常常感到力不从心&#xff0c;选题迷茫、文献难觅、结构…...

告别手动调参!用大津法(OTSU)实现8路灰度传感器的自适应巡线(附完整C代码)

告别手动调参&#xff01;用大津法实现8路灰度传感器的智能巡线方案 当你在电赛现场调试机器人巡线时&#xff0c;是否经历过这样的场景&#xff1a;刚在A场地调好的阈值参数&#xff0c;换到B场地就完全失灵&#xff1b;上午还能精准巡线的小车&#xff0c;下午因为光照变化就…...

Claude Code 源码泄露深度剖析,Anthropic AI 编程助手的架构全解密

2026年3月31日&#xff0c;整个AI开发圈被一条消息炸开了锅。安全研究员Chaofan Shou&#xff08;推特账号Fried_rice&#xff09;在Anthropic官方发布的npm包中&#xff0c;意外发现了一个暴露的.map文件&#xff0c;正是这个看似不起眼的文件&#xff0c;直接泄露了Claude Co…...

51单片机入门-直流电机(十五)

目录&#xff1a;1.直流电机驱动&#xff08;PWM&#xff09;2.LED呼吸灯&直流电机调速1.直流电机驱动&#xff08;PWM&#xff09;让他转的快一些让他转2us停1us2.LED呼吸灯&直流电机调速点亮一个LED&#xff1a;在循环里&#xff1a;点亮熄灭显示暗一些&#xff1a;让…...

实战指南:基于快马平台与Playwright打造自动化的网站内容监测应用

今天想和大家分享一个非常实用的自动化监测方案——基于Playwright和InsCode(快马)平台搭建的新闻网站更新监测系统。这个项目特别适合需要追踪行业动态或竞品资讯的朋友&#xff0c;整个过程不需要复杂的服务器配置&#xff0c;用快马平台就能轻松实现部署和定时运行。 项目背…...

2026届学术党必备的十大AI辅助写作助手解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek “降AI”是要借助技术手段&#xff0c;去降低文本里人工智能生成内容的可识别程度&#xff0…...

终极窗口置顶指南:如何让重要窗口永远不被遮挡

终极窗口置顶指南&#xff1a;如何让重要窗口永远不被遮挡 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop AlwaysOnTop 是一个轻量级的 Windows 应用程序&#xff0c;它能够将任…...