Autox.js 悬浮窗录制 让 Autox.js 自动生成操作脚本
不想写代码?让 Autox.js 帮你写
Autox.js 的悬浮窗录制功能可以录制你在手机上的操作动作,然后自动生成对应的 JavaScript 脚本。这是快速入门和理解 API 的好方法——你做一遍、看一遍生成的代码,就知道 click()、swipe()、gesture() 这些函数怎么用了。
录制按钮在哪里
打开 Autox.js 后,屏幕边缘会出现一条悬浮控制条(如果没看到,检查悬浮窗权限)。控制条上有几个按钮,其中红色圆形的就是录制按钮。

录制步骤
- 确保已经开启无障碍服务
- 点击悬浮窗上的 红色录制按钮 → 系统弹出"开始录制"确认
- 切到你要自动化的 App,正常操作(点按钮、滑屏幕、切页面)
- 操作完了,回到 Autox.js 或直接在悬浮窗上点 停止按钮
- 系统会自动把录制动作转成 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 |