前言
经常有同学过来问如何在脚本运行的过程中进行录屏操作,其实airtest有给我们提供录屏功能,但是教程中讲的极少。
所以今天给大家总结了录屏的相关知识,希望能帮助大家解决对录屏这块内容的疑问。
在命令行使用-- recording录屏
录屏功能仅适用于安卓平台,所以当测试设备是安卓真机或者部分安卓模拟器时,我们才能够对脚本的运行过程进行录屏操作。
在命令行使用 airtest run
运行脚本时,我们可以通过添加 --recording
参数来录制脚本运行的视频。(运行结束后,录屏文件会默认保存在log文件夹里面,使用 recording_手机序列号
来命名录屏文件)
airtest run "D:\test\Airtest_example.air" --device android://127.0.0.1:5037/emulator-5554?cap_method=MINICAP_STREAM^&^&ori_method=MINICAPORI^&^&touch_method=MINITOUCH --log "D:/test\41f68fdf265d8c13998d0a1a7b992889" --recording 复制代码
并且airtest1.1.6支持 在 --recording
参数后面加上一个文件名来命名录屏文件 ,例如 --recording test.mp4
,如果有不止一台手机在运行,会把文件命名为 手机名_test.mp4
。下述示例使用 --recording 123.mp4
指定录屏文件名为 123.mp4
:
airtest run "D:\test\untitled.air" --device android://127.0.0.1:5037/emulator-5554 --log "D:/test\6fe87b11ca1fc75ebe670439f20fabfc" --recording 123.mp4 复制代码
另外我们需要注意下,传入的录屏文件名必须以 .mp4
作为结尾!
在脚本中调用录屏方法
除了在命令行使用 --recording
参数来录制脚本运行的视频之外,我们还可以直接在脚本中调用开始录屏和结束录屏的方法来帮助我们录制脚本运行过程的视频。
使用的方法分别是 start_recording()
和 stop_recording()
,方法详情可以参看此链接的内容,airtest.readthedocs.io/zh_CN/lates… 。
脚本示例如下:
# -*- encoding=utf8 -*- __author__ = "AirtestProject" from airtest.core.api import * from airtest.core.android.recorder import * from airtest.core.android.adb import * auto_setup(__file__,devices=["android://127.0.0.1:5037/emulator-5554"]) adb = ADB(serialno="emulator-5554") recorder = Recorder(adb) # 开启录屏 recorder.start_recording(max_time=10) touch(Template(r"tpl1603091574169.png", record_pos=(0.113, -0.302), resolution=(900, 1600))) sleep(3.0) # 结束录屏 recorder.stop_recording(output="test.mp4") 复制代码
需要注意的是,录屏的这两个方法 属于 Recorder(adb)
类 ,所以我们在使用这2个方法之前,要先实例化这个类,之后再用这个实例去调用类里面的关于录屏操作的方法。
在这两个方法中,有2个参数我们可以特别关注下:
一个是 start_recording()
的 max_time
参数,可以用来 设置最长的录屏时间 ,默认值是1800,即半个小时,可以根据自己的实际需求修改这个录屏时长。如果脚本的运行时长小于这个 max_time
的值,则录屏时长以脚本实际运行时长为准。但如果脚本运行时长大于 max_time
的值,那录屏时长以 max_time
的时长为准。
第二个是 stop_recording()
的 output
参数,可以用来 设置录屏文件的文件名 ,默认为 screen.mp4
,默认的保存路径和项目目录一致。
不一样的录屏方式
airtest1.1.3版本和1.1.4版本(IDE1.2.3-1.2.5)使用 Yosemite.apk
来进行录屏操作,但比较特别的是,初次使用录屏功能时 需要同学们手工打开 Yosemite.apk
去点一次同意权限 ,很多同学都不知道还有这一个步骤,所以录屏操作经常因为没有给到权限,而出现录屏失败的情况。
而最新版本的airtest,即1.1.6版本(IDE1.2.6),则把录屏功能的代码 回退到了之前不用 Yosemite.apk
录屏的版本 。回退到旧版本之后,同学们便 不用手动再去 Yosemite
应用里面点一次同意权限(注意是1.1.6版本的airtest),直接使用相关的参数和方法即可。
常见的录屏异常
部分模拟器不支持录屏
安卓模拟器的录屏机制和安卓真机的录屏机制存在一些差异,因此,我们并不能保证在所有的模拟器上面都能够进行录屏操作,比如雷电模拟器可以进行正常的录屏操作,但 在夜神模拟器上录屏时就容易报错。
密码界面录屏黑屏
在测试部分品牌手机的过程中,有同学会发现一到输入密码的界面时,设备画面就全黑了,导致录出来一部分黑屏的内容。这是因为在密码输入的界面,一般都做有一些防止恶意截屏录屏的措施。如果同学们不想出现黑屏画面的话,我们可以尝试在安全设置中,把安全键盘之类的设置关掉 ,或者是 关掉其它一些防止恶意截屏录屏的设置 。