AutoJs6 中文文档 下载 App

脚本录制与回放 — 不会写代码也能自动化

录制功能定位

脚本录制是 AutoJs6 最贴心的功能——完全不需要写代码,只要你会用手机就能生成自动化脚本。它的原理:在无障碍服务层面监听你的每一次触摸操作,自动转换为对应的脚本代码。

录制模式开启中
┌──────────────────────────────┐
│  你在做什么          记录成什么  │
│  点击「登录」    →  click(...) │
│  滑动屏幕        →  swipe(...) │
│  输入「账号」    →  input(...)  │
│  切换应用        →  launchApp  │
└──────────────────────────────┘

开始录制

  1. 确保无障碍服务已开启
  2. 打开要操作的应用
  3. 点击 AutoJs6 浮动按钮 → ⏺ 录制
  4. 浮动按钮变成红色,表示录制中
  5. 正常操作手机(点击、滑动、输入等)
  6. 完成操作后再次点击浮动按钮 → 停止录制
  7. AutoJs6 自动打开生成的脚本

录制内容详解

会被录制的操作

操作类型录制结果示例
点击控件id("xxx").click() 或 click(x, y)优先用控件定位,兜底用坐标
长按longClick(x, y)-
滑动swipe(x1, y1, x2, y2, duration)记录轨迹和时长
输入文字input("输入内容")逐个字符记录
切换应用app.launchApp("应用名")-
按返回键back()-
按 Home 键home()-

不会被录制的

生成的脚本长什么样

// 录制自动生成的脚本示例

"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);

脚本说明

回放录制脚本

录制完的脚本就是普通 .js 文件,和手写脚本用法完全一样:

// 保存后可以直接运行
// 也可以后续手动优化

// 优化示例:把固定坐标改成控件选择器
// click(270, 980);
// ↓ 改成更稳定的:
text("更多设置").findOne().click();

录制技巧

让录制更精准

  1. 先打开布局分析:录制前先用布局分析器确认控件有唯一 id,录制生成的脚本会优先用 id
  2. 慢一点操作:操作太快,sleep 间隔太短可能导致脚本执行时应用还没加载完
  3. 避免误操作:录制时专注做目标动作,不要点错
  4. 在稳定界面录制:不要在加载中的界面操作

录制后优化

录制脚本 → 运行测试 → 根据实际情况优化:

1. sleep 间隔调大一点(给应用加载留时间)
2. 固定坐标改成控件选择器
3. 添加异常处理(找不到控件怎么办)
4. 添加日志输出方便调试
5. 把重复操作封装成函数

局限性

问题原因解决
生成大量 sleep记录了所有时间间隔运行时观察哪些 sleep 可以删
可能用坐标兜底控件没有可用的定位属性手动改成选择器定位
一次只录一套操作无法录循环、条件判断录完后手动加控制流
依赖录制时的界面状态换设备 / 换版本可能失效尽量用控件选择器

实战:录制一个登录脚本

录制过程

  1. 打开浮动按钮 → 开始录制
  2. 打开「设置」应用
  3. 等待加载(1 秒)
  4. 点击「搜索」框
  5. 输入「字体」
  6. 等待搜索结果(1 秒)
  7. 点击「字体大小」
  8. 调整滑块到想要的位置
  9. 按返回键
  10. 停止录制 → 保存脚本

优化后的脚本

/**
 * 设置字体大小的自动化脚本
 * 录制后优化版本
 */
"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("字体设置完成");