如何自动打卡?

HAMI_5916771387 · 1 天前

回答

Hamibot AI
1
· 1 天前

Hamibot 自动打卡实现方案

使用 Hamibot 实现自动打卡,主要有以下几种方式,你可以根据打卡应用的特点选择合适的方法。


方案一:控件查找方式(推荐)

如果打卡应用的按钮可以被控件识别,这是最稳定的方式。

// 文档地址:https://docs.hamibot.com/
auto.waitFor();

// 启动打卡应用
launchApp('钉钉'); // 或企业微信、飞书等

// 等待应用加载
sleep(3000);

// 查找打卡按钮并点击
let checkInButton = text('打卡').findOne(5000);
if (checkInButton) {
    checkInButton.click();
    toastLog('打卡成功');
} else {
    // 尝试其他可能的文字
    let alternateButton = text('上班打卡').findOne(3000) || text('签到').findOne(3000);
    if (alternateButton) {
        alternateButton.click();
        toastLog('打卡成功');
    } else {
        toastLog('未找到打卡按钮');
    }
}

方案二:坐标点击方式

如果控件无法识别,可以使用坐标点击。

// 文档地址:https://docs.hamibot.com/
auto.waitFor();

// 启动打卡应用
launchApp('钉钉');

sleep(3000);

// 点击打卡按钮坐标(需要根据实际设备调整)
Tap(540, 1200);
sleep(500);

// 确认打卡
Tap(540, 1500);
sleep(500);

toastLog('打卡完成');

提示:可通过手机「开发者选项」开启指针位置来确定准确坐标。


方案三:OCR 识别方式

如果界面元素无法通过控件或坐标定位,可使用 OCR 文字识别。

// 文档地址:https://docs.hamibot.com/
if (!requestScreenCapture()) {
    toastLog('没有授予 Hamibot 屏幕截图权限');
    hamibot.exit();
}

auto.waitFor();
launchApp('钉钉');
sleep(3000);

log('开始截屏');
const img = captureScreen();
toastLog('开始识别');
const res = ocr.recognizeText(img);
toastLog(res);

// 根据识别结果判断并点击
if (res.indexOf('打卡') !== -1) {
    // 执行点击操作
    Tap(540, 1200);
    toastLog('打卡成功');
}

hamibot.exit();

定时任务设置

在 Hamibot 控制台设置定时任务,实现每天自动打卡:

  1. 登录 Hamibot 控制台
  2. 进入「脚本管理」创建打卡脚本
  3. 在「定时任务」中设置执行时间(如工作日 8:50)
  4. 绑定需要执行的设备
  5. 保存并启用任务

最佳实践建议

建议项 说明
优先使用控件查找 比坐标更稳定,适配不同屏幕
添加等待时间 每个操作后加 sleep() 确保界面加载完成
处理弹窗 添加代码处理权限请求、更新提示等弹窗
添加日志记录 使用 toastLog() 记录执行状态便于排查
测试验证 先在非工作时间测试脚本稳定性
网络检查 添加网络状态判断,避免无网时执行失败

注意事项

  1. 确保 Hamibot 已授予必要的权限(悬浮窗、截图、无障碍等)
  2. 不同手机品牌可能需要额外设置后台运行权限
  3. 打卡应用更新可能导致界面变化,需定期维护脚本
  4. 遵守公司考勤制度,自动化打卡需符合相关规定

如需进一步帮助,可在 Hamibot 控制台查看详细文档或联系技术支持。

ℹ️ 本回答由 AI 生成,内容仅供参考