Airtest进阶使用篇!提高脚本稳定性 + 批量运行脚本!

2023-12-04

Airtest进阶使用篇-提高脚本稳定性+批量运行脚本

一、背景

今天彭于晏为大家分享Airtest进阶使用篇,主要包含两块的内容:

  • 提高脚本稳定性
  • 批量运行脚本生成测试报告

二、提高脚本稳定性

1、添加全局配置:

#全局设置
ST.FIND_TIMEOUT=10  #设置隐式等待时长,默认识别图片时间是30秒,可改为10秒找不到就不找了
ST.OPDELAY=1 #设置默认操作时间间隔为1秒
ST.THRESHOLD=0.5 # 设置图片识别精准度,默认为0.7,表示70%匹配即认为匹配成功
  • 默认图片识别隐式等待时长是30秒,比较长,可通过:ST.FIND_TIMEOUT 改为10秒
  • 脚本中,每一个步骤的操作之间都会有一小段时间间隔,默认用OPDELAY进行设定,OPDELAY默认值为0.1,即每一步操作后等待0.1秒,将它适当设置得大一些,可以在每次操作后停顿一小段时间,避免过快进行下一个操作导致不能成功的问题。可通过:ST.OPDELAY整体设置每一步操作间隔时间,少写很多sleep
  • 默认图片识别精准度是0.7,如果需要整体更高或者更低的精准度,可通过:ST.THRESHOLD整体设置精准度。threshold设置得越高,图像识别的精度越高,但成功率也会有所降低,请根据自己的实际情况酌情设置。

2、截图方式:

图像识别使用的算法,更适合用来识别按钮类(带边框)、图标类的图像 ,仅仅单独截取几个文字的识别成功率很低,请尽量截取带边框的图片来达到较好的识别效果,避免只截取按钮上的文字。

比如同样的测试场景,以下两种截图方式,使用方式2截图能达到更好的识别效果:
方式1:


方式2:

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

3、图片自定义设置:

Airtest IDE中双击图片,会弹出图片自定义设置窗口。
Snapshot+Recognition: 可查看截图在当前页面的识别情况,包含识别出来的位置以及识别结果的可信度

右侧参数说明:

filename: 图片名称,系统会自带随机的名称。为了代码有更好的可读性,可以修改为自定义的名称;
threshold:图片识别精准度阈值,默认是0.70,表示70%匹配则认为识别通过;
target_pos: 图片点击的位置,默认5,表示点击图片正中心。图片具体九宫格位置可参看下图说明:

比如购物车加购了3行商品,我们要点击第2个商品的+号按钮,则可以通过截取像上面这样的图片,并设置target_pos为6来实现点击效果。

rgb: 图片识别是否开启背景色识别,默认是不带背景色,使用灰背景的模式对比图片。
这样即使页面换了不同的主题色,只要图片样式不换,均不影响脚本运行。
勾选上之后则按实际背景颜色比对图片;

scale_step: 用于控制搜索比例步长,它代表匹配时搜索的精细程度。
进行图像匹配时,会在原始截图的一定缩放范围内以截图最长边 * scale_step 的步长进行搜索。
默认值0.01,取值范围 [0.001, 0.1],推荐值 0.02, 0.005, 0.001。
通常该值不需要调整,当出现跨分辨率匹配(特别是匹配较小截图)无法匹配到时可以尝试减小它。
不过减小它会大幅增加匹配时间;

scale_max: 用于调节匹配的最大范围, 如果要查找的目标UI很小的话,可以适当增大这个数值。
默认值 800, 推荐值 740, 800, 1000 取值范围 [700 , 2000]。

4、当前case运行失败不影响后续case执行:

当前脚本跑失败了,不能影响下一个脚本的正常运行,可以用try except捕获异常。

try下面是正常的操作步骤代码,except下面是当try中的脚本执行失败后,需要执行的兜底步骤代码,用于回到初始页面以保障下一个脚本能正常运行:

5、当目标图片未出现时,重新执行上一步操作

有时候由于软件卡顿或者网络不稳定的原因,导致我们执行A操作后,期望的B图片并没有出现,case执行失败。

这个时候我们可以使用wait函数的intervalfunc参数,当没找到B图片时,重新执行一次A操作。示例代码如下:

# 查找目标失败时,指定回调自定义的"notfound"函数
def notfound():
    print("No target found")
wait(Template(r"tpl1607510661400.png"), intervalfunc=notfound)

比如:QQ音乐的分享操作

三、批量运行脚本生成测试报告

1、命令行运行airtest脚本

Airtest IDE中编写脚本完成后,我们可以通过运行按钮完成单个脚本的运行验证。但是只能1次运行1个脚本,如果你想运行一批脚本,完成自动化测试的批量执行工作怎么办呢?

这个时候就需要通过命令行模式运行airtest脚本。具体命令示例如下:

# 运行脚本生成测试日志文件
airtest run airtest1.air --device Android:/// --log log/airtest1log/
# 依赖日志文件生成HTML测试报告
airtest report airtest1.air --log_root log/airtest1log/ --outfile log/airtest1log/airtest1log.html --lang zh

也可以使用python运行, 需要依赖airtest库,先安装库:pip install airtest


然后使用命令:

# 运行脚本生成测试日志文件
python -m airtest run airtest1.air --device Android:/// --log log/airtest1log/
# 依赖日志文件生成HTML测试报告
python -m airtest report airtest1.air --log_root log/airtest1log/ --outfile log/airtest1log/airtest1log.html --lang zh

其中:

--device Android:/// 表示使用连接的第一个Android设备运行脚本
--log 表示脚本运行日志文件存放的路径
--outfile 表示生成的html测试报告文件存放的路径
--lang zh 表示生成中文版的测试报告,如果要英文版的,使用--lang en

2、解决报告无法在别人电脑上正常查看的问题

这样生成的报告有一个问题:只能在你自己本地查看,发送给别人,在别人的电脑上无法正常查看:


原因是:这样生成的html报告,里面的一些图片路径和静态资源路径是绝对路径。当报告被发到别的电脑上时,html再想经过绝对路径找到这些图片资源和静态资源,就不可能了,因此才形成其余人看到的报告彻底没有图片和相应样式的状况。

在Airtest IDE中提供了导出报告的功能,可以让别人电脑上也能够正常打开你本地生成的报告。右键点击脚本名称,选择导出报告:


导出报告以后,图片资源和静态资源的路径都被改为了相对路径 ,而且文件夹中还打包了对应的静态资源文件。这样咱们再把导出好的报告发到别的电脑查看时,就不会出现上述问题了。

而使用命令行生成报告时,同样为了让别人电脑上能够正常打开你本地生成的报告,则需要使用–export命令,示例如下:

# 使用outfile参数,指定生成报告的目录, 这样的报告只能自己电脑上查看,别人电脑上无法正常查看
airtest report D:/test/airtest1.air --log_root D:/test/log/airtest1log/ --outfile D:/test/log/airtest1log/log.html --lang zh

# 使用了export参数,这样生成的报告,图片和资源路径才会是相对路径,而且包含了静态资源文件,别人电脑上也能正常查看
airtest report D:/test/airtest1.air --log_root D:/test/log/airtest1log/ --export D:/test/log/airtest1log/ --lang zh

3、批量运行多个脚本

如果需要批量运行多个脚本,则可以编写一个bat文件,来批量运行多个脚本,比如要同时运行testcase1.air和testcase2.air两个脚本,命令示例如下:

d:
cd D:\software\AirtestIDE\script
rmdir /s/q log
md log
cd D:\software\AirtestIDE\script
airtest run testcase1.air --device Android:/// --log log/testcase1og/
airtest report testcase1.air --log_root log/testcase1log/ --export log/testcase1log/ --lang zh
airtest run testcase2.air --device Android:/// --log log/testcase2log/
airtest report testcase2.air --log_root log/testcase2log/ --export log/testcase2log/ --lang zh

先新建一个txt文件,写入上面的命令,然后保存并重命名为.bat文件。然后通过双击bat文件即可批量运行脚本test.bat:


批量运行脚本后,每一个case都会生成自己详细的HTML测试报告:

当然,如果已经到了这一步,那么有编程功底的同学可以更进一步,将testcase1.html和testcase2.html中的关键信息抽取出来,进行简单的网页编程生成一份汇总的测试报告,让整个自动化测试结果有更专业的呈现,类似于下面这样:

===================================================================
以上就是本次的全部内容,如果对宝子们有帮助,麻烦点个赞+收藏+关注,一键三连啦~

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Airtest进阶使用篇!提高脚本稳定性 + 批量运行脚本! 的相关文章

随机推荐

  • 夯实c基础

    夯实c基础 区别 图一的交换 交换的是地址而不是两数 无法实现两数的交换 题干 以下程序的输出结果为 c void fun int a int b int c c a b void main int c 6 fun 3 5 c printf
  • 测试人员为什么要去了解业务架构和技术架构?

    问题 在入职公司不久 我参加老员工再给新来的员工和管培生宣讲产品的业务 功能 直接拿着功能清单和实际页面在讲解 等把产品功能讲完了 我问了一下实习生和管培生怎么样 他们都说功能讲的太多 太乱 不清楚讲解产品的核心业务逻辑及操作流程 后来发现
  • UI自动化测试的正确姿势 —— Airtest设备连接&API详解第一篇

    一 背景 Airtest作为一款优秀的自动化测试工具 有着强大的API功能 处理日常自动化测试过程中需要的各类操作 今天就给大家逐一介绍关于设备连接和常用API部分 结合自动化测试中的各类需求 看看如何通过使用Airtest来快速实现 二
  • 7个简单技巧,让你从容应对压力面试!

    01 什么是压力面试 压力面试是指有意制造紧张 以了解求职者将如何面对工作压力的一种面试形式 事实上 压力面试不是单独存在的一类面试 往往是穿插在面试过程中 面试人通过提出不礼貌 冒犯的问题 或者用怀疑 尖锐 挑衅的语气发问 使应聘者感到不
  • 商城免费搭建之java商城 鸿鹄云商 B2B2C产品概述

    B2B2C平台 以传统电商行业为基石 鸿鹄云商支持 商家入驻 平台自营 多运营模式 积极打造 全新市场 全新 模式 企业级B2B2C电商平台 致力干助力各行 互联网创业腾飞并获取更多的收益 从消费者出发 助力企业构建完整 电商交易生态 整合
  • 【涨薪技术】深入接口测试之Mock技术

    01 为什么要用Mock 服务端与客户端约定了接口 但服务端还没有完成开发时 客户端一般由如下处理方式 1 在程序中写模拟数据 程序中增加垃圾代码 后期还要删除 可能对代码造成影响 模拟异步请求不方便 服务端接口开发完成后 需要重新书写网络
  • OBC、DCDC自动化测试解决方案!

    OBC 车载充电机 和DCDC 直流 直流变换器 是电动汽车的核心部件 DCDC和OBC的功能质量对于整车的性能和安全性至关重要 在OBC和DCDC 以及整车开发测试过程中 需要对OBC和DCDC进行功能和性能方面进行全面的测试 针对OBC
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景

    鸿鹄工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离构建工程项目管理系统 1 项目背景 一 随着公司的快速发展 企业人员和经营规模不断壮大 为了提高工程管理效率 减轻
  • 一文搞懂 chatGPT 原理

    目前关于chatGPT的资料过于零散 没有详尽所有知识点 系统概述的文章 因此 笔者作了这篇总结性文章 训练过程总览 理清演化路径 预训练 pretrain GPT 3概述 GPT 3模型的理念 GPT 3如何学习 数据集 指令微调 Ins
  • d3dcompiler_47.dll缺失怎么修复?一招搞定电脑弹窗问题

    在计算机使用过程中 我们常常会遇到一些错误提示 其中之一就是 d3dcompiler 47 dll缺失 这个错误通常出现在游戏或应用程序运行时 它会导致程序无法正常启动或运行 为了解决这个问题 我们需要采取一些措施来修复缺失的文件 本文将介
  • 绝地求生PUBG提示msvcp140.dll缺失的5个解决方法,亲测有效

    在玩 绝地求生 这款游戏时 我们可能会遇到各种各样的问题 其中之一就是 吃鸡提示msvcp140 dll缺失怎么办 这个问题可能导致游戏无法正常启动运行 但是不用担心 下面我将为大家详细介绍如何解决这个问题 msvcp140 dll文件的概
  • 加强网站稳定性!学习如何进行高效压力测试!

    前言 1 什么是压力测试 软件压力测试是一种基本的质量保证行为 它是每个重要软件测试工作的一部分 软件压力测试的基本思路很简单 不是在常规条件下运行手动或自动测试 而是在计算机数量较少或系统资源匮乏的条件下运行测试 通常要进行软件压力测试的
  • Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

    项目说明 随着公司的快速发展 企业人员和经营规模不断壮大 公司对内部招采管理的提升提出了更高的要求 在企业里建立一个公平 公开 公正的采购环境 最大限度控制采购成本至关重要 符合国家电子招投标法律法规及相关规范 以及审计监督要求 通过电子化
  • 「JMeter」数据参数化大集合:让你的测试数据更加强大!

    大家好 我是小马哥 每天进步一点点 今天分享的内容是 Jmeter之数据参数化方法汇总 一 什么是参数化 Jmeter参数化是指将脚本中的某些需要输入数据使用参数来代替 在脚本运行时指定参数的取值范围和规则 脚本在运行时就可以根据需要选取不
  • 题解 | #筛选某店铺最有价值用户中消费最多前5名#

    背景 双非本211硕 编程语言 c cuda python方向是算法部署 AI框架 算子开发目标行业 互联网 半导体已oc 深势科技 高性能计算浙 思路 首先join两张表获取所有员工对应的薪水信息 题目为获取每个部门中当前员工薪水最高 拆
  • 集成测试和系统测试的区别是什么?

    前面的文章聊过测试过程效率提升和演变 也分享了我对于单元测试的一些实践和思考 这篇文章接着上篇单元测试的内容 聊聊集成测试的特点 要解决什么问题 以及实践的注意事项 下图是 从需求出现到最后的线上发布 大致要经历的几个阶段 狭义上的测试活动
  • 引爆AI音乐热潮,拓世AI助你创造属于自己的音乐

    使用人工智能创作音乐早已不是什么新鲜事 如果说仅仅几年前 互联网上涌现的那些由AI创作的Kanye West歌曲 听起来仿佛来自科幻小说的奇妙世界 那么如今Al音乐的发展速度已远超人们想象 以至于每当你浏览各大网络平台时 都能看到相关内容
  • 基于java的俄罗斯方块游戏系统设计与实现

    基于java的俄罗斯方块游戏系统设计与实现 I 引言 A 研究背景和动机 基于Java的俄罗斯方块游戏系统设计与实现的研究背景和动机 俄罗斯方块是一种经典的益智游戏 游戏规则简单 但难度较大 需要玩家有良好的计算能力和手眼协调能力 近年来
  • 题解 | #试卷完成数同比2020年的增长率及排名变化#

    import mathn int input count 0 for i in range n 1 s pow i 2 include
  • Airtest进阶使用篇!提高脚本稳定性 + 批量运行脚本!

    一 背景 今天彭于晏为大家分享Airtest进阶使用篇 主要包含两块的内容 提高脚本稳定性 批量运行脚本生成测试报告 二 提高脚本稳定性 1 添加全局配置 全局设置 ST FIND TIMEOUT 10 设置隐式等待时长 默认识别图片时间是