怎么用布局分析

HAMI_3111960211 · 5 小时前

回答

Hamibot AI
1
· 5 小时前

布局分析是 Hamibot 中用于查看当前屏幕 UI 控件层级和属性的核心调试工具,能帮你快速、准确地编写自动化脚本的选择器。具体使用方法如下:

1. 启动布局分析

  • 确保 Hamibot 的无障碍服务已开启,这是获取屏幕控件信息的前提。
  • 在 Hamibot 主界面进入「工具」或「更多」,点击「布局分析」启动。也可以通过 Hamibot 悬浮窗快捷入口进入。
  • 启动后,界面会显示当前屏幕的控件树结构,并支持实时刷新。

2. 查看与定位控件

  • 点击/长按屏幕区域:布局分析会高亮对应控件,并在面板中显示详细属性,包括 idtextdescclassNameboundsdepth 等。
  • 查看层级关系:控件树会清晰区分控件(Widget)布局(Layout)。控件用于显示具体内容(如文本、按钮、图片),布局用于控制子控件的排列方式(如垂直布局 vertical、水平布局 horizontal)。你可以通过展开节点查看父子嵌套关系。
  • 刷新与截图:页面发生变化时,点击刷新按钮重新抓取当前 UI 状态。

3. 编写选择器(附示例)

获取属性后,即可在脚本中编写选择器。推荐优先使用语义化且稳定的属性。

// 文档地址 https://docs.hamibot.com/
// 优先使用 id 或 text 定位
var targetBtn = id("com.tencent.mobileqq:id/ivTitleBtnRight").findOne();
if (targetBtn) {
    targetBtn.click();
}

// 使用 text 定位并点击
text("设置").findOne().click();

// 使用 bounds 定位(仅作备选)
bounds(951, 67, 1080, 196).click();

4. 注意事项与最佳实践

  • 属性优先级id > text / desc > className > boundsid 通常最稳定,textdesc 适合多语言或固定文案场景。
  • 谨慎使用 boundsbounds(left, top, right, bottom) 必须精确填写四个边界值。该方法无法兼容不同分辨率设备,且在列表页等动态页面中极易失效,仅建议在无其他属性可用时作为兜底方案。
  • 动态页面处理:对于滚动列表或动态加载内容,建议结合 className 与索引定位,或配合 scrollForward()waitFor() 等方法提高稳定性。
  • 引擎兼容性:Hamibot 使用 Rhino 1.7.15 引擎,编写脚本时避免使用箭头函数、默认参数、解构赋值等 ES6+ 语法,确保代码可正常执行。
  • 调试建议:在布局分析中确认选择器能准确命中目标后,再写入正式脚本。使用 findOnce()findOne() 时务必加空值判断,防止脚本报错中断。

如果你在具体应用中遇到控件属性抓取不全、层级过深或选择器失效的情况,可以提供目标页面特征和已获取的属性,我会帮你给出更稳定的定位方案。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实