怎么实现钉钉打卡?

HAMI_2561164216 · 1 天前

回答

Hamibot AI
1
· 1 天前

以下是实现钉钉自动打卡的脚本示例:

// 文档地址 https://docs.hamibot.com/

auto.waitFor();

function main() {
    // 1. 解锁设备(建议保持屏幕常亮或已解锁状态)
    device.wakeUpIfNeeded();
    sleep(1000);

    // 2. 打开钉钉
    toastLog("正在打开钉钉...");
    if (!launchApp("钉钉")) {
        // 备用:通过包名启动
        launch("com.alibaba.android.rimet");
    }
    sleep(5000); // 等待应用加载

    // 3. 点击底部"工作台"
    toastLog("进入工作台...");
    var workTab = text("工作台").findOne(3000);
    if (workTab) {
        workTab.click();
        sleep(2000);
    } else {
        toastLog("未找到工作台,尝试备用方案...");
        // 部分版本可能在底部导航栏不同位置
        click(device.width / 2, device.height - 100);
        sleep(2000);
    }

    // 4. 点击"考勤打卡"
    toastLog("寻找考勤打卡入口...");
    var attendance = text("考勤打卡").findOne(3000) ||
                     textContains("打卡").findOne(3000);
    
    if (attendance) {
        attendance.click();
        sleep(3000);
    } else {
        toastLog("未找到考勤打卡应用,请检查是否在工作台首页");
        exit();
    }

    // 5. 处理可能的弹窗(更新提示、公告等)
    var closeBtn = text("关闭").findOne(1000) ||
                   text("下次再说").findOne(1000) ||
                   desc("关闭").findOne(1000);
    if (closeBtn) {
        closeBtn.click();
        sleep(1000);
    }

    // 6. 点击打卡按钮
    toastLog("执行打卡...");
    // 按钮文字可能是"上班打卡"或"下班打卡"
    var punchBtn = textContains("打卡").findOne(3000);
    
    if (punchBtn) {
        // 尝试直接点击
        if (punchBtn.clickable()) {
            punchBtn.click();
        } else {
            // 如果控件不可点击,点击其父元素或坐标
            var bounds = punchBtn.bounds();
            click(bounds.centerX(), bounds.centerY());
        }
        toastLog("打卡按钮已点击");
        sleep(2000);
        
        // 7. 截图保存结果(可选)
        // captureScreen("/sdcard/钉钉打卡_" + new Date().getTime() + ".png");
        toastLog("打卡完成,请检查结果");
    } else {
        toastLog("未找到打卡按钮,可能已打卡或不在打卡时间");
    }
}

main();

使用步骤

步骤 操作
1 确保手机已解锁,网络正常
2 运行脚本
3 脚本自动打开钉钉 → 工作台 → 考勤打卡 → 点击按钮

注意事项

问题 解决方法
定位打卡 脚本无法伪造 GPS,需确保手机在公司范围内
人脸识别 如开启人脸打卡,脚本点击后会弹出识别框,需人工配合
UI 变化 钉钉版本更新可能导致控件变化,需用布局分析重新定位
定时任务 配合 Hamibot 定时功能,每天早上自动运行

进阶:定时自动打卡

  1. 在 Hamibot 控制台创建定时任务
  2. 设置触发时间(如每天 08:55)
  3. 选择设备和脚本
  4. 系统自动唤醒设备并执行

如果钉钉界面有变化,可以使用布局分析工具查看具体的按钮 ID 或文字,修改脚本中的选择器。

参考文档:https://docs.hamibot.com/

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