浅谈UI自动化

news2024/11/5 3:24:26

在这里插入图片描述

⭐️前言⭐️

本篇文章围绕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.coloradmin.cn/o/2232294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Android]从FLAG_SECURE禁止截屏看surface

在应用中,设置activity的flag为FLAG_SECURE就可以禁止截屏,截屏出来是黑色的, 试验一下, 注意事项 影响: 设置 FLAG_SECURE 标志后,用户将无法对该Activity进行截屏或录制屏幕。这个标志会影响所有屏幕录…

设计模式之模块方法

定义 模板与方法应该是最常使用的设计模式,在GOF(设计模式)中的定义:定义一个操作中的算法的骨架 ,而将一些步骤延迟到子类中。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 …

深度学习之降维和聚类

1 降维和聚类 1.1 图解为什么会产生维数灾难 ​ 假如数据集包含10张照片,照片中包含三角形和圆两种形状。现在来设计一个分类器进行训练,让这个分类器对其他的照片进行正确分类(假设三角形和圆的总数是无限大),简单的…

uni-app 下拉刷新、 上拉触底(列表信息)、 上滑加载(短视频) 一键搞定

一、下拉刷新 1. 首先找到pages.json中 给需要进行下拉刷新的页面设置可以下拉刷新 2. 然后在需要实现下拉刷新的script标签内添加 导入onPullDownRefresh import {onPullDownRefresh} from dcloudio/uni-app 下拉刷新触发的事件 onPullDownRefresh(()> {console.log(正…

AprilTag在相机标定中的应用简介

1. AprilTag简介 相机标定用的标靶类型多样,常见的形式有棋盘格标靶和圆形标靶。今天要介绍的AprilTag比较特别,它是一种编码形式的标靶。其官网为AprilTag,它是一套视觉基准系统,包含标靶编解码方法(Tag生成)和检测算法(Tag检测),可用于AR、机器人、相机标定等领域。…

stm32入门教程--USART外设 超详细!!!

目录 简介 什么是UART? 什么是USART? 简介 USART(Universal Synchron /Asynchronous Receiver /Transmitter)通用同步/异步收发器 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧…

ubuntu20.04 加固方案-设置重复登录失败后锁定时间限制

一、编辑PAM配置文件 打开终端。 使用文本编辑器(如vim)编辑/etc/pam.d/common-auth文件。 sudo vim /etc/pam.d/common-auth 二、添加配置参数 在打开的配置文件中,添加或修改以下参数: auth required pam_tally2.so deny5 un…

Linux操作系统指令(部分)

Linux操作系统 要求如下: 1、查看/etc/passwd文件的第18-20行内容,并将找到的内容存储至/home/passwd文件中 2、查找/etc/passwd文件中包含root字符的行并将找到的行存储至/root/passwd文件中 3、将/home目录复制到/root目录 4、将/root/home目录&a…

钉子户绷不住了,Win 10正式改为「付费续命」模式

众所周知,「终止支持」是所有 Windows 版本早已既定又让人非常操蛋的最终归宿。 当微软认为一代操作系统已完成其生命周期使命的那一刻,便会毫不犹豫地宣告它的死期。 Windows 系统一旦结束支持,微软将不会再提供任何技术维护和安全更新。 …

C++ | Leetcode C++题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;public:Solution(vector<int>& w): gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)) {partial_sum(…

Grafana+Prometheus监控篇-Nginx

一、监控exporter安装 ①、下载地址 nginx-exporter 这里是Windows下监控&#xff0c;选择amd64. ②、nginx-exporter配置 打开nginx的配置文件nginx.conf,启用nginx的基本状态. server {listen 8088;location /status {stub_status;allow 127.0.0.1; deny all;}} ③…

git 入门作业

任务1: 破冰活动&#xff1a;自我介绍任务2: 实践项目&#xff1a;构建个人项目 git使用流程&#xff1a; 1.将本项目直接fork到自己的账号下&#xff0c;这样就可以直接在自己的账号下进行修改和提交。 这里插一条我遇到的问题&#xff0c;在fork的时候没有将那个only camp4的…

RGA DEMO 下部

#加载llm模型通过ollama最好别用ollama我是没经济条件 from langchain_community.llms import Ollama llm Ollama(model"qwen1_5-4b-chat-q2_k")#pip install langchain_ollama -i https://pypi.tuna.tsinghua.edu.cn/simple #OllamaEmbeddings 要写地址本地也要写&…

Linux 常用安装软件

1、安装JDK 1.1、查看系统自带JDK yum search java|grep jdk 1.2、安装JDK yum install java-1.8.0-openjdk 输入Y 1.3、编辑环境变量配置 vim /etc/profile 添加一下配置 export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export PATH$JAVA_HOME/bin:$PATH export CLAS…

电子电气架构 --- 车载诊断的快速入门

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…

老板电器芯邦CBM7332触摸式净化水槽硬件和程序

老板电器净化水槽是一款集水槽与食材净化功能于一体的创新产品&#xff0c;旨在为你提供更健康、便捷的厨房体验。 老板电器净化水槽具有以下好处和优点&#xff1a; 一、健康保障 1. 高效净化&#xff1a;能够有效去除食材中的农药残留、细菌、激素等有害物质&#xff0c;为…

Python脚本批量给文件添加前缀(超简单,超实用)

文章目录 讲个故事说个问题写个方案一、安装Python脚本环境二、新建文件夹和文件三、编写源代码四、详细操作视频五、总结 讲个故事 有一天&#xff0c;我的老板丢给了我一个压缩包&#xff0c;轻描淡写的来了句&#xff0c;把包里的文件名字开头统统加上公司名字&#xff0c;…

深度学习之经典网络-AlexNet详解

AlexNet 是一种经典的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;在 2012 年的 ImageNet 大规模视觉识别挑战赛&#xff08;ILSVRC&#xff09;中表现优异&#xff0c;将 CNN 引入深度学习的新时代。AlexNet 的设计在多方面改进了卷积神经网络的架构&#xff0c;…

Android亮屏Job的功耗优化方案

摘要: Job运行时会带来持锁的现象,目前灭屏放电Job的锁托管已经有doze和绿盟标准监管,但是亮屏时仍旧存在过长的持锁现象,故为了优化功耗和不影响用户体验下,新增亮屏放电下如果满足冻结和已运行过一次Job,则进行job限制,当非冻结时恢复的策略 1.现象: (gms_schedu…

Linux版更新流程

一.下载更新包 下载地址&#xff1a;https://www.nvisual.com/%e4%b8%8b%e8%bd%bd/ 二.更新包组成 更新包由三部分组成&#xff1a; 前端更新包&#xff1a;压缩的ZIP文件&#xff0c;例如&#xff1a;dist-2.2.26-20231227.zip (2.2.26是版本号 20231227是发布日期)后端更…