AutoJs6 中文文档 下载 App

布局分析器 — 像 LayoutInspector 一样看控件

工具定位

布局分析器(Layout Inspector)是 Android Studio 提供的用于分析应用界面控件树的开发工具。AutoJs6 在浮动按钮中内置了类似功能——无需连接电脑、无需开发环境,在手机上直接分析任何应用的界面控件。

┌─────────────────────────┐
│     被分析的应用界面      │
│  ┌─────┬─────┬─────┐    │
│  │TextView│Button│EditText│   ← 半透明线条切割控件边界
│  └─────┴─────┴─────┘    │
│                         │
│  点击控件 → 查看属性      │
│  或 → 生成选择器代码      │
└─────────────────────────┘

启动方法

  1. 打开要分析的应用,让目标界面显示在前台
  2. 从 AutoJs6 浮动按钮点击 🔍 布局分析
  3. 浮动按钮切换为分析模式
  4. 界面上各个控件被半透明线条分割显示

三种分析模式

布局范围分析(推荐新手)

浮动按钮默认进入此模式。屏幕上会出现半透明覆盖层,用线条切割显示每个控件的边界范围:

  1. 点击感兴趣的控件区域
  2. 弹出控件属性详情面板
  3. 面板底部提供操作选项

查看控件信息

点击控件后,弹出的面板显示该控件的全部属性:

┌───────────────────────┐
│ 控件信息               │
├───────────────────────┤
│ className: Button      │
│ id: btn_login          │
│ text: 登录              │
│ desc: null             │
│ bounds: [200,800,880,920] │
│ clickable: true        │
│ enabled: true          │
│ childCount: 0          │
│ depth: 8               │
├───────────────────────┤
│ [生成代码]  [复制ID]   │
└───────────────────────┘

生成选择器代码

点击面板上的「生成代码」按钮,AutoJs6 会自动根据当前控件的可用属性生成选择器表达式:

// 优先用 id(最稳定)
id("btn_login").click();

// 没有 id 时用 text
text("登录").click();

// 都没有时用 className + bounds
className("Button").bounds(200, 800, 880, 920).click();

多选择器建议

如果控件的定位属性不稳定(如 text 随语言变化),分析器可能会同时给出多个备选:

// 方案一:id(最优先)
id("btn_login").click();

// 方案二:desc(如果有)
desc("login button").click();

// 方案三:text + className + 位置兜底
className("Button").text("登录").click();

分析器内的操作

切换应用

在分析模式下,可以直接点击其他应用的界面元素,分析器会自动适配新的前台应用。

返回上级控件

某些子控件嵌套很深,可以从属性面板向上浏览父控件链:

ImageView "图标"
  └── LinearLayout (父)
       └── ConstraintLayout (祖父)
            └── ...

结束分析

再次点击浮动按钮或按返回键结束布局分析模式。

在脚本中调用

布局分析器也可以通过代码触发:

// 打开布局分析器界面
app.openLayoutInspector();

// 或者直接输出当前界面的控件树
let root = auto.getRoot();
function printTree(node, indent) {
    console.log(indent + node.className() + 
        (node.text() ? ' "' + node.text() + '"' : '') +
        (node.id() ? ' id=' + node.id() : ''));
    let children = node.children();
    for (let child of children) {
        printTree(child, indent + "  ");
    }
}
printTree(root, "");

实战:分析一个登录界面

假设你要为一个登录应用写自动化脚本,但不知道控件的 id 和属性:

  1. 打开应用 → 进入登录界面
  2. 开启布局分析 → 点击浮动按钮 🔍
  3. 点击用户名输入框 → 看到 id: et_username, className: EditText
  4. 点击密码输入框 → 看到 id: et_password, className: EditText
  5. 点击登录按钮 → 看到 id: btn_login, text: 登录, className: Button
  6. 点击生成代码 → 复制到脚本中使用

生成的脚本:

id("et_username").setText("myaccount");
id("et_password").setText("mypassword");
id("btn_login").click();

深色模式适配

布局分析器完全支持 AutoJs6 的夜间模式。在深色主题下,覆盖层线条颜色和属性面板背景会自动切换为深色,不影响使用体验。

常见问题

Q: 某些应用中控件显示为一个大框? A: 部分应用(尤其是游戏、WebView)不向无障碍服务暴露内部控件结构,只能看到一个整体容器。这种情况需要用坐标点击或图像识别代替。

Q: 布局分析时界面闪烁? A: 分析器会不断刷新控件树,部分应用在频繁刷新时可能轻微闪烁。这是正常现象,结束分析后恢复。

Q: 生成的代码在不同设备上 bounds 不一样? A: 是的,bounds() 使用绝对坐标,在不同分辨率设备上会失效。优先使用 id() 或 text() 选择器。