浅谈UI自动化

server/2024/11/28 23:55:50/

在这里插入图片描述

⭐️前言⭐️

本篇文章围绕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!!如有问题,欢迎评论区批评指正😁

请添加图片描述


http://www.ppmy.cn/server/137670.html

相关文章

【C++动态规划 分组背包】1981. 最小化目标值与所选元素的差|2009

本文涉及知识点 C动态规划 C背包问题 LeetCode1981. 最小化目标值与所选元素的差 给你一个大小为 m x n 的整数矩阵 mat 和一个整数 target 。 从矩阵的 每一行 中选择一个整数,你的目标是 最小化 所有选中元素之 和 与目标值 target 的 绝对差 。 返回 最小的绝…

Python For循环

Python 的 for 循环是自动化重复任务的强大工具,可以使代码更高效、更易于管理。本教程将解释 for 循环的工作原理,探讨不同的应用场景,并提供大量实用示例。无论你是初学者还是希望提升技能的开发者,这些示例都将帮助你更好地在 …

虚拟dom

是什么 描述真实DOM的javaScript对象 //虚拟dom描述的对象const vdom {tag: div,props: {onclick: () > alert(clicked),},children: ["click me"]}渲染器 将虚拟dom渲染成真实dom 实现思路 创建元素 将vnode.tag作为标签名来创建元素给元素添加属性与事件 …

TensorFlow_T4 猴痘病识别

目录 一、前言 二、前期准备 1、设置GPU 2、导入数据 3、查看数据 三、数据预处理 1、加载数据 2、可视化数据 3、再次检查数据 4、配置数据集 四、构建CNN网络 五、编译 六、训练模型 七、模型评估 1、Loss and Acurracy图 2、指定图片进行预测 一、前言 &#…

香港将承办2025年全运会项目

行政長官在去年的施政報告中,表明政府會繼續以精英化、專業化、盛事化、產業化和普及化推動本港體育發展。隨着啟德體育園啟用在即,明年舉辦的第十五屆全國運動會,香港也會承辦當中八個競賽項目,相信屆時會將香港市民對體育運動的…

Vue学习笔记(十五)

文章目录 3.4. 【reactive 创建:对象类型的响应式数据】3.5. 【ref 创建:对象类型的响应式数据】3.6. 【ref 对比 reactive】3.7. 【toRefs 与 toRef】3.8. 【computed】3.9.【watch】\* 情况一\* 情况二\* 情况三\* 情况四\* 情况五 3.10. 【watchEffec…

使用Navicat连接远程服务器中在docker中运行的MySQL数据库保姆级教程

使用Navicat连接远程服务器中在docker中运行的MySQL数据库保姆级教程 一、需要的资源 Navicat客户端(我使用的是17.0.8版本,安装教程B站搜一个,很快能解决)服务器(已安装docker并运行了MySQL) 二、步骤 …

【AI开源项目】FastGPT- 快速部署FastGPT以及使用知识库的两种方式!

文章目录 一、FastGPT大模型介绍1. 开发团队2. 发展史3. 基本概念 二、FastGPT与其他大模型的对比三、使用 Docker Compose 快速部署 FastGPT1、安装 Docker 和 Docker Compose(1). 安装 Docker(2). 安装 Docker Compose&#xff…