专栏文章 Airtest 录屏总结,这不是一个简单的 recording!

fishfish-yu · 2020年10月20日 · 最后由 fishfish-yu 回复于 2021年12月09日 · 4482 次阅读

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

前言

经常有同学过来问如何在脚本运行的过程中进行录屏操作,其实 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() ,方法详情可以参看此链接的内容,https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.android.recorder.html?highlight=recording#airtest.core.android.recorder.Recorder.start_recording

脚本示例如下:

# -*- 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),直接使用相关的参数和方法即可。

常见的录屏异常

部分模拟器不支持录屏

安卓模拟器的录屏机制和安卓真机的录屏机制存在一些差异,因此,我们并不能保证在所有的模拟器上面都能够进行录屏操作,比如雷电模拟器可以进行正常的录屏操作,但 在夜神模拟器上录屏时就容易报错

密码界面录屏黑屏

在测试部分品牌手机的过程中,有同学会发现一到输入密码的界面时,设备画面就全黑了,导致录出来一部分黑屏的内容。这是因为在密码输入的界面,一般都做有一些防止恶意截屏录屏的措施。如果同学们不想出现黑屏画面的话,我们可以尝试在安全设置中,把安全键盘之类的设置关掉 ,或者是 关掉其它一些防止恶意截屏录屏的设置

如对录屏还存在疑问的同学,可以在评论中留下你的问题~


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

共收到 2 条回复 时间 点赞

脚本中调用录屏方法录制完成后有黑边怎么办呃

heione 回复

正常现象,为了兼容设备横屏的录屏

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