回答
点击"去完成"按钮的解决方案
在 Hamibot 中,有几种方式可以定位并点击"去完成"按钮,按推荐顺序如下:
方案一:使用控件选择器(推荐)
通过 text 属性直接查找"去完成"文字对应的控件:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 查找 text 为"去完成"的控件并点击
var btn = text('去完成').findOne();
if (btn) {
btn.click();
toastLog('点击成功');
} else {
toastLog('未找到去完成按钮');
}
如果上述方式不行,可以尝试结合父控件定位:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 先找到"发日常"控件,再查找其附近的"去完成"
var dailyText = text('发日常').findOne();
if (dailyText) {
// 在父容器中查找去完成按钮
var btn = dailyText.parent().text('去完成').findOne();
if (btn) {
btn.click();
toastLog('点击成功');
}
}
方案二:使用图像识别找图
如果控件选择器无法定位,可以使用截图找图的方式:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
sleep(1000);
// 读取本地保存的"去完成"按钮截图
var template = images.read('/sdcard/去完成按钮.png');
if (!template) {
toastLog('未找到模板图片');
hamibot.exit();
}
// 截图并找图
var img = captureScreen();
var p = images.findImage(img, template, {
threshold: 0.8
});
if (p) {
// 点击找到的位置(点击控件中心)
click(p.x + template.width / 2, p.y + template.height / 2);
toastLog('点击成功:' + p);
} else {
toastLog('未找到去完成按钮');
}
hamibot.exit();
方案三:使用坐标点击
如果以上方式都不可行,可以使用固定坐标:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 需要先通过开发者选项或 Hamibot 的坐标显示功能获取按钮坐标
// 假设坐标为 (900, 500)
click(900, 500);
toastLog('已点击坐标 (900, 500)');
调试建议
- 开启布局分析:在 Hamibot 设备设置中开启"显示布局边界",帮助识别控件属性
- 使用控件检测:运行
auto.waitFor()后,使用className(),id(),text()等打印控件信息 - 添加等待时间:页面加载可能需要时间,适当使用
sleep()或waitFor()
常见问题排查
| 问题 | 解决方案 |
|---|---|
| 找不到控件 | 检查是否需要先滚动页面,使用 scrollDown() |
| 控件在 WebView 中 | 尝试开启 WebView 调试或使用图像识别 |
| 按钮动态加载 | 添加循环等待逻辑,最多等待 N 秒 |
如果以上方案都无法解决,可以提供更多页面信息(如控件树、应用名称等),以便进一步分析。
ℹ️ 本回答由 AI 生成,内容仅供参考
如何能点击到图片中,发日常后面的去完成按钮