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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: Airtest录屏总结,这不是一个简单的recording!

前言



经常有同学过来问如何在脚本运行的过程中进行录屏操作,其实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),直接使用相关的参数和方法即可。


常见的录屏异常



部分模拟器不支持录屏


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


网络异常,图片无法展示
|


密码界面录屏黑屏


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

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
7月前
|
编解码 监控 算法
如何使用Pillow库进行拍照和截屏
如何使用Pillow库进行拍照和截屏
194 0
|
7月前
|
Android开发 iOS开发 Windows
Airtest:各平台的剪切板功能汇总
Airtest:各平台的剪切板功能汇总
|
7月前
|
Android开发 iOS开发 计算机视觉
Airtest新增iOS、Windows录屏功能,真香!
Airtest新增iOS、Windows录屏功能,真香!
198 0
|
4月前
|
图形学
小功能⭐️Unity截屏功能的实现
小功能⭐️Unity截屏功能的实现
|
7月前
|
Android开发
Android 截屏 录屏 与获取log
Android 截屏 录屏 与获取log
71 1
|
7月前
|
人工智能 JavaScript Python
基于Airtest抖音养号源代码
基于Airtest抖音养号源代码
121 0
|
Windows
obs studio录屏黑屏问题
obs studio录屏黑屏问题
127 0
|
图形学
Unity3d 截屏
Unity3d 截屏
102 0
编写一个uiautomatorview截屏获取.uix工具
有的时候因为电脑的某些原因,uiautomatorview不好用了,无法启动,无法使用,各种改环境也无济于事。 有的人会尝试使用weditor,亦或是一直使用的是appium自带的定位工具。
242 0
编写一个uiautomatorview截屏获取.uix工具
Cypress系列(60)- 运行时的截图和录屏,screenshot() 命令详解
Cypress系列(60)- 运行时的截图和录屏,screenshot() 命令详解
706 0
Cypress系列(60)- 运行时的截图和录屏,screenshot() 命令详解