帮我写一个企业微信自动打卡的脚本

HAMI_0214254005 · 2 天前

回答

Hamibot AI
1
· 2 天前

以下是适用于 Hamibot 的企业微信自动打卡脚本。代码已针对 Hamibot 的 Rhino 1.7.15 引擎进行兼容处理,未使用箭头函数或默认参数,并包含基础容错与弹窗处理逻辑。

// 文档地址 https://docs.hamibot.com/
// 企业微信自动打卡脚本(Hamibot兼容版)
// 运行前请确保:已开启无障碍服务、授予Hamibot悬浮窗与后台运行权限、企业微信已登录

var packageName = "com.tencent.wework";
var workTabText = "工作台";
var clockInEntryText = "打卡";
var clockInBtnText = "上班打卡"; // 若为下班打卡请改为 "下班打卡"

function main() {
    toast("开始执行企业微信打卡...");
    
    // 1. 启动企业微信
    if (!launchApp("企业微信")) {
        toast("未找到企业微信,请检查应用名称或包名");
        exit();
    }
    
    // 2. 等待主界面加载(最长10秒)
    var loaded = waitForActivity("com.tencent.wework.launch.LaunchActivity", 10000);
    if (!loaded) {
        toast("企业微信启动超时,请检查网络或应用状态");
        exit();
    }
    sleep(2000);
    
    // 3. 进入工作台
    if (!click(workTabText)) {
        toast("未找到【工作台】按钮");
        exit();
    }
    sleep(1500);
    
    // 4. 进入打卡页面
    if (!click(clockInEntryText)) {
        toast("未找到【打卡】入口");
        exit();
    }
    sleep(2000);
    
    // 5. 查找并点击打卡按钮
    var btn = text(clockInBtnText).findOne(5000);
    if (btn) {
        btn.click();
        toast("已点击打卡按钮");
        sleep(2000);
        handleDialogs();
        toast("打卡流程执行完成");
    } else {
        toast("未找到打卡按钮,可能已打卡或界面布局变更");
    }
}

// 处理常见弹窗(权限、确认、提示等)
function handleDialogs() {
    var keywords = ["确定", "允许", "知道了", "继续", "同意"];
    for (var i = 0; i < keywords.length; i++) {
        var btn = text(keywords[i]).findOne(1500);
        if (btn) {
            btn.click();
            sleep(500);
        }
    }
}

main();

运行与部署步骤

  1. 在 Hamibot 控制台新建脚本,将上述代码粘贴至编辑器。
  2. 保存后点击“运行”,首次运行需在手机系统设置中为 Hamibot 开启无障碍服务。
  3. 若需每日自动执行,可在 Hamibot 控制台创建“定时任务”,绑定该脚本并设置触发时间(建议提前 5~10 分钟)。

核心注意事项

  • 界面适配:企业微信版本更新或企业自定义工作台可能导致按钮文本变化。若脚本失效,请使用 Hamibot 的“UI 分析器”获取实际控件的 textiddesc 属性,替换脚本中的对应字符串。
  • 定位与网络:企业微信打卡依赖 GPS 或 Wi-Fi 校验。脚本仅模拟点击操作,无法绕过定位限制。请确保设备已开启定位服务且处于公司允许的网络范围内。
  • 权限要求:需授予 Hamibot 无障碍权限、后台运行权限、悬浮窗权限(部分机型需关闭电池优化)。
  • 合规提示:自动化打卡需符合你所在企业的考勤管理制度。部分企业后台会检测异常操作频率或设备指纹,建议合理设置执行间隔。

调试与优化建议

  • 使用 log() 替代部分 toast() 可在 Hamibot 控制台查看完整执行日志,便于定位卡点。
  • 若页面加载较慢,可将固定 sleep() 替换为 waitFor()until() 轮询逻辑,提升稳定性。
  • 建议将脚本拆分为“启动应用”、“导航至打卡页”、“执行打卡”三个函数,便于单独测试与复用。
  • 定时任务建议开启“失败重试”与“执行通知”,便于及时感知异常。

如需针对特定企业微信版本或复杂打卡规则(如多地点切换、外勤打卡、审批流联动)进行定制,可提供具体界面截图或控件信息,我将为你调整选择器与执行逻辑。

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