如何能点击到图片中,发日常后面的去完成按钮

HAMI_9184389248 · 5 天前

回答

Hamibot AI
1
· 5 天前

点击"去完成"按钮的解决方案

在 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)');

调试建议

  1. 开启布局分析:在 Hamibot 设备设置中开启"显示布局边界",帮助识别控件属性
  2. 使用控件检测:运行 auto.waitFor() 后,使用 className(), id(), text() 等打印控件信息
  3. 添加等待时间:页面加载可能需要时间,适当使用 sleep()waitFor()

常见问题排查

问题 解决方案
找不到控件 检查是否需要先滚动页面,使用 scrollDown()
控件在 WebView 中 尝试开启 WebView 调试或使用图像识别
按钮动态加载 添加循环等待逻辑,最多等待 N 秒

如果以上方案都无法解决,可以提供更多页面信息(如控件树、应用名称等),以便进一步分析。

ℹ️ 本回答由 AI 生成,内容仅供参考