回答
通过 ocr.recognizeText() 识别文字后,无法直接获得对应按钮的控件对象,因为 OCR 返回的是纯文本及其在图像中的坐标区域(rect),而非无障碍控件。但你可以利用返回的坐标信息进行点击。
正确做法:使用 OCR 返回的坐标点击
// 文档地址 https://docs.hamibot.com/
var img = captureScreen();
var result = ocr.recognizeText(img);
// 遍历识别结果,查找目标文字
for (var i = 0; i < result.length; i++) {
var item = result[i];
if (item.text.indexOf("目标文字") >= 0) {
// 获取文字区域中心坐标
var rect = item.rect;
var x = (rect.left + rect.right) / 2;
var y = (rect.top + rect.bottom) / 2;
// 点击该位置
click(x, y);
break;
}
}
⚠️ 注意:
ocr.recognizeText()返回的坐标是相对于截图的像素位置,与屏幕实际坐标一致(前提是未缩放)- 此方法适用于无障碍无法识别的界面(如游戏、Flutter、Unity 应用)
- 确保已开启「截图权限」和「OCR 权限」
补充建议
- 增加容错:对坐标加随机偏移避免固定点击被检测
x += random(-10, 10); y += random(-10, 10); - 验证识别结果:打印所有识别内容调试
log(JSON.stringify(result));
此方法是 Hamibot 中处理非标准控件点击的标准方案。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实