root_automator - Root坐标操作


root_automator - Root坐标操作

RootAutomator是一个使用root权限或adb权限来模拟触摸的对象,用它可以完成触摸与多点触摸,并且这些动作的执行没有延迟。相比起基于无障碍的操作,RootAutomator支持多点触控和动态改变手势。

提示

从Pro 9.3开始,推荐使用createRootAutomator2来代替RootAutomator,相比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>


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>