• 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()有如下参数:

    • 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'

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

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

  • 相关阅读:
    字符串转日期
    arcgis server 10.1 PublishingTools工具无法启动Service's containing process has crashed
    net中捕获摄像头视频的方式及对比
    sql server下划线查询
    字符串与图片的Base64编码转换操作
    自定义DataSet
    判断窗体是否已存在实例
    字符串二次处理,补位+截取
    vue踩坑-This relative module was not found
    ajax和axios请求本地json数据对比
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/15915189.html
Copyright © 2020-2023  润新知