回答
执行打卡任务主要分为环境准备、脚本编写、任务调度与稳定性优化四个步骤。以下是完整操作指南:
1. 环境准备
- 在目标 Android 设备安装 Hamibot 客户端并完成登录。
- 进入系统设置,为 Hamibot 开启「无障碍服务权限」。部分打卡应用还需开启「悬浮窗权限」或「后台弹出界面权限」。
- 关闭系统的严格省电策略,将 Hamibot 加入电池优化白名单,防止后台进程被系统清理。
2. 编写打卡脚本
使用 Hamibot 提供的 UI 自动化 API 编写脚本。注意底层 JavaScript 引擎为 Rhino 1.7.15,需避免使用箭头函数、let/const、默认参数等现代语法。
// 文档地址 https://docs.hamibot.com/
auto.waitFor(); // 等待无障碍服务就绪
// 1. 启动打卡应用
var targetApp = "目标应用包名或名称";
app.launchApp(targetApp);
sleep(3000); // 预留应用冷启动时间
// 2. 定位并点击打卡控件
// 根据实际界面调整选择器,支持 text、id、desc、className 等
var checkInBtn = text("打卡").findOne(5000);
if (checkInBtn) {
// 部分应用按钮被多层布局包裹,需向上查找可点击父元素
var clickableNode = checkInBtn;
while (!clickableNode.clickable() && clickableNode.parent()) {
clickableNode = clickableNode.parent();
}
clickableNode.click();
toastLog("已触发打卡操作");
// 3. 处理可能出现的确认弹窗
var confirmBtn = text("确定").findOne(3000) || text("确认").findOne(3000);
if (confirmBtn) {
confirmBtn.click();
}
} else {
toastLog("未找到打卡控件,请检查页面状态或选择器");
}
3. 执行方式
- 手动运行:在 Hamibot 控制台或 App 的「脚本管理」中找到该脚本,点击「运行」即可立即执行。
- 定时执行:在脚本详情页配置 Cron 表达式。例如
0 9 * * 1-5表示周一至周五上午 9:00 自动触发。Hamibot 会在设备端按调度计划拉起脚本。 - API 远程触发:通过 Hamibot Open API 发送 POST 请求,携带
hmp开头的令牌、设备_id及变量参数。示例:curl -X POST \ -H "Authorization: 你的令牌(hmp 开头)" \ -H "Content-Type: application/json" \ -d '{ "code": "脚本代码或脚本ID", "devices": [{"_id": "设备ID", "name": "设备名称"}], "vars": {"打卡类型": "上班"} }' \ https://api.hamibot.com/v1/scripts/run
4. 最佳实践与注意事项
- 控件稳定性:优先使用
id或desc定位,text易受多语言或版本更新影响。使用findOne(timeout)替代无限等待,避免脚本卡死。 - 异常拦截:在关键操作前后加入弹窗检测逻辑(如网络错误提示、权限申请弹窗),使用
text("跳过").findOne().click()等兜底策略。 - 日志与通知:使用
toastLog()输出关键节点状态,结合hamibot.env获取运行环境信息,便于在控制台排查失败原因。 - 合规使用:自动化打卡需遵守目标应用的服务条款及企业考勤制度,仅用于合法合规的个人效率提升场景。
如遇到特定应用无法定位控件或点击无响应,可提供该应用的包名及目标页面截图(通过 Hamibot 的「布局分析」功能导出 UI 树),我将协助你调整选择器策略。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实