录屏方法剖析,记录脚本跑测不再难
此文章来源于项目官方公众号:“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
,并支持旧的参数,帧率比ffmpeg
和cv2
要高,但兼容性差,有一些手机不支持
snapshot_sleep=0.001
: 截图间隔orientation=0
:视频朝向模式 1 为竖屏;模式 2 为横屏;模式 0 为方形填充,默认是0bit_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/iOS的start_recording
不再需要有mode
参数;
对于Android的录屏模式,我们可以按需去选择自己所需要的模式:
-
yosemite
:原有的默认模式,录屏清晰度和质量较高,但兼容性较差,部分机型可能有问题;- 支持的参数:
max_time
,orientation
,bit_rate
,bit_rate_level
- 支持的参数:
-
ffmpeg
: 在Airtest 1.2.9版本之后加入的新模式,录屏帧率和质量较低,但兼容性更好,能兼容绝大多数设备;- 支持的参数:
max_time
,orientation
,max_size
,fps
,snapshot_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