回答
制作自动开宝箱并观看广告的脚本,核心是通过 Hamibot 的无障碍服务定位界面控件,模拟点击、等待与返回操作。以下为完整实现方案:
1. 前置准备
- 在设备设置中开启 Hamibot 的无障碍服务权限。
- 确保目标应用已安装,且脚本运行时处于前台。
- 使用 Hamibot 客户端的「布局分析」功能,获取宝箱按钮、广告关闭按钮、领取奖励按钮的准确属性(
text、id或desc)。
2. 标准脚本模板
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 替换为目标应用的实际控件属性
var chestBtnText = "开启宝箱";
var adCloseBtnText = "关闭广告";
var rewardBtnText = "领取奖励";
var maxLoop = 10;
function runOnce() {
// 1. 点击宝箱
var chest = text(chestBtnText).findOne(3000);
if (!chest) {
toast("未找到宝箱按钮");
return false;
}
chest.click();
sleep(2000);
// 2. 等待广告播放(建议根据实际广告时长调整)
toast("正在观看广告...");
sleep(20000);
// 3. 关闭广告
var closeBtn = text(adCloseBtnText).findOne(3000);
if (closeBtn) {
closeBtn.click();
sleep(1000);
}
// 4. 领取奖励
var reward = text(rewardBtnText).findOne(3000);
if (reward) {
reward.click();
sleep(1500);
}
return true;
}
// 主循环
for (var i = 0; i < maxLoop; i++) {
toast("第 " + (i + 1) + " 次执行");
if (!runOnce()) {
toast("执行中断");
break;
}
sleep(2000);
}
toast("脚本运行结束");
3. 关键适配方法
- 精准定位控件:优先使用
id()或desc(),其次使用text()。若控件文本动态变化,可使用textContains()或className()配合findOne()。 - 动态等待替代固定休眠:将
sleep(20000)替换为text("跳过").waitFor(30000)或id("ad_close_btn").waitFor(30000),可大幅提升脚本响应速度。 - 处理意外弹窗:在循环开头加入
if (text("确定").exists()) { text("确定").click(); sleep(500); }拦截系统或应用弹窗。
4. 稳定性与防风控最佳实践
- 添加随机延迟:
sleep(Math.floor(Math.random() * 800) + 400)模拟人工操作间隔。 - 避免无限循环:设置最大执行次数或运行时长,防止应用卡死或触发安全策略。
- 定期重置界面:每执行 3~5 次后调用
back()或home()返回主界面,防止层级过深导致控件查找失败。 - 开启调试日志:在 Hamibot 控制台将日志级别设为
DEBUG,通过log()输出控件匹配状态,快速定位失败节点。
5. 注意事项
- 自动化操作需遵守目标应用的用户协议,避免用于违规刷量或破坏正常服务秩序。
- 部分应用会检测无障碍服务或高频模拟点击,建议控制执行频率,并优先使用官方提供的奖励领取接口(如有)。
- 若脚本在特定机型上失效,通常是因为控件属性随版本更新变化,需重新使用布局分析获取最新选择器。
按上述模板替换控件属性后,即可在 Hamibot 中创建并运行脚本。如需针对特定应用优化选择器或处理复杂广告交互,可提供具体界面控件信息,我将为你调整匹配逻辑。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实