Hamibot针对微信小程序中,请问1)在购物车界面中,原本需要依次点击到店取和送到家两个按钮,才能刷新,hamibot是否有相关功能,实现对按钮的点击和自动刷新或局部刷新? 2)怎么样多线程快速查找某些按钮或元素?3)怎样实现上方已有窗口的情况下,直接点击窗口下方的特定控件按钮?4)如何提速脚本与手机的交互速度?
回答
- 自动点击与刷新
 Hamibot 可以通过控件定位技术实现按钮点击和刷新。你需要使用类似以下的代码,根据实际按钮的id或文本内容调整选择器:
// 文档地址 https://docs.hamibot.com/
if (text("到店取").exists()) {
    text("到店取").findOnce().click(); // 点击第一个按钮
}
if (text("送到家").exists()) {
    text("送到家").findOnce().click(); // 点击第二个按钮
}
// 刷新页面逻辑(如滑动或重新加载)
scrollUp(); // 示例滚动操作触发刷新
- 多线程快速查找元素
 利用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);
    }
});
- 点击被窗口遮挡的控件
 通过boundsInside()方法限定搜索区域,或使用无障碍服务强制交互:
// 文档地址 https://docs.hamibot.com/
// 方案一:按文本范围定位
text("下方按钮").findOnce().parent().click();
// 方案二:精确坐标点击(需调试获取坐标)
gesture(1000, [500, 1000], [501, 1001]); // 微小滑动触发无障碍焦点转移
click(800, 2000); // 假设目标按钮坐标为(800,2000)
- 提升交互速度
- 减少阻塞操作:用 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 生成,内容仅供参考