root_automator - Root 自动化
root_automator 模块提供了使用 root 权限或 adb 权限来模拟触摸的功能。用它可以完成触摸与多点触摸,并且这些动作的执行没有延迟。相比起基于无障碍的操作,RootAutomator 支持多点触控和动态改变手势。
提示
从 Pro 9.3 开始,推荐使用 createRootAutomator2 来代替 createRootAutomator,相比 RootAutomator,它有更好的设备兼容性。
目录
接口
函数
函数
createRootAutomator
▸ createRootAutomator(options?): Promise<RootAutomator>
根据选项创建一个新的 RootAutomator 实例。
可以指定是否使用 root 权限、adb 权限、输入设备路径等,参见 RootAutomatorOptions。如果不指定 root 或 adb 权限,则默认用 getDefaultShellOptions 获取的默认值。
对于输入设备路径 inputDevice,如果不指定,则会自动检测,但检测失败时会抛出异常;你也可以手动在终端运行 getevent -t,然后在屏幕上操作,看输入事件的设备路径是什么,比如 /dev/input/event5。
提示
从 Pro 9.3 开始,推荐使用 createRootAutomator2 来代替 RootAutomator,相比 RootAutomator,它有更好的设备兼容性。
示例
"nodejs";
const { createRootAutomator } = require("root_automator");
async function main() {
const ra = await createRootAutomator({ root: true });
await ra.tap(100, 100);
await ra.exit();
}
main();参数
| 名称 | 类型 | 描述 |
|---|---|---|
options | RootAutomatorOptions | 创建 RootAutomator 的选项 |
返回值
Promise<RootAutomator>
返回一个 Promise,resolve 时返回 RootAutomator 对象。
createRootAutomator2
▸ createRootAutomator2(options?): Promise<RootAutomator2>
根据选项创建一个新的 RootAutomator2 实例。RootAutomator2 相比 RootAutomator 有更好的兼容性。
可以指定是否使用 root 权限、adb 权限等,参见 ShellOptions。如果不指定 root 或 adb 权限,则默认用 getDefaultShellOptions 获取的默认值。
示例
"nodejs";
const { createRootAutomator2 } = require("root_automator");
const { delay } = require("lang");
const { device } = require("device");
const { screenWidth, screenHeight } = device;
async function main() {
const ra = await createRootAutomator2({ root: true });
await ra.tap(200, 200);
await delay(1000);
await ra.press(screenWidth / 2, screenHeight / 2, 500);
await delay(1000);
await ra.swipe(500, 800, 500, 1000, 300);
await delay(1000);
let p0 = {
x: screenWidth / 6,
y: screenHeight / 6,
};
let p1 = {
x: screenWidth - p0.x,
y: screenHeight - p0.y,
};
ra.touchDown([
{ x: p0.x, y: p0.y, id: 0 },
{ x: p1.x, y: p1.y, id: 1 },
]);
const steps = 20;
const stepX = Math.round((p1.x - p0.x) / steps) / 2;
const stepY = Math.round((p1.y - p0.y) / steps) / 2;
for (let i = 0; i < steps; i++) {
ra.touchMove([
{ x: p0.x + stepX * i, y: p0.y + stepY * i, id: 0 },
{ x: p1.x - stepX * i, y: p1.y - stepY * i, id: 1 },
]);
}
await ra.touchUp();
await ra.flush();
await ra.exit();
}
main().catch(console.error);参数
| 名称 | 类型 | 描述 |
|---|---|---|
options | ShellOptions | 创建 RootAutomator2 的选项 |
返回值
Promise<RootAutomator2>
返回一个 Promise,resolve 时返回 RootAutomator2 对象。
