回答
要写一个自动打卡脚本,请按以下步骤操作(以通用考勤 App 为例):
1. 创建脚本
访问 脚本控制台 → 点击「创建脚本」→ 输入名称(如“自动打卡”)→ 创建。
2. 编写代码(基础模板)
// 文档地址 https://docs.hamibot.com/
auto.waitFor(); // 确保无障碍已开启
// ========== 配置区 ==========
const APP_NAME = "钉钉"; // 替换为你的考勤App名称(或包名)
const TIMEOUT = 5000; // 元素查找超时(毫秒)
// ========== 工具函数 ==========
function waitForAndClick(keyword, timeout) {
let btn = text(keyword).findOne(timeout || TIMEOUT);
if (btn) {
btn.click();
sleep(1000);
return true;
}
return false;
}
// ========== 主流程 ==========
toastLog("开始自动打卡");
// 1. 启动考勤App
app.launch(APP_NAME);
sleep(5000);
// 2. 进入打卡页面(根据实际界面调整)
if (!waitForAndClick("考勤打卡", 8000)) {
toastLog("❌ 未找到打卡入口");
exit();
}
sleep(3000);
// 3. 执行打卡(尝试多种关键词)
let clicked = false;
["上班打卡", "下班打卡", "打卡"].forEach(keyword => {
if (!clicked && waitForAndClick(keyword, 3000)) {
clicked = true;
toastLog("✅ 已点击: " + keyword);
}
});
if (!clicked) {
// 备用方案:坐标点击(需通过布局分析获取)
toastLog("⚠️ 尝试坐标点击");
click(device.width / 2, device.height * 0.8); // 屏幕下方居中
sleep(1000);
}
// 4. 验证结果
if (textContains("打卡成功").exists() || descContains("成功").exists()) {
toastLog("🎉 打卡成功!");
} else {
toastLog("❓ 未检测到成功提示,请检查界面");
}
// 返回桌面
home();
3. 关键适配步骤
a. 确定启动方式
- 如果 App 名称无法启动,改用包名:
app.launch("com.alibaba.android.rimet"); // 钉钉包名
b. 获取准确控件信息
- 打开 Hamibot 悬浮窗 →「布局分析」
- 查看打卡按钮的
text、desc或坐标 - 替换代码中的关键词(如“考勤打卡”)
c. 处理特殊情况
- 滑动解锁:在开头添加
device.wakeUp(); sleep(1000); swipe(device.width/2, device.height*0.8, device.width/2, device.height*0.2, 500); - GPS 定位等待:增加循环检测
for (let i = 0; i < 10; i++) { if (!textContains("定位中").exists()) break; sleep(2000); }
4. 测试与调试
- 手动打开考勤 App 到首页
- 运行脚本,观察执行过程
- 查看「日志」定位失败步骤
- 根据实际界面调整关键词或坐标
💡 提示:首次运行建议加入
toastLog("步骤X")便于跟踪。
5. 设置定时任务(可选)
- 在脚本控制台点击「定时」
- 添加 Cron 表达式(如上班打卡:
0 30 8 * * 1-5)
完成以上步骤后,你的自动打卡脚本即可稳定运行。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实