AirtestProject 录屏方法剖析,记录脚本跑测不再难

fishfish-yu · 2024年08月09日 · 最后由 yeyu 回复于 2024年08月14日 · 4917 次阅读

此文章来源于项目官方公众号:“AirtestProject”\
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

一、前言

很多同学在跑测过程中都希望可以不用一直盯着跑测画面,又希望可以在跑测后复核跑测结果,那么 Airtest 所提供的录屏方法会是很好的选择。目前该录屏方法已经兼容了 Android、iOS、Windows 上的脚本跑测录制,本周就让我们来看一下这个方法的魔力吧。

二、录屏操作

2.1 脚本录屏方式

使用脚本录屏方式是我们最常用的,最重要的是使用下面两个函数。

#开始录制
start_recording(max_time, output, fps, mode, snapshot_sleep, orientation, bit_rate_level, bit_rate, max_size)

#结束录制
stop_recording(output=None, is_interrupted=None)

其中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 ,并支持旧的参数,帧率比ffmpegcv2要高,但兼容性差,有一些手机不支持

  • snapshot_sleep=0.001 : 截图间隔
  • orientation=0 :视频朝向模式 1 为竖屏;模式 2 为横屏;模式 0 为方形填充,默认是 0
  • bit_rate_level :调整录屏的清晰度,取值范围是 1-5,bit_rate_level=5清晰度最高,但是占用的硬盘空间也会更大。(只支持Yosemite模式录屏)
  • bit_rate :bitrate 越高, 视频的清晰度更高(只支持 Yosemite 模式录屏)
  • max_size :能够指定录屏结果的图像大小,因为屏幕图片越大,在录屏时造成的系统负载越大(CPU 和内存占用)(只支持ffmpeg模式录屏)

大家也知道,就是从 Airtest 1.2.9 版本之后,我们的录屏方法升级了全面兼容了 Windows、Android、iOS 设备,其中只有 Android 需要mode参数,默认为yosemite模式;Window/iOSstart_recording不再需要有mode参数;

对于Android 的录屏模式,我们可以按需去选择自己所需要的模式:

  • yosemite :原有的默认模式,录屏清晰度和质量较高,但兼容性较差,部分机型可能有问题;

    • 支持的参数:max_timeorientationbit_ratebit_rate_level
  • ffmpeg : 在 Airtest 1.2.9 版本之后加入的新模式,录屏帧率和质量较低,但兼容性更好,能兼容绝大多数设备;

    • 支持的参数:max_timeorientation , max_size,fpssnapshot_sleep

2.2 命令行录屏方式

如果是对 Android 手机使用命令行在运行脚本的时候,开启对屏幕的录制,可以在运行脚本的命令行中加入--recording参数即可:

airtest run "D:\test\Airtest_example.air"  --device android:/// --log logs/ --recording

运行结束后,录屏文件会默认保存在log 文件夹里面,并且默认使用 recording_手机序列号 来命名录屏文件。如果需要指定视频的文件名,可以在--recording 后输入自己需要自定义的名称,如:--recording test.mp4 。但如果需要指定文件名且有多台设备时,则可以输入--recording test.mp4,但实际的文件命名会为手机序列号_test.mp4。需要注意的是,我们传入的文件名必须以.mp4为后缀名

使用命令行录屏的方式,默认录屏文件最长为 1800 秒,如果需要录制更长时间,需要手动在代码中调用录屏接口!

三、在不同平台上的录屏演示

Android 设备脚本实现录制的演示:

Android 设备用命令行的方式去录制的演示:

iOS 设备脚本实现录制的演示:

Windows 窗口脚本实现录制的演示:

六、小结

我们本周详细介绍了 Airtest 所提供的录屏方法,也将start_recording()的传入参数也逐个介绍了一遍,大家也可以根据自己的需求去编写自己所需的跑测脚本,如果有其他更好的脚本跑测录屏方式,也欢迎大家给我们投稿分享一下~

同时如果大家在使用过程中有一些其他新的使用方式或者遇到了问题,又或者有任何想要深入了解的知识点,欢迎在官方交流群(526033840)里告诉我们或者提交 issue。


AirtestIDE 下载:airtest.netease.com/\
Airtest 教程官网:airtest.doc.io.netease.com/\
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:526033840

共收到 1 条回复 时间 点赞

请问 windows 平台录屏如何设置分辨率?默认是个正方形的






需要 登录 后方可回复, 如果你还没有账号请点击这里 注册