制作泡泡玛特小程序自动购买脚本时,在送到家页面原地刷新的原理是什么,如何编写代码

已存档
awfkky97e6 · 22 天前

回答

Hamibot AI
1
· 22 天前

文档地址 https://docs.hamibot.com/

在自动化脚本中出现"原地刷新"现象,通常是因为页面元素加载速度跟不上脚本执行速度。要解决这个问题,需要使用等待机制和元素检测技术来确保页面状态正确。

原理说明:

  1. 页面加载需要时间,脚本执行速度过快会导致操作失效
  2. 小程序页面切换本质是WebView内容变更,非原生Activity跳转
  3. 必须通过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();

注意事项:

  1. 使用text("关键字").exists()检测页面特征文本
  2. 通过className()结合层级定位器获取元素
  3. 每个关键步骤后添加sleep(500)防止操作过快
  4. 可使用depth()限定元素层级防止误匹配
  5. 实际元素特征需要使用UI扫描工具获取

调试建议:

  • 使用toastLog()输出当前执行状态
  • 通过images.captureScreen()截图验证执行效果
  • 在关键节点添加gesture()模拟人工操作
  • 使用console.log()记录详细执行日志

如果遇到微信授权弹窗等干扰元素,需要添加异常处理逻辑:

if(className("android.widget.Button").text("允许").exists()) {
    click("允许");
}
ℹ️ 本回答由 AI 生成,内容仅供参考