脚本录制与回放 — 不会写代码也能自动化
录制功能定位
脚本录制是 AutoJs6 最贴心的功能——完全不需要写代码,只要你会用手机就能生成自动化脚本。它的原理:在无障碍服务层面监听你的每一次触摸操作,自动转换为对应的脚本代码。
录制模式开启中
┌──────────────────────────────┐
│ 你在做什么 记录成什么 │
│ 点击「登录」 → click(...) │
│ 滑动屏幕 → swipe(...) │
│ 输入「账号」 → input(...) │
│ 切换应用 → launchApp │
└──────────────────────────────┘
开始录制
- 确保无障碍服务已开启
- 打开要操作的应用
- 点击 AutoJs6 浮动按钮 → ⏺ 录制
- 浮动按钮变成红色,表示录制中
- 正常操作手机(点击、滑动、输入等)
- 完成操作后再次点击浮动按钮 → 停止录制
- AutoJs6 自动打开生成的脚本
录制内容详解
会被录制的操作
| 操作类型 | 录制结果 | 示例 |
|---|---|---|
| 点击控件 | id("xxx").click() 或 click(x, y) | 优先用控件定位,兜底用坐标 |
| 长按 | longClick(x, y) | - |
| 滑动 | swipe(x1, y1, x2, y2, duration) | 记录轨迹和时长 |
| 输入文字 | input("输入内容") | 逐个字符记录 |
| 切换应用 | app.launchApp("应用名") | - |
| 按返回键 | back() | - |
| 按 Home 键 | home() | - |
不会被录制的
- 系统级操作(如调整音量、截图)
- 权限弹窗内的操作
- 其他 AutoJs6 自身的 UI 操作
生成的脚本长什么样
// 录制自动生成的脚本示例
"auto";
auto.waitFor();
// 打开目标应用
launchApp("设置");
sleep(1571); // 自动记录操作间隔
// 点击「更多设置」
click(270, 980); // 坐标兜底
// 或更精确的控件定位:
// text("更多设置").click();
sleep(534);
// 滑动屏幕
swipe(540, 1580, 540, 600, 300);
sleep(892);
// 点击「无障碍」
textContains("无障碍").findOne().click();
sleep(1200);
// 滑动到底部
swipe(540, 1500, 540, 800, 250);
sleep(678);
// 长按某区域
longClick(540, 400);
脚本说明
"auto"声明:告诉脚本这是录制生成的自动化脚本auto.waitFor():等待无障碍服务就绪再执行sleep(X):自动记录每次操作之间的间隔(毫秒)click():优先用控件选择器,找不到时用坐标兜底- 录制的脚本可以直接保存、运行、或手动编辑优化
回放录制脚本
录制完的脚本就是普通 .js 文件,和手写脚本用法完全一样:
// 保存后可以直接运行
// 也可以后续手动优化
// 优化示例:把固定坐标改成控件选择器
// click(270, 980);
// ↓ 改成更稳定的:
text("更多设置").findOne().click();
录制技巧
让录制更精准
- 先打开布局分析:录制前先用布局分析器确认控件有唯一 id,录制生成的脚本会优先用 id
- 慢一点操作:操作太快,sleep 间隔太短可能导致脚本执行时应用还没加载完
- 避免误操作:录制时专注做目标动作,不要点错
- 在稳定界面录制:不要在加载中的界面操作
录制后优化
录制脚本 → 运行测试 → 根据实际情况优化:
1. sleep 间隔调大一点(给应用加载留时间)
2. 固定坐标改成控件选择器
3. 添加异常处理(找不到控件怎么办)
4. 添加日志输出方便调试
5. 把重复操作封装成函数
局限性
| 问题 | 原因 | 解决 |
|---|---|---|
| 生成大量 sleep | 记录了所有时间间隔 | 运行时观察哪些 sleep 可以删 |
| 可能用坐标兜底 | 控件没有可用的定位属性 | 手动改成选择器定位 |
| 一次只录一套操作 | 无法录循环、条件判断 | 录完后手动加控制流 |
| 依赖录制时的界面状态 | 换设备 / 换版本可能失效 | 尽量用控件选择器 |
实战:录制一个登录脚本
录制过程
- 打开浮动按钮 → 开始录制
- 打开「设置」应用
- 等待加载(1 秒)
- 点击「搜索」框
- 输入「字体」
- 等待搜索结果(1 秒)
- 点击「字体大小」
- 调整滑块到想要的位置
- 按返回键
- 停止录制 → 保存脚本
优化后的脚本
/**
* 设置字体大小的自动化脚本
* 录制后优化版本
*/
"auto";
auto.waitFor();
// 打开设置
let result = app.launchApp("设置");
if (!result) {
toast("无法打开设置应用");
exit();
}
// 等待设置加载
sleep(1500);
// 搜索"字体"
let searchBtn = textContains("搜索").findOne(3000);
if (searchBtn) {
searchBtn.click();
sleep(300);
input("字体");
} else {
toast("设置界面未加载完成");
exit();
}
sleep(1000);
// 找到字体设置项并点击
let fontItem = textContains("字体").findOne(3000);
if (fontItem) {
fontItem.click();
} else {
toast("未找到字体设置项");
// 搜索结果可能需要滚动
swipe(540, 1500, 540, 800, 300);
sleep(500);
fontItem = textContains("字体").findOne(3000);
if (fontItem) fontItem.click();
}
sleep(1500);
// 调整字体大小(根据实际界面定位)
// ...
home();
toast("字体设置完成");