其他分享
首页 > 其他分享> > Airtest之录屏指南

Airtest之录屏指南

作者:互联网

上期回顾:Airtest API精讲之设备连接管理API集合


以下基于
python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85

Airtest提供了录屏功能,可以在运行自动化脚本的同时进行录屏,方便事后查看或排查问题。不过录屏功能仅支持安卓平台,iOS不支持。

通过命令行运行时录屏

之前我们已经介绍过airtest run运行脚本,Airtest命令行运行airtest run详解
在命令行最后只要加上--recording就会录屏。脚本结束后,在log文件夹会生成recording_手机序列号.mp4

也可以自定义录屏文件名,在命令行最后加上--recording 自定义文件名.mp4,如果有不止一台手机在运行,会把文件命名为手机序列号_test.mp4

示例:

airtest run "D:\qasite.air"  --device "android:///" --log "D:\log" --recording qasite.mp4

通过脚本运行时录屏

将录屏接口写在脚本中,直接运行脚本也可录屏。会用到Recorder类的start_recording()和stop_recording()方法。

start_recording()有如下参数:

stop_recording()有如下参数:

演示实例

__author__ = '公众号:测试工程师小站'

from airtest.core.api import *
from airtest.core.android.recorder import *
from airtest.core.android.adb import *

auto_setup(__file__, devices=["android:///s59z8h7"])

adb = ADB(serialno="s59z8h7")
recorder = Recorder(adb)

recorder.start_recording(max_time=60, bit_rate_level=5)

touch([500,500])
sleep(6)

recorder.stop_recording(output="qasite.mp4")

录屏常见问题

以下是从官方文档中摘录的常见问题及解决办法:

1)部分模拟器不支持录屏

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

所以我们不是非常建议在模拟器上使用录屏功能

图片

2)密码界面录屏黑屏

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

3)竖屏录屏右侧的“黑边”

很多同学录屏后,播放录屏文件时,会发现竖屏真机的录屏右侧有一大块“黑边”:

图片

其实这并不是什么异常,就是为了兼容横屏录屏特意留下来的,同学们无需理会,也不用额外处理,目前还不支持去掉右侧这块黑色的画面。

4)重新开启录屏失败

在脚本中开启录屏之后,可能因为某些错误导致中间的脚本运行失败,最终没有运行到结束录屏的脚本;此时再次开启录屏时,将提示start recording error :

<module>
    recorder.start recording()
  File "airtest\utils\snippet.py",line 125,in ready_func
  File "airtest\core\android\recorder.py",line 50,in start_recording
RuntimeError:start recording error

此时我们可以打开手机上安装的Yosemite.apk,手动点下结束录屏;也可以单独运行下结束录屏的代码,再来重新开启录屏即可。更好的方式是,在编写脚本时,就写一个逻辑,不论中间的脚本是否运行成功,开启录屏之后,最终都会运行结束录屏,可以有效避免这个问题。

5)录屏没有声音

目前Airtest的录屏文件是没有声音,暂时还没有解决办法。

6)start_recording first

未开启录屏,直接调用结束录屏stop_recording会出现如下报错:

  File "airtest/utils/snippet.py",line 108,in ready _func
  File "airtest/core/android/recorder.py",line 92,in
stop recording
airtest.core.error.AirtestError:'start recording first'

 

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

标签:指南,脚本,Airtest,recording,start,录屏,之录,airtest,recorder
来源: https://www.cnblogs.com/songzhenhua/p/15915189.html