ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Airtest之录屏指南

2022-02-20 12:03:02  阅读:774  来源: 互联网

标签:指南 脚本 Airtest recording start 录屏 之录 airtest recorder


上期回顾: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()有如下参数:

  • max_time:最长录屏时间,单位秒,默认1800秒。如果设定值<1800则取设定值,>1800,取1800,即最长只能录半小时。

  • bit_rate:清晰度,值范围1-5,数字越大越清晰,文件体积也越大,默认值1

stop_recording()有如下参数:

  • output:录屏文件名,如qaiste.mp4

  • is_interrupted:是否异常中断,为True表示异常中断,结束录屏但不保存视频,默认值为False。

演示实例

__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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有