Hamibot 脚本开发常用模式与技巧
等待控件出现
自动化脚本最常见的模式:执行一个操作 → 等待某个界面变化。
findOne 自带等待
// 默认最多等 10 秒,找到才继续
text("确认").findOne();
// 自定义超时 5 秒
text("确认").findOne(5000);
findOnce 立即检查
// 不确定控件是否存在,立即检查
const btn = text("加载更多").findOnce();
if (btn) {
btn.click();
} else {
// 控件不存在,跳过
}
while 轮询
// 直到文本出现,每 500ms 检查一次
while (!text("到货了").findOnce()) {
sleep(500);
}
text("到货了").findOne().click();
循环模式
固定次数循环
for (let i = 0; i < 10; i++) {
text("刷新").findOne().click();
sleep(2000);
}
条件循环
// 只要还有商品就继续
while (text("有货").findOnce()) {
click(500, 800);
sleep(1000);
}
异常处理
try-catch 包裹关键操作
try {
text("开始").findOne(3000).click();
} catch (e) {
log('没找到开始按钮,跳过本次');
}
全局异常监听
events.on('exit', () => {
// 脚本退出时清理资源
log('脚本已退出');
});
日志与调试
常用日志函数
| 函数 | 效果 |
|---|---|
log("消息") | 控制台输出日志 |
toast("提示") | 屏幕弹出短 Toast |
toastLog("提示") | 同时 Toast + 控制台日志 |
console.log("调试") | 标准输出 |
控制台远程调试
在控制台设备详情页可以看到实时日志输出,调试时非常方便。也可以用远程调试功能在电脑浏览器上查看设备当前界面和控件树。
常用全局对象
| 对象 | 用途 |
|---|---|
auto | 无障碍服务相关 |
app | APP 启停、包信息 |
device | 设备信息(分辨率、电池等) |
sleep(ms) | 等待指定毫秒数 |
hamibot.exit() | 主动退出脚本 |
hamibot.config | 读取脚本配置项 |
开发调试建议
- 先用 findOnce 不阻塞的方式,确认控件存在再换成 findOne 带等待
- 小步快跑:写一段跑一段,而不是一次写完再测
- 善用控制台日志:实时看输出比盲猜高效
- 远程调试看控件树:不确定选什么选择器时,远程调试能直接看到屏幕上的所有控件属性