浅谈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用于移动端测试。
  • CypressPlaywright适合前端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自动化测试的原理

在这里插入图片描述
img

4、selenium的三种等待方式

  • 强制等待:通过调用Thread.sleep()来使程序阻塞进行
  • 隐式等待:作用于driver的整个生命周期,会一直轮询判断元素是否存在;如果不存在,就在设置好的等待时间内不断进行轮询,直到元素被找到(如果超过时间还未找到就报错);好处是设置简单,但不够灵活。
  • 显式等待:当等待的条件满足后(一般用来判断需要等待的元素是否加载出来),就继续下一步操作;等不到就一直等,如果在规定时间内都没找到,就报异常;显示等待比较灵活,但每次查找元素都需要单独设置

如果是等待页面中的某一个元素加载,就用显示等待;等待整个页面的加载就用隐式等待,隐式等待可以跟强制等待搭配使用(有时候隐式等待可能不生效),但注意隐式等待不能和显示等待一起用。

5、selenium的八大定位方式

在这里插入图片描述

6、selenium文本框输入内容

在这里插入图片描述


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

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907222.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3+Data-V实现可视化大屏页面布局

目录 一、前言 二、环境准备 1.Vue3安装npm create vuelatest 2.Data-V配置 项目Data-v安装 main.js中注册Data-v到全局 ​编辑可使用按需引入 3.测试 三、导航栏路由跳转配置 1.子组件mainNav组件准备 2.父组件准备导航栏参数传递 3.子组件接收父组件参数 4.导航…

Python 使用 LSTM 进行情感分析:处理文本序列数据的指南

使用 LSTM 进行情感分析:处理文本序列数据的指南 长短期记忆网络(LSTM)是一种适合处理序列数据的深度学习模型,广泛应用于情感分析、语音识别、文本生成等领域。它通过在训练过程中“记住”过去的数据特征来理解和预测序列数据的…

树莓派5实时时钟(RTC)

树莓派5板载一个实时时钟模块。它可以通过 USB-C 电源插口右侧板上的 J5(BAT) 插口进行电池供电。如果没有互联网连接来通过 NTP 获取时间,RTC 可能会很有用。 可以设置唤醒警报,将树莓派5切换到非常低功耗的状态(大约3mA)。当到达…

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器,但是不知道怎么拿来写代码,跑深度学习项目。确实,玩深度学习的成本比较高,无论是前期的学习成本,还是你需要具备的硬件成本,都是拦路虎。小罗没有办法…

Chrome与夸克的安全性对比

在当今数字化时代,浏览器的安全性对于用户来说至关重要。Chrome和夸克作为两款流行的浏览器,各有其特点和优势。本文将对这两款浏览器的安全性进行详细对比,帮助用户更好地了解它们之间的差异。(本文由https://www.chromegw.com/的…

ZFC in LEAN 之 前集(Pre-set)

前集(Pre-set)的概念是相对于集合(Set),由数学家 Bishop 提出的。Bishop 认为定义一个集合需要三个步骤: 1. 定义该集合的元素是如何构建的(Construction)。 2. 定义集合中的两元素的…

libaom 源码分析:AV1帧内预测 CfL 模式

CfL预测模式原理 从亮度到色度CfL 是一种色度帧内预测模式,通过建立共位重建亮度采样的线性函数来模拟色度采样;对于不同的色度采样格式(例如4:2:0和4:2:2),可能需要对重建的亮度像素进行子采样,以匹配色度…

C++核心编程和桌面应用开发 第十八天(一元/二元谓词 内建函数对象 算术/关系/逻辑仿函数 函数适配器/取反适配器/函数指针适配器/成员函数适配器)

目录 1.函数对象 1.1函数对象特点 2.谓词 2.1一元谓词 2.2二元谓词 3.内建函数对象 3.1算术仿函数 3.2关系仿函数 3.3逻辑仿函数 4.函数适配器 5.取反适配器 5.1一元取反适配器 5.2二元取反适配器 6.函数指针适配器 7.成员函数适配器 1.函数对象 概念&#xff…

Java后端面试内容总结

先讲项目背景,再讲技术栈模块划分, 讲业务的时候可以先讲一般再特殊 为什么用这个,好处是什么,应用场景 Debug发现问题/日志发现问题. QPS TPS 项目单元测试,代码的变更覆盖率达到80%,项目的复用性高…

P3-2.【结构化程序设计】第二节——知识要点:多分支选择语句

讲解视频: P3-2.【结构化程序设计】第二节——知识要点:多分支选择语句 知识要点:多分支选择语句 一、任务分析 已知某公司员工的保底薪水为500,某月销售商品的利润profit(整数)与利润提成的关系如下(单位:元)&#…

关于Android Studio Koala Feature Drop | 2024.1.2下载不了插件的解决办法

解决 androidStudio Settings->Plugins下载插件,点击install后没反应,同时插件描述相关显示不出来 第一步: 第二步: 点击设置,勾选Auto-detect proxy settings,输入网址 https://plugins.jetbrains.com…

UE中查“资源包因何变脏”的方式

“脏”(Dirty)的意思 当用户对一个资源包(关卡,或材质等美术资源)做出了修改,变得与磁盘上存储的内容有差异时,UE会对其“标脏”(Mark Dirty),显示为 * 符号…

leetcode 2710 移除字符串中的尾随零

1.题目要求: 2.题目代码: class Solution { public:string removeTrailingZeros(string num) {while(num[num.size() - 1] 0){num.pop_back();}return num;} };

Iceoryx2:高性能进程间通信框架(中间件)

文章目录 0. 引言1. 主要改进2. Iceoryx2 的架构3. C示例代码3.1 发布者示例(publisher.cpp)3.2 订阅者示例(subscriber.cpp) 4. 机制比较5. 架构比较6. Iceoryx vs Iceoryx2参考资料 0. 引言 Iceoryx2 是一个基于 Rust 实现的开…

10.30.2024刷华为OD

文章目录 HJ20 密码验证合格程序(难过全部例子 list取数左开有闭 [0,3) )HJ21 简单密码HJ22 汽水瓶 (数学游戏...)HJ23 (dic就是map,注意怎么用, 善用values()和keys()函数返回list)语法知识记录 (留意转换的字符怎么拼接) HJ20 密…

【问题记录】解决VMware虚拟机中鼠标侧键无法使用的问题

前言 有项目需要在Linux系统中开发,因为要测试Linux中相关功能,要用到shell,在Windows中开发太麻烦了,因此我选择使用UbuntuXfce4桌面来开发,这里我用到了Linux版本的IDEA,除了快捷键经常和系统快捷键冲突…

【337】基于springboot的校园失物招领系统

校园失物招领网站的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定校园失物招领网站…

彻底理解链表(LinkedList)结构

目录 比较操作结构封装单向链表实现面试题 循环链表实现 双向链表实现 链表(Linked List)是一种线性数据结构,由一组节点(Node)组成,每个节点包含两个部分:数据域(存储数据&#xff…

使用Docker Compose搭建多服务应用

使用Docker Compose搭建多服务应用 Docker Compose简介 安装Docker Compose 在Linux上安装Docker Compose 在macOS上安装Docker Compose 在Windows上安装Docker Compose 创建项目结构 Flask应用 安装依赖 Dockerfile 配置Docker Compose 构建和运行应用 访问应用 高级配置 环…

LLaMA系列一直在假装开源...

伙伴们,很奇怪~ 关于LLM的开源与闭源模型的竞争又开始愈发激烈。 众所周知,开源模型以其开放性和社区驱动的特点受到一部分用户的青睐,而闭源模型则因其专业性和性能优化被广泛应用于商业领域。由于大模型最近2年的突然兴起,开源…