回答
以下是为你编写的淘宝自动打开并执行红包签到任务的 Hamibot 脚本模板。该脚本基于 UI 自动化实现,已适配 Rhino 1.7.15 引擎,并包含基础容错与弹窗处理逻辑。
// 文档地址 https://docs.hamibot.com/
"auto";
function main() {
// 1. 启动淘宝应用
app.launchApp("淘宝");
sleep(3000); // 等待首页基础加载
// 2. 定位签到/红包入口(名称可能随版本更新变化)
var entry = textContains("签到").findOne(5000)
|| textContains("领红包").findOne(5000)
|| descContains("签到").findOne(5000);
if (entry) {
entry.click();
sleep(2000);
} else {
toast("未找到签到入口,请检查当前页面或更新选择器");
return;
}
// 3. 点击签到按钮
var signBtn = text("签到").findOne(3000)
|| text("立即签到").findOne(3000)
|| desc("签到").findOne(3000);
if (signBtn) {
signBtn.click();
toast("已执行签到");
sleep(2000);
} else {
toast("未找到签到按钮,可能今日已签到或页面未完全加载");
}
// 4. 处理常见弹窗干扰
handlePopups();
}
function handlePopups() {
var closeBtn = text("关闭").findOne(2000)
|| text("我知道了").findOne(2000)
|| desc("关闭").findOne(2000)
|| text("暂不").findOne(2000);
if (closeBtn) {
closeBtn.click();
sleep(1000);
}
}
main();
核心逻辑说明
- 启动应用:使用
app.launchApp("淘宝")直接唤起应用,避免依赖包名硬编码。 - UI 选择器定位:通过
textContains、descContains配合findOne(timeout)进行模糊匹配,提升对淘宝版本迭代的兼容性。 - 容错与超时控制:所有
findOne均设置超时时间,避免脚本无限阻塞。未找到目标时通过toast提示并安全退出。 - 弹窗拦截:签到前后常伴随活动弹窗,
handlePopups函数用于自动关闭干扰层,保证主流程顺畅。
关键注意事项
- 无障碍权限:运行前需在手机设置中为 Hamibot 开启无障碍服务,并授予悬浮窗权限。
- UI 动态变化:淘宝界面更新频繁,若脚本失效,请使用 Hamibot 客户端的“布局分析”工具重新抓取当前页面的
text、desc或id属性,替换脚本中的选择器。 - 反自动化机制:淘宝对高频自动化操作有风控策略。建议在
sleep中增加随机延迟(如sleep(1500 + Math.random() * 1000)),并避免在多台设备或同一账号高频运行。 - 网络与加载:签到页面依赖网络请求,若设备网络较慢,可适当延长
sleep时间或改用waitFor等待特定控件出现。
调试建议
- 在 Hamibot 编辑器中使用“单步执行”或“断点调试”观察 UI 树结构。
- 将
toast替换为log可在控制台查看完整执行轨迹。 - 若需长期稳定运行,建议将脚本封装为定时任务,并添加异常重试逻辑(如连续 3 次未找到入口则终止并上报日志)。
如需针对特定淘宝版本或复杂签到链路(如滑动验证、多步骤任务)进行定制,可提供当前页面的布局分析截图或控件树信息,我将为你优化选择器与执行流程。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实