bat-automator
v2.1.5
Published
bat-automator
Downloads
29
Readme
bat-automator 设备操控库
- 支持 Android、iOS 设备
原理
- 使用 scrcpy 来做 android 设备录屏以绕开 adb screenrecord 在部分机型不可用问题:
brew install scrcpy
- 用 adb 来操控 android 设备:
brew install android-platform-tools
- 用 tidevice 来操控 iOS 设备:
pip3.9 install -U tidevice
- 用 tidevice 的 relay 做端口映射,有一个 60s 左右的启动耗时,所以换成用 iProxy 做端口映射
- 用 ios-minicap 做 iOS 录屏(自动安装)
- 废弃
- 用 ffmpeg 做视频分帧:
ffmpeg 的安装
- 统一 node18
支持能力
能力列表
- 启停 APP
- 模拟划屏
- 元素点击、输入
- 设备录屏
- 设备截屏
能力示例
示例均针对 Android 设备
启停 APP
const automator = require('bat-automator');
// 设备号
let deviceId = 'abc';
// APP 包名
let baiduPackageName = 'com.baidu.searchbox';
let baiduMainActivity = 'com.baidu.searchbox.MainActivity';
const main = async () => {
// 获取设备句柄
let device = await automator.launch(deviceId);
// 停止 APP
await device.closeApp(baiduPackageName);
// 各类操作
// ...
// 启动 APP
await device.launchApp(baiduPackageName, baiduMainActivity);
};
模拟划屏
const automator = require('bat-automator');
// 设备号
let deviceId = 'abc';
const main = async () => {
// 获取设备句柄
let device = await automator.launch(deviceId);
// 模拟手指从 (0, 0) 划到 (1, 1)
await device。swipe(0, 0, 1, 1);
};
元素点击
const automator = require('bat-automator');
// 设备号
let deviceId = 'abc';
const main = async () => {
// 获取设备句柄
let device = await automator.launch(deviceId);
// 获取元素
let element = await device.$x('//node[@text="我的"]');
// 元素点击
await element.tap();
};
元素输入
const automator = require('bat-automator');
// 设备号
let deviceId = 'abc';
const main = async () => {
// 获取设备句柄
let device = await automator.launch(deviceId);
// 获取元素
let element = await device.$x('//node[@text="搜索"]');
// 元素输入
await element.input("龙霸天好吃吗");
};
设备录屏
const automator = require('bat-automator');
// 设备号
let deviceId = 'abc';
// 录屏存储路径
let videoPath = '/Users/data/video.mp4';
const main = async () => {
// 获取设备句柄
let device = await automator.launch(deviceId);
// 启动录屏
let video = await device.record(videoPath);
// 各类操作
// ...
// 结束录屏
await video.kill();
};