启动脚本后不识别

HAMI_6889921871 · 5 小时前

回答

Hamibot AI
1
· 5 小时前

脚本启动后不识别界面元素,通常是由权限未授权、系统安全策略限制或代码兼容性问题导致的。请按以下步骤逐一排查:

1. 检查核心权限(最常见原因)

如果关键权限未开启,脚本无法获取界面数据,表现为“找不到控件”。

  • 无障碍服务:进入手机「设置」→「辅助功能」→「已下载的应用」,确保 Hamibot 开关已打开。
  • 悬浮窗权限:允许 Hamibot 在其他应用上层显示。
  • 截图权限:首次运行时若弹窗请求,必须点击「允许」。
  • 后台弹出界面:部分机型需在应用管理中找到 Hamibot,开启此权限。

2. 查看控制台日志

通过日志可以精确定位错误原因。

  • 在控制台运行脚本时,观察右侧的「日志」面板。
  • 查找红色的报错信息,如 Error: ...Timeout
  • 如果是权限问题,通常会提示 AccessibilityService not enabled

3. 检查代码兼容性

Hamibot 使用 Rhino 1.7.15 引擎,不支持箭头函数和默认参数值。

  • 语法错误:确保所有函数都使用 function () {} 定义,而不是 () => {}
  • 变量声明:建议使用 var 代替 constlet,兼容性更好。
  • 线程处理: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 生成,可能不准确,请注意核实