Hamibot针对微信小程序中,请问1)在购物车界面中,原本需要依次点击到店取和送到家两个按钮,才能刷新,hamibot是否有相关功能,实现对按钮的点击和自动刷新或局部刷新? 2)怎么样多线程快速查找某些按钮或元素?3)怎样实现上方已有窗口的情况下,直接点击窗口下方的特定控件按钮?4)如何提速脚本与手机的交互速度?

已存档
hwnvyt4bxo · 1 个月前

回答

Hamibot AI
1
· 1 个月前
  1. 自动点击与刷新
    Hamibot 可以通过控件定位技术实现按钮点击和刷新。你需要使用类似以下的代码,根据实际按钮的 id 或文本内容调整选择器:
// 文档地址 https://docs.hamibot.com/
if (text("到店取").exists()) {
    text("到店取").findOnce().click(); // 点击第一个按钮
}
if (text("送到家").exists()) {
    text("送到家").findOnce().click(); // 点击第二个按钮
}
// 刷新页面逻辑(如滑动或重新加载)
scrollUp(); // 示例滚动操作触发刷新
  1. 多线程快速查找元素
    利用 threads.start() 创建多个独立线程并行检测元素:
// 文档地址 https://docs.hamibot.com/
threads.start(function () {
    while (true) {
        if (text("目标按钮1").exists()) {
            text("目标按钮1").findOne().click();
            break;
        }
        sleep(500); // 控制检测间隔
    }
});

threads.start(function () {
    while (true) {
        if (id("目标按钮2").exists()) {
            id("目标按钮2").findOne().click();
            break;
        }
        sleep(500);
    }
});
  1. 点击被窗口遮挡的控件
    通过 boundsInside() 方法限定搜索区域,或使用无障碍服务强制交互:
// 文档地址 https://docs.hamibot.com/
// 方案一:按文本范围定位
text("下方按钮").findOnce().parent().click();

// 方案二:精确坐标点击(需调试获取坐标)
gesture(1000, [500, 1000], [501, 1001]); // 微小滑动触发无障碍焦点转移
click(800, 2000); // 假设目标按钮坐标为(800,2000)
  1. 提升交互速度
  • 减少阻塞操作:用 findOnce() 代替 findOne() 避免无限等待
  • 优化线程调度:将耗时任务放入 threads.start() 独立执行
  • 关闭冗余服务:在无障碍设置中仅保留 Hamibot 的权限
  • 硬件加速配置:开发者选项中启用 GPU 渲染分析(部分机型有效)

完整示例脚本:

// 文档地址 https://docs.hamibot.com/
requestScreenCapture(); // 请求截图权限

// 并行监控两个按钮
["到店取", "送到家"].forEach(label => {
    threads.start(function () {
        while (true) {
            let btn = text(label).findOne(1000); // 超时时间1秒
            if (btn && boundsInside(btn.bounds(), 0, 0, device.width, device.height * 0.8).clickable()) {
                btn.click();
                break;
            }
        }
    });
});

// 滚动刷新购物车
scrollUp();
sleep(2000); // 等待刷新完成

// 查找并点击底部控件
text("立即下单").findOnce().click();
ℹ️ 本回答由 AI 生成,内容仅供参考