Android、iOS如何实现自动化录屏,超实用!
测试开发社区
共 1923字,需浏览 4分钟
· 2021-07-31
阅读本文大约需要1分钟。
背景
在做移动端自动化测试的过程中,有很多场景需要录制设备的屏幕视频,比如Crash现场记录,启动/页面加载耗时类的评测等,那么如何实现Android和iOS设备的屏幕录制呢?
Android
其实Android系统本身提供了一个简单的adb命令实现,虽然在有些设备上存在兼容性问题,比如华为手机出厂就删除了 screenrecord 录屏工具,不过在大部分机型上还是可以适用的(针对这个适配问题,后面会专门写一篇文章介绍一种兼容所有机型的方案),今天先来分享一下这个系统的原生实现。
这里推荐一个开源的框架adbutils,他是一个用纯Python实现的adb服务,里面对原生的screenrecord做了比较好的封装,先装依赖:
pip3 install adbutils
连接ADB Server:
import adbutils
adb = adbutils.AdbClient(host="127.0.0.1", port=5037)
print(adb.devices())
录屏方法:
# run screenrecord to record screen
r = d.screenrecord()
# sleep for a while, can not large then 3 minutes
r.stop() # stop recording
r.stop_and_pull("video.mp4") # stop recording and pull video to local, then remove video from device
# control start time manually
r = d.screenrecord(no_autostart=True)
r.start() # start record
r.stop_and_pull("video.mp4") # stop recording and pull video to local, then remove video from device
iOS
系统要求
iOS系统8.0以上
MacOS系统10.10以上
安装
下载仓库源码,目前这个自动化录屏工具是一个二进制的文件,在代码仓库的bin目录下:
git clone https://github.com/WPO-Foundation/xrecord.git
介绍
xrecord --help
-l, --list: List available capture devices.
-n, --name: Device Name.
-i, --id: Device ID.
-o, --out: Output File.
-f, --force: Overwrite existing files.
-q, --quicktime: Start QuickTime in the background (necessary for iOS recording).
-t, --time: Recording time in seconds (records until stopped if not specified).
-u, --quality: Recoding quality (low, medium, high, photo - defaults to high).
-d, --debug: Display debugging info to stderr.
-h, --help: Prints a help message.
使用
列出可捕获的设备:
xrecord --quicktime --list
Available capture devices:
AppleHDAEngineInput:1B,0,1,0:1: Built-in Microphone
5f355a5b183b2d2d7ba91dcfadd4c14b98504642: iPhone
CC2437519T1F6VVDH: FaceTime HD Camera
开始录屏:
"iPhone" --out="out.mp4" --force -q -t 10 xrecord --quicktime --name=
评论
如何计算数据中心的冷却需求?
今日分享 【导读】数据中心的冷却要求受多种因素影响,包括设备的热量输出、占地面积、设施设计和电气系统功率额定值等等……众所周知,环境因素会严重影响数据中心设备。过多的热量积聚会损坏服务器,可能导致其自动关闭。经常在高于可接受的温度下运行服务器会缩短其使用
数据中心运维管理
0
用 Shader 实现旗帜飘扬动画效果
我觉得对于刚入门 3D 编程的朋友来说,如果能够完成代码创建模型数据->创建材质->编写Shader动画这一系列,想必会有满满的成就感。今天就用 Cocos Creator 的 utils.MeshUtils.createMesh 接口,带大家感受一下这个流程。这个流程不仅可以用于新手学
COCOS
2
机房水冷空调管路应该如何安装布局?
近年来随着云计算技术的快速发展,全球数据中心开始向着巨型化的方向发展,单机柜功率密度不断提高,5KW、7KW、10KW甚至几十KW功率机柜已逐步成为常规配置。新一代数据中心更显著的表现为:规模更大、密度更高、制冷要求更高、局部过热成为常态等特点。本文就来探讨下水
数据中心运维管理
0
周四002 瑞超:同样落寞的境遇——北雪平vs埃尔夫斯堡
上赛季最终排名联赛第9的北雪平本赛季伊始表现不佳,4轮战罢他们仅以1胜1平2负的战绩排在倒数第三,这支历史上曾夺得13次联赛冠军、6次杯赛冠军老牌劲旅,正如英格兰赛场上的一众百年俱乐部,在低谷中不断探索着出路。球队主教练安德烈亚斯·阿尔姆曾是AIK索尔纳及赫根队的主教练,他于今年年初刚刚拿起球队教鞭
产品与体验
0
2024跨屏营销指南
下载报告去公众号:硬核刘大 后台回复“ 跨屏营销”,即可下载完整PDF文件。更多报告内容,可加微信:chanpin628 领取。(ps:加过微信:yw5201a1 的不要再加,分享的内容一样,有一个号就行。)申明:报告版权 勾正科技&MMA
产品刘
0
delorean,一个超级实用的 Python 库!
作者通常周更,为了不错过更新,请点击上方“Python碎片”,“星标”公众号大家好,今天为大家分享一个超级实用的 Python 库 - delorean。Github地址:https://github.com/myusuf3/delorean/时间在计算机科学和软件开发中是一个至关重要的概念。Pyt
Python 碎片
0
什么是以太坊期货ETF?它们如何运作?
作者:Jagjit Singh,CoinTelegraph;编译:陶朱,金色财经一、以太坊期货 ETF 介绍以太坊期货 ETF 是追踪以太坊期货合约而非以太坊本身的投资基金。考虑一份承诺在未来某个时间以特定价格购买以太坊的合约。这些衍生品合约通过以太坊 (ETH) 期货交易所交易基金 (ETF) 进
区块链头条
0
字节面试:如何解决MQ消息积压问题?
面试题大全:www.javacn.siteMQ(Message Queue)消息积压问题指的是在消息队列中累积了大量未处理的消息,导致消息队列中的消息积压严重,超出系统处理能力,影响系统性能和稳定性的现象。1.消息积压是哪个环节的问题?MQ 执行有三大阶段:消息生产阶段。消息存储阶段。消息消费阶段。
Java中文社群
0