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 生成,内容仅供参考