回答
脚本启动后不识别界面元素,通常是由权限未授权、系统安全策略限制或代码兼容性问题导致的。请按以下步骤逐一排查:
1. 检查核心权限(最常见原因)
如果关键权限未开启,脚本无法获取界面数据,表现为“找不到控件”。
- 无障碍服务:进入手机「设置」→「辅助功能」→「已下载的应用」,确保 Hamibot 开关已打开。
- 悬浮窗权限:允许 Hamibot 在其他应用上层显示。
- 截图权限:首次运行时若弹窗请求,必须点击「允许」。
- 后台弹出界面:部分机型需在应用管理中找到 Hamibot,开启此权限。
2. 查看控制台日志
通过日志可以精确定位错误原因。
- 在控制台运行脚本时,观察右侧的「日志」面板。
- 查找红色的报错信息,如
Error: ...或Timeout。 - 如果是权限问题,通常会提示
AccessibilityService not enabled。
3. 检查代码兼容性
Hamibot 使用 Rhino 1.7.15 引擎,不支持箭头函数和默认参数值。
- 语法错误:确保所有函数都使用
function () {}定义,而不是() => {}。 - 变量声明:建议使用
var代替const或let,兼容性更好。 - 线程处理:UI 操作必须在主线程执行,使用
ui.run()包裹。
4. 系统安全策略限制
高版本安卓系统(Android 10 及以上)对无障碍服务获取界面数据的权限限制更严格。
- 自定义视图:部分 APP 使用 SurfaceView 渲染界面,导致控件树无法读取。此时需改用图像识别方案。
- 隐私保护:部分品牌手机(如小米、华为)有特殊的隐私保护机制,可能屏蔽第三方应用的控件读取。
5. 使用设备调试工具验证
在问题设备上打开 Hamibot App 的「设备调试」页面,查看控件树结构。
- 对比能读取和不能读取的设备,查看缺失的是哪个层级的节点。
- 如果显示为空或只有根节点,说明系统屏蔽了子节点数据。
- 此时必须采用图像识别方案。
6. 切换识别策略(推荐)
当控件树不可用时,放弃基于控件 ID 或文本的查找,改用图像识别或 OCR 文字识别。
代码示例:使用图像匹配代替控件点击
// 文档地址 https://docs.hamibot.com/
function main() {
// 截图当前屏幕
var img = captureScreen();
// 使用模板匹配查找按钮位置
// 注意:你需要提前截取一张目标按钮的图片保存为 template.png
var result = images.matchTemplate(img, 'template.png');
if (result && result.matches > 0) {
var point = result.points[0];
click(point.x, point.y);
toast('通过图像识别点击成功');
} else {
toast('未找到目标图像');
}
}
main();
7. 特殊机型处理
部分品牌手机有特殊的省电或隐私保护机制。
- 关闭电池优化:将 Hamibot 设置为「无限制」耗电模式。
- 锁定后台进程:在多任务界面找到 Hamibot 卡片,长按并点击锁形图标。
- 开发者选项:部分机型可在开发者选项中开启「强制允许模拟点击」。
8. 排除干扰因素
- 其他自动化软件:如果手机安装了 Tasker、按键精灵等其他自动化工具,可能会抢占无障碍服务导致冲突,建议暂时关闭。
- App 版本:旧版本可能存在已知 Bug,请前往官网或应用商店更新到最新版本。
如果以上步骤均无效,请在控制台提交工单,并提供具体的报错日志截图,技术团队会协助分析。详细的技术文档可参考:https://docs.hamibot.com/
ℹ️ 内容由 AI 生成,可能不准确,请注意核实