浅谈UI自动化

⭐️前言⭐️
本篇文章围绕UI自动化来展开,主要内容包括什么是UI自动化,常用的UI自动化框架,UI自动化原理等。
🍉欢迎点赞 👍 收藏 ⭐留言评论
🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言
🍉博客中涉及源码及博主日常练习代码均已上传GitHub

📍内容导读📍
- 🍅 什么是UI自动化
- 🍅 UI自动化的工作原理
- 🍅 UI自动化的收益
- 🍅 常见UI自动化框架及适用场景
- 🍅 selenium框架
- 1、为什么选择selenium(优点)
- 2、selenium缺点
- 3、selenium自动化测试的原理
- 4、selenium的三种等待方式
- 5、selenium的八大定位方式
- 6、selenium文本框输入内容
🍅 什么是UI自动化
UI自动化测试是一种软件测试方法,用于验证用户界面的行为是否符合预期。它涉及编写自动化脚本,模拟用户在应用程序中的行为,例如点击按钮、输入文本、选择选项等,以检查应用程序是否按照预期运行。UI自动化测试可以提高测试的效率和准确性,并且可以在应用程序发生更改时快速检测潜在的问题。
UI自动化,落地到业务场景上,比如类似于企业微信这样的客户端应用,在业务日常变更、日常拨测和版本发布方面需要自动化支持,减少人力,提升效率
日常变更:
比如说企业微信的频繁更新和小功能迭代,变更后手动触发流水线模块,快速验证系统的基本功能,减少手工测试成本。
日常拨测:
流水线每天凌晨两点定时触发自动化用例,日常例行执行,及时发现潜在的功能缺陷。
版本发布:
在版本发布前。手动触发流水线做快速验证,并为回归测试深层次的操作路径做兜底
🍅 UI自动化的工作原理
其实就是落地到具体的脚本实现原理,大概有以下几个步骤:
元素定位——》模拟操作——》执行操作——》结果验证——》日志和报告
1、元素定位:
- UI自动化首先需要找到页面上的目标元素(如按钮、文本框、链接等),这些元素通常通过唯一的属性来定位
- 元素定位的方法包括使用元素的ID、类名、标签名、XPath、CSS选择器等
2、模拟用户操作:
- 自动化脚本可以模拟用户在界面上的各种操作,如点击按钮、输入文本、选择下拉框、拖拽元素等
- 通过自动化工具发送这些操作命令给系统,模拟真实用户的行为
常见的用户操作包括:
- 点击:如单击、双击、右键点击等
- 键盘输入:模拟输入文本或按下快捷键
- 鼠标操作:如移动、悬停、拖放等
3、执行操作:
- 将多个操作组合成脚本,脚本执行自动化后,应用会响应这些操作,例如页面跳转、显示弹窗或改变UI状态
- 自动化工具会等待页面完成加载或指定元素的状态发生变化(如元素可见、可点击等),再继续执行下一步操作
等待机制可以通过显示等待、隐式等待、线程休眠等方式,以确保页面元素处于可操作状态
4、结果验证:
-
自动化测试不仅要执行操作,还需要验证操作结果是否符合预期
-
常见的验证方式包括:
- 检查元素的文本值或属性:验证显示的文本内容是否正确
- 检查元素的状态:如元素是否可见、是否被选中、是否被禁用等
- 页面跳转:检查当前页面是否加载成功
-
如果实际结果与预期结果不符,自动化测试会记录失败信息并生成报告
5、日志和报告
- 自动化测试工具会记录测试过程中的操作步骤和异常信息,生成详细的测试报告,包括成功和失败的测试用例、截图、错误日志等。
- 这些日志和报告可以用于分析测试的执行情况,帮助快速定位问题。
6、集成和执行
- 自动化脚本集成到CI/CD流水线中,支持自动化回归测试,确保每次代码变更不会破坏已有功能
- 测试脚本可以定时执行或手动触发,实现高效的自动化测试流程
🍅 UI自动化的收益
1、时间成本节约
-
在日常变更和版本发布时,可以通过用例的一键执行,节省大量回归人力
并且深层次操作路径自动化兜底,在版本发布前,通过自动化用例的一键执行,可以为一些人不去覆盖到的操作路径去做兜底
2、支持产品快速迭代
- 功能覆盖率达60~80%左右,稳定率95%以上,意味着大部分自动化测试执行是可靠的,能够快速反馈产品的质量状态
- 类似于企业微信客户端这样的应用,频繁版本迭代,有助于缩短测试周期,支持更快速出包产品发布
3、提高缺陷检测率
- 日常拨测,累计发现功能缺陷
- 专项测试,增加不同条件下的测试场景覆盖,比如弱网专项,提高产品在多个角度的测试覆盖率
🍅 常见UI自动化框架及适用场景
Selenium
- 特点:支持多种浏览器和编程语言,灵活性高。
- 适用场景:复杂的Web应用自动化测试,跨浏览器兼容性测试。
Robot Framework
- 特点:基于关键字驱动,语法简洁,易上手。
- 适用场景:快速搭建自动化测试,适合非开发人员及跨平台(Web、移动、桌面)自动化。
Appium
- 特点:专为移动端设计,支持Android和iOS。
- 适用场景:移动应用的自动化测试,包括原生应用、混合应用和移动Web。
Cypress
- 特点:现代前端自动化工具,基于JavaScript,性能好。
- 适用场景:前端开发驱动的Web应用测试,适合单页面应用(SPA)。
Playwright
- 特点:由微软开发,支持多浏览器自动化,功能强大。
- 适用场景:复杂的Web应用跨浏览器测试和高性能自动化。
总结
- Selenium适合复杂Web自动化。
- Robot Framework适合快速搭建自动化,面向非开发人员。
- Appium用于移动端测试。
- Cypress和Playwright适合前端Web自动化。
🍅 selenium框架
1、为什么选择selenium(优点)
1)开源免费
2)支持多浏览器。如Chrome、Firefox、edge浏览器等
3)支持多系统。如Linux、Windows、MacOS
4)支持多语言。Java、python、CSharp、Roby、JavaScript
5)selenium包提供了很多可供测试使用的API
2、selenium缺点
1、浏览器兼容性问题:Selenium支持多种浏览器,但不同浏览器版本和操作系统之间的兼容性问题可能会导致测试结果不准确或不稳定。
2、稳定性问题:Selenium自动化测试依赖于浏览器驱动程序,这些驱动程序可能存在bug或不稳定性的问题,导致测试结果不准确或测试过程中出现异常。
3、维护成本较高:随着测试用例的增加,测试脚本也会变得越来越复杂,需要不断地进行维护和更新。
4、执行效率低下:由于Selenium需要模拟用户的操作,包括页面加载、点击、输入等,因此在执行测试时可能会比手动测试更慢。这可能会导致测试执行效率低下,测试时间变得很长,影响测试进度和效果。
3、selenium自动化测试的原理


4、selenium的三种等待方式
- 强制等待:通过调用Thread.sleep()来使程序阻塞进行
- 隐式等待:作用于driver的整个生命周期,会一直轮询判断元素是否存在;如果不存在,就在设置好的等待时间内不断进行轮询,直到元素被找到(如果超过时间还未找到就报错);好处是设置简单,但不够灵活。
- 显式等待:当等待的条件满足后(一般用来判断需要等待的元素是否加载出来),就继续下一步操作;等不到就一直等,如果在规定时间内都没找到,就报异常;显示等待比较灵活,但每次查找元素都需要单独设置
如果是等待页面中的某一个元素加载,就用显示等待;等待整个页面的加载就用隐式等待,隐式等待可以跟强制等待搭配使用(有时候隐式等待可能不生效),但注意隐式等待不能和显示等待一起用。
5、selenium的八大定位方式

6、selenium文本框输入内容

⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

相关文章:
浅谈UI自动化
⭐️前言⭐️ 本篇文章围绕UI自动化来展开,主要内容包括什么是UI自动化,常用的UI自动化框架,UI自动化原理等。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题…...
三、k8s快速入门之Kubectl 命令基础操作
⭐️创建Pod [rootmaster ~]# kubectl run nginx --imageharbor.tanc.com/library/ngix:latest kubectl run --generatordeployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generatorrun-pod/v1 or kbectl create instead. deplo…...
深度学习-BP算法详解
BP(Back Propagation,反向传播)是训练神经网络的重要算法之一。它通过计算误差并将误差反向传播,以更新神经网络中的权重和偏置,进而使模型更好地拟合数据。 1. BP算法的基本原理 反向传播的基本思想是: …...
Java审计对比工具JaVers使用
最近有个需求,需要将页面的内容生成excel或者word文档,而且每次的修改都需要生成新的版本,同时需要记录每次修改变化的内容。我们会把每次的修改的内容提交赋值给一个java对象,同时存储到数据库一条新数据,对应数据表一…...
unity中预制体的移动-旋转-放缩
unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具,单位米)Rotate Tool(旋转工具,单位角度)Scale Tool(缩放工具,单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…...
【压力测试】如何确定系统最大并发用户数?
一、明确测试目的与了解需求 明确测试目的:首先需要明确测试的目的,即为什么要确定系统的最大并发用户数。这通常与业务需求、系统预期的最大用户负载以及系统的稳定性要求相关。 了解业务需求:深入了解系统的业务特性,包括用户行…...
ubuntu常用基本指令简记
一、在线帮助 1、help Linux命令可以分为内部命令和外部命令,内部命令就是由Linux默认Shell-bash提供的命令,而非bash提供的命令就是外部命令。 对于内部命令,可以使用help命令来获取帮助 形式为 help 指令 2、man 在日常使用中碰到的绝…...
【解决方案】用git reset --hard重置了提交但是发现reset了一些本不该reset的内容,是不是寄了?
使用 git reset --hard [commit_id] 命令后,所有的更改(包括暂存区和工作区的更改)都会被重置到指定的提交。如果想要撤销这个操作,恢复到重置之前的状态,可以尝试以下方法: 1. 使用 Git Reflog 恢复 Git…...
ACM模式下Java读取控制台输入注意事项及输出规范化
背景 在ACM模式下。需要我们去接受输入的参数,一般是使用Scanner去读取控制台输入的参数System.in。 不熟悉的情况下,很容易出现问题,针对常见的问题做一个总结。 一、nextXxx 如next,nextInt,nextFloat,…...
面试题整理 2
总结了本次面试遇到的值得整理记录的面试题。 目录 变量赋值判断 变量判断 Foreach使用 Mysql优化策略 合理的索引设计 查询优化 数据表结构设计 配置优化 合理使用事务 定期维护数据库 使用缓存 监控与性能分析 Redis主从复制 介绍 配置 示例 Redis 数据类型…...
华为自研仓颉编程语言官网上线 首个公测版本开放下载
仓颉编程语言官网正式公开上线,同时首个公测版本开放下载。本次仓颉编程语言官网上线了首页、在线体验、文档、学习、下载、动态以及三方库共六个模块,可供开发和学习和体验。 据悉,仓颉编程语言是在今年6月的华为开发者大会上正式公布&…...
NVR监测软件/设备EasyNVR多品牌NVR管理工具/设备对城市安全有哪些具体益处?
在智慧城市的建设中,各种先进的技术系统正发挥着越来越重要的作用。其中,NVR监测软件/设备EasyNVR作为一种高效的视频边缘计算网关,不仅能够实现视频数据的采集、编码和存储,还能与其他智慧城市系统进行深度集成,共同推…...
MFC工控项目实例二十八模拟量信号每秒采集100次
用两个多媒体定时器,一个定时0.1秒计时,另一个定时0.01秒用来对模拟量信号采集每秒100次。 1、在SEAL_PRESSUREDlg.h中添加代码 class CSEAL_PRESSUREDlg : public CDialo { public:CSEAL_PRESSUREDlg(CWnd* pParent NULL); // standard constructor&a…...
安装scrcpy-client模块av模块异常,环境问题解决方案
背景 使用 pip install scrcpy-client命令出现以下报错 performance hint: av\logging.pyx:232:5: Exception check on log_callback will always require the GIL to be acquired. Possible solutions: 1. Declare log_callback as noexcept if you control the definition …...
硅谷甄选(11)角色管理
角色管理模块 10.1 角色管理模块静态搭建 还是熟悉的组件:el-card、el-table 、el-pagination、el-form <template><el-card><el-form :inline"true" class"form"><el-form-item label"职位搜索"><el-…...
C语言结构体 变量对齐原理
以32位Linux为例,默认对齐值是4. 对齐原则通常有以下几种: 第一个成员在与结构体变量偏移量为0的地址处。其他成员变量要对齐到某个数字(对齐参数)的整数倍的地址上。结构体总大小为最大对齐参数的整数倍。嵌套结构体要对齐到…...
【oracle】正则表达式
文章目录 1.介绍1.1 什么是正则表达式1.2 什么是Oracle正则表达式 2. Oracle正则表达式的基础知识2.1 常用的元字符2.2 常用的转义序列2.3 常用的量词 3. Oracle正则表达式的函数3.1 REGEXP_LIKE3.2 REGEXP_SUBSTR3.3 REGEXP_REPLACE3.4 REGEXP_INSTR3.5 REGEXP_COUNT 4. Oracl…...
如何找到网上爆款内容,快速复制扩大品牌声量
社媒内容爆款复制是现代营销中的一个重要策略,它对于提升品牌声量、曝光度和知名度具有显著效果。 首先什么是爆款? 爆款内容指的是在社交媒体或其他在线平台上迅速获得大量关注、分享和讨论的内容。 准确、及时找到这部分品牌相关的爆款内容…...
补齐:相交链表:扣160
梦重新开始的地方 – 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: 示例: 何解? 暴力&…...
Java项目实战II基于Java+Spring Boot+MySQL的智能推荐的卫生健康系统(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
