auto.js 中文文档 下载 App

ID、类名与包名选择器——更稳定的控件定位方式

resource-id(资源 ID)

每个 Android 控件在源码里可以赋一个唯一 ID,布局分析器里显示为类似 com.taobao.taobao:id/rl_search 的值。

id("rl_search").click();                     // 简写(可能有重名风险)
id("com.taobao.taobao:id/rl_search").click(); // 完整写法,推荐

优点:稳定,APP 改版通常不会随意改 ID(改 ID 会破坏其他引用)。

缺点:不是所有控件都有 ID,部分动态生成的控件 ID 为空或每次不同。

查看 ID

布局分析器里点目标控件,属性详情里的 id 字段就是完整 ID,点一下复制。

实战

// 淘宝搜索框
id("com.taobao.taobao:id/rl_search").click();
sleep(300);
setText("连衣裙");

className(类名)

按控件类型匹配:

className("android.widget.Button").click();
className("android.widget.ImageView").click();
className("android.widget.EditText").findOne(); // 找第一个输入框

优点:不依赖具体 APP,通用性强。缺点:太泛,一个界面上可能有几十个 ImageView。

配合其他条件缩小范围

// 找到一个既是 Button、又是「确定」按钮的控件
className("Button").text("确定").click();

packageName(包名)

按控件所属的包过滤——在跨应用场景有用:

packageName("com.taobao.taobao").className("Button").click();

通常不需要单独用 packageName,因为 Auto.js 已经只看当前前台应用的控件。

综合选择器(组合匹配)

多种条件链式组合,优先级更高:

// 找到同时满足这三个条件的控件
id("btn_submit")
  .className("android.widget.Button")
  .textContains("提交")
  .click();

链式组合是 Auto.js 选择器最强大的用法——条件越精确,匹配越准。

优先级建议

定位控件时的推荐优先级:

  1. resource-id(最稳、最精确)
  2. text + className 组合
  3. textContains 或 descContains
  4. className + bounds(限制在某个区域内)
  5. 纯 className(兜底,最差选择)
  6. 坐标点击(最后手段)