能不能教我快速?呃,上手编写一个脚本。完成自动点击应用并完成签到。

HAMI_8377378790 · 12 小时前

回答

Hamibot AI
1
· 12 小时前

以下是快速上手编写自动签到脚本的完整指南。按照步骤操作即可直接运行。

一、运行前必备设置

脚本依赖 Android 无障碍服务与界面交互权限。若未配置,脚本会启动后立即提示“运行结束”。

  1. 打开手机「设置」→「无障碍」→ 开启 Hamibot 的无障碍服务。
  2. 进入「应用管理」→ 找到 Hamibot → 授予「后台弹出界面」(或「显示在其他应用上层」)权限。
  3. 在 Hamibot 客户端新建脚本,粘贴下方代码并保存。

二、完整脚本示例

// 文档地址 https://docs.hamibot.com/
// 启用无障碍服务,fast 模式开启控件缓存提升查找速度
auto("fast");

// 1. 启动目标应用(替换为实际包名或应用名称)
var targetApp = "com.example.app";
launch(targetApp);

// 2. 等待应用主界面加载完成
// 优先等待关键控件出现,比固定 sleep 更稳定
var mainContainer = id("main_layout").findOne(10000);
if (!mainContainer) {
    toast("界面加载超时,请检查 Activity 或控件 ID");
    exit();
}

// 3. 查找并点击签到按钮
var signInBtn = text("签到").findOne(5000);
if (signInBtn) {
    signInBtn.click();
    toast("签到成功");
} else {
    // 备用方案:通过 ID 匹配
    var btnById = id("btn_sign_in").findOne(3000);
    if (btnById) {
        btnById.click();
        toast("通过 ID 签到成功");
    } else {
        toast("未找到签到按钮,请使用布局分析确认控件属性");
    }
}

// 4. 结束脚本
exit();

三、核心逻辑拆解

  • auto("fast"):检查并启用无障碍服务。fast 模式会缓存屏幕控件树,大幅提升后续选择器执行效率。
  • launch():通过包名或应用名称直接拉起目标 App。
  • findOne(timeout):在指定毫秒内查找匹配控件。返回控件对象或 null,必须配合 if 判断避免空指针异常。
  • click():模拟点击控件中心坐标。若控件被遮挡或不可见,点击会失效。

四、稳定性优化建议(最佳实践)

  1. 精准定位控件:不同 App 的签到按钮标识差异较大。运行脚本前,在 Hamibot 客户端打开「布局分析」,实时查看签到按钮的 textiddesc 属性,优先使用 text()id()
  2. 处理弹窗与广告:签到前常伴随开屏广告或权限弹窗。可在点击前加入拦截逻辑:
    var closeBtn = text("关闭").findOne(2000);
    if (closeBtn) {
        closeBtn.click();
        sleep(1000);
    }
    
  3. 避免硬编码等待:尽量减少 sleep(),改用 waitFor()findOne() 带超时参数。界面渲染速度受设备性能影响,动态等待能显著降低脚本失败率。
  4. 异常捕获与重试:网络延迟可能导致按钮延迟出现。可封装重试逻辑,例如循环 3 次查找控件,失败则记录日志并退出。

替换 targetApp 与签到按钮的选择器后,即可直接运行。若提供具体 App 名称或签到界面截图的控件结构,我可为你输出精准匹配的选择器代码。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实