【更新公告】Airtest更新至1.2.9版本

简介: 【更新公告】Airtest更新至1.2.9版本

此文章来源于项目官方公众号:“AirtestProject”

版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

本次更新为Airtest库更新,版本提升至1.2.9,主要新增 对Android13的支持新增Windows和iOS的录屏接口 等。

2. 更新功能

1)新增对Android13的支持

Airtest1.2.9版本新增了对Android13设备的支持,有该系统设备连接/自动化需求的同学,请务必把使用的Airtest刚更新至1.2.9版本。

2)新增Windows、iOS录屏接口,优化Android录屏

目前录屏功能不仅支持Android设备,还支持了windows、iOS设备!

函数 start_recording() 的参数修改如下:

  • max_time : 录屏最长时间限制,默认为1800,单位是秒
  • output : 录像保存文件地址, 默认为 None ,将会自动保存在log目录下,自动以当前时间命名

特别注意:原先 output 参数在 stop_recording 中,现在改为在 start_recording 里!

  • fps=10 :输出视频的帧率,目前暂时限定不超过10fps,默认为10(仅对ffmpeg和cv2生效)
  • mode="ffmpeg" : 保存视频的后台,可选 'ffmpeg' 'cv2' 'yosemite',三种模式的区别如下:

ffmpeg :对机型兼容较好,但cpu占用较高,第一次运行将会预先下载ffmpeg,有一定的额外空间占用(几十M)

cv2 :无需占用额外空间,生成的视频体积比ffmpeg更大

yosemite :Android旧版本的录屏方案,假如当前设备是Android,默认会使用这个模式录屏,必须要事先安装 Yosemite.apk ,并支持旧的参数,帧率比ffmpeg和cv2要高,但兼容性差,有一些手机不支持

  • snapshot_sleep=0.001 : 截图间隔
  • orientation=0 : 视频朝向模式 1 为竖屏;模式 2 为横屏;模式 0 为方形填充,默认是0

其中大部分参数使用默认值即可,最重要的参数有两个:

① 新增参数 orientation : 当跑测过程中大部分时间是竖屏时,可以考虑将 orientation=1 ,或 orientation="portrait"

② 当跑测过程中大部分是横屏,可以 orientation=2 ,或 orientation="lanscape" ,适合游戏等横屏应用;

③ 横竖屏都有可能的话,可以不指定参数,默认值为0,会用一个正方形来容纳视频内容,方便横竖屏转换

output=xxx.mp4,默认将录屏文件存放在log目录下,如果有重命名需求的话可以传这个参数,否则直接所有参数用默认值即可

录屏代码示例:

Record 30 seconds of video and export to the current directory test.mp4:
>>> from airtest.core.api import connect_device, sleep
>>> dev = connect_device("Android:///")
>>> save_path = dev.start_recording(output="test.mp4")
>>> sleep(30)
>>> dev.stop_recording()
>>> print(save_path)
>>> # the screen is portrait
>>> portrait_mp4 = dev.start_recording(output="portrait.mp4", orientation=1)  # or orientation="portrait"
>>> sleep(30)
>>> dev.stop_recording()
>>> # the screen is landscape
>>> landscape_mp4 = dev.start_recording(output="landscape.mp4", orientation=2)  # or orientation="landscape"
3)IOS支持传入udid参数

iOS的初始化字符串中,支持传入名为 serialno/udid/uuid 的字段,用于设置这台iOS的设备udid,示例:

>>> connect_device("iOS:///http://localhost:8100/?mjpeg_port=9100&&udid=00008020-001270842E88002E")  # iOS with mjpeg port and udid
>>> connect_device("iOS:///http://localhost:8100/?mjpeg_port=9100&&uuid=00008020-001270842E88002E")  # udid/uuid/serialno are all ok

该名称无论使用 udid/uuid/serialno 中任何一个名字传入都可以生效,可以在连接后,通过以下方式获取到这个值:

dev = connect_device("iOS:///http://localhost:8100/?udid=00008020-001270842E88002E")
print(dev.uuid)

image.png

增加这个参数的主要原因是,在wda中获取不到ios手机的udid,但在某些情况下可能需要用到这个值,因此支持主动传入保存。

3. 问题修复

1)修复了部分windows下,游戏无法正确截屏的问题

迭代了windows的 snapshot ,修复了部分游戏截屏图像重复、黑屏等问题,同时修复了在双屏下的截图区域错误问题。

2)修改了报告中对于运行结果是否成功的判定

原先的逻辑是:只要整个运行过程中出现 traceback ,就认为此次任务运行失败。

image.png

【图】1.2.7版本Airtest跑测结果示意

但通常会遇到一种情况是:在运行过程中会出现一些不太重要的脚本异常,我们希望脚本不卡在这里,而是 catch 住异常后继续往下跑,只要能跑到最后就算脚本成功。

image.png

【图】1.2.9版本Airtest跑测结果示意

因此将脚本的成功判断改为:当步骤列表的最后一个步骤有traceback,才认为本次脚本运行失败。

3)对报告中一些显示效果做了一点微调

① 做了一些样式调整,修复了一些显示问题;

② 报告html支持上下左右按键切换预览图片。

4. 如何更新

因本次更新仅更新了Airtest库,所以同学们目前只能在自己本地python环境中,将Airtest更新到最新版本:

pip install -U airtest

对于使用AirtestIDE的同学,可以等我们发布1.2.15版本的IDE,或者在旧版本AirtestIDE中设置使用本地python环境,然后将本地python环境的Airtest库升级到最新版本即可。

image.png

5. 其它问题

如同学们在使用新版的Airtest时遇到了一些问题无法解决,特别是录屏相关的问题,可以通过此网站向我们的开发者快速提单:airtest.netease.com/issue_creat…

可以在标题中加入“Airtest1.2.9”之类的字眼,方便我们快速筛选和排查。

相关文章
|
Android开发 iOS开发 计算机视觉
Airtest新增iOS、Windows录屏功能,真香!
Airtest新增iOS、Windows录屏功能,真香!
316 0
|
数据库 数据库管理 Python
解释Python中的内存视图(Memory View)。
解释Python中的内存视图(Memory View)。
471 0
|
4月前
|
前端开发
SpringBoot2.3.1集成Knife4j接口文档
SpringBoot2.3.1集成Knife4j接口文档
369 57
|
4月前
|
数据采集 搜索推荐 数据可视化
一文讲透,如何快速完成埋点与用户行为分析产品选型
在ClkLog的日常咨询中,我们发现有接近一半的客户是刚刚起步接触用户行为分析,在意识到这项需求之后,他们常常面临各种困惑。为此,ClkLog通常会建议客户从三个关键点来梳理: 我们的需求目标是什么?可能会涉及哪些产品? 公司对产品数据是否有要求?SaaS还是私有化建设? 核心需求是哪些?是否需要产品包含或可以自己二开?
|
8月前
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
304 6
|
8月前
|
机器学习/深度学习 Python
哪些特征导致过拟合?使用ParShap 方法精准定位导致模型泛化能力下降的关键特征
本文探讨了如何识别导致模型过拟合的特征,提出了一种基于SHAP值和偏相关性的新方法——ParShap。通过分析德国健康登记数据集,作者展示了传统特征重要性无法准确反映特征在新数据上的表现,而ParShap能有效识别出过拟合特征。实验表明,移除这些特征可以显著减少过拟合现象,验证了该方法的有效性。
273 79
哪些特征导致过拟合?使用ParShap 方法精准定位导致模型泛化能力下降的关键特征
|
12月前
|
JavaScript
VUE学习二:事件监听(v-on)、条件判断(v-if/v-else-if/v-else)、循环遍历(v-for)
这篇文章是关于Vue.js的学习指南,涵盖了事件监听、条件判断、循环遍历、数组方法响应性、案例分析以及高阶函数的使用。
178 2
VUE学习二:事件监听(v-on)、条件判断(v-if/v-else-if/v-else)、循环遍历(v-for)
|
机器学习/深度学习 存储 数据可视化
NumPy 1.26 中文官方指南(二)(4)
NumPy 1.26 中文官方指南(二)
301 1
|
8月前
|
人工智能 API
通义千问 Qwen 衍生模型包揽 HuggingFace 开源榜单全球前十!
通义千问 Qwen 衍生模型包揽 HuggingFace 开源榜单全球前十!
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
434 4