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


常见的录屏异常



部分模拟器不支持录屏


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


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


密码界面录屏黑屏


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

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
Web App开发 前端开发 JavaScript
VSCode如何设置Vue前端的debug调试
VSCode如何设置Vue前端的debug调试
1129 0
|
前端开发 JavaScript 安全
TypeScript在React Hooks中的应用:提升React开发的类型安全与可维护性
【7月更文挑战第17天】TypeScript在React Hooks中的应用极大地提升了React应用的类型安全性和可维护性。通过为状态、依赖项和自定义Hooks指定明确的类型,开发者可以编写更加健壮、易于理解和维护的代码。随着React和TypeScript的不断发展,结合两者的优势将成为构建现代Web应用的标准做法。
|
Arthas 监控 IDE
Java黑科技之源:JVMTI完全解读
Java黑科技之源:JVMTI完全解读
|
SQL 监控 安全
在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
|
移动开发 HTML5
HTML lable标签
HTML lable标签
|
Linux 虚拟化 数据安全/隐私保护
VMware安装RHEL9.0版本Linux系统
最近在学习Linux,安装了Red Hat Enterprise Linux 的 9.0版本,简称RHEL9.0。RHEL9.0是Red Hat公司发布的面向企业用户的Linux操作系统的最新版本。我把它安装在虚拟机VMware里来减少电脑性能占用,也防止系统炸搞得我后面要重装。安装RHEL9.0还是有一些技巧的,本篇文章作为教程,指导如何在VMware里安装RHEL9.0版的Linux系统。
887 1
|
JavaScript
layUI使用table.reload时出现了两次请求问题
layUI使用table.reload时出现了两次请求问题
487 0
|
Ubuntu API Docker
Docker默认网络管理
Docker默认网络管理
228 0
西门子S7-200 SMART项目的编译、如何下载、运行调试、上传项目
上篇文章中我们学习了西门子S7-200 SMART如何切换编程编辑器、输入LAD程序以及如何编辑程序,本篇我们来介绍编程软件STEP7-Micro/WIN SMART中项目的编译、下载、运行调试和上传。
西门子S7-200 SMART项目的编译、如何下载、运行调试、上传项目
|
Cloud Native 运维 Serverless
分布式应用的未来 — Distributionless
作者丨阿里云高级技术专家 至简(李云) 在技术变革推动社会发展这一时代背景下,大量支撑规模化分布式应用的技术创新、创造与创业应用而生,Could Native、Service Mesh、Serverless 等技术词汇在全球范围内引发了大量的解读与讨论。