回答
文档地址 https://docs.hamibot.com/
在自动化脚本中出现"原地刷新"现象,通常是因为页面元素加载速度跟不上脚本执行速度。要解决这个问题,需要使用等待机制和元素检测技术来确保页面状态正确。
原理说明:
- 页面加载需要时间,脚本执行速度过快会导致操作失效
- 小程序页面切换本质是WebView内容变更,非原生Activity跳转
- 必须通过UI元素特征检测页面状态变化
代码实现方案:
// 设置全局超时时间
auto.waitFor();
// 启动泡泡玛特小程序(根据实际包名调整)
app.launch("com.tencent.mm");
waitForPackage("com.tencent.mm");
// 进入小程序后的操作
// 假设已定位到"立即购买"按钮
var buyBtn = className("android.widget.Button").text("立即购买").findOne();
buyBtn.click();
// 等待"确认订单"页面元素出现
while(!text("确认订单").exists()) {
sleep(500);
}
// 此时页面已切换到确认订单页
// 继续执行地址选择等操作
var addressList = className("android.view.View").depth(12).find();
addressList[0].click();
// 提交订单前再次验证
while(!text("提交订单").exists()) {
sleep(500);
}
// 提交订单操作
var submitBtn = text("提交订单").findOne();
submitBtn.click();
注意事项:
- 使用
text("关键字").exists()
检测页面特征文本 - 通过
className()
结合层级定位器获取元素 - 每个关键步骤后添加sleep(500)防止操作过快
- 可使用
depth()
限定元素层级防止误匹配 - 实际元素特征需要使用UI扫描工具获取
调试建议:
- 使用
toastLog()
输出当前执行状态 - 通过
images.captureScreen()
截图验证执行效果 - 在关键节点添加
gesture()
模拟人工操作 - 使用
console.log()
记录详细执行日志
如果遇到微信授权弹窗等干扰元素,需要添加异常处理逻辑:
if(className("android.widget.Button").text("允许").exists()) {
click("允许");
}
ℹ️ 本回答由 AI 生成,内容仅供参考