Autox.js 中文文档 下载 App

Autox.js 悬浮窗录制 让 Autox.js 自动生成操作脚本

不想写代码?让 Autox.js 帮你写

Autox.js 的悬浮窗录制功能可以录制你在手机上的操作动作,然后自动生成对应的 JavaScript 脚本。这是快速入门和理解 API 的好方法——你做一遍、看一遍生成的代码,就知道 click()、swipe()、gesture() 这些函数怎么用了。

录制按钮在哪里

打开 Autox.js 后,屏幕边缘会出现一条悬浮控制条(如果没看到,检查悬浮窗权限)。控制条上有几个按钮,其中红色圆形的就是录制按钮。

悬浮窗控制条
悬浮窗是 Autox.js 的核心交互面板

录制步骤

  1. 确保已经开启无障碍服务
  2. 点击悬浮窗上的 红色录制按钮 → 系统弹出"开始录制"确认
  3. 切到你要自动化的 App,正常操作(点按钮、滑屏幕、切页面)
  4. 操作完了,回到 Autox.js 或直接在悬浮窗上点 停止按钮
  5. 系统会自动把录制动作转成 JS 代码,保存为脚本文件

录制生成的代码长什么样

假设你录了一段"打开 App → 点登录按钮 → 输入账号密码"的操作,生成的代码大概是这样:

// 自动生成的录制脚本
auto.rootFolder = "/sdcard/脚本/录制_20261014_213056.js";

// 启动目标 App
launchApp("com.example.app");
sleep(2000);

// 等待登录按钮出现并点击
text("登录").findOne().click();
sleep(500);

// 输入账号
id("username_input").findOne().setText("myaccount");
sleep(300);

// 输入密码
id("password_input").findOne().setText("123456");
sleep(300);

// 点击确认
text("确认").findOne().click();

可以看到,录制器不是简单地记坐标(那是按键精灵的做法)——它尽量生成基于控件属性的选择器代码(text()、id() 等),这就是 Autox.js 跨分辨率稳定性的体现。

改进录制代码

自动生成的代码能用,但不完美。常见的改进点:

1. 替换坐标操作为控件选择器

如果录制器没找到合适的控件,会退化为坐标操作:

// 录制生成的坐标版——不推荐
click(540, 1200);

// 改进:改用控件选择器
text("确定").findOne().click();

2. 调整等待时间

录制器会在操作之间插入固定的 sleep()。这些时间是你操作时的实际间隔,偏长:

// 录制生成的——sleep 太长
sleep(2500);

// 改进:用 findOne 自动等待
text("欢迎使用").findOne(10000);  // 最多等 10 秒,控件出现就继续

3. 用 try-catch 包裹

录制生成的代码没有错误处理,如果哪一步找不到控件,后面全部白跑:

try {
    launchApp("com.example.app");
    if (!text("登录").findOne(10000)) {
        throw new Error("登录页加载超时");
    }
    text("登录").findOne().click();
    // ...后续步骤
} catch (e) {
    toast("脚本出错:" + e.message);
}

录制生成的局限性

录制器有几个天然的短板,使用时要有预期:

问题原因对策
找不到控件时退化为坐标部分 App(尤其是游戏)不暴露控件树手动改成图像识别(见图像识别模块页)
sleep 时间不精准录制间隔是你的反应时间,不是加载时间改成 findOne(timeout) 或 until()
不处理异常录制只记录"理想路径",不考虑加载失败、弹窗手动加异常处理
不识别滑动方向某些滑动操作录制器可能记错方向手动检查 swipe() 参数

录制 vs 手写:什么时候用哪个

场景推荐方式
想快速了解 API 怎么用录制 → 看生成的代码
只写一次的简单操作录制(偶尔跑一次,不用太精确)
需要长期稳定运行的脚本手写(更好的错误处理、更精准的等待)
游戏场景(无控件树)录制坐标 → 手动改成图像识别 + OpenCV