我希望实现美信软件的定时打卡

HAMI_0788012509 · 6 小时前

回答

Hamibot AI
1
· 6 小时前

要实现美信软件的定时打卡功能,你可以使用Hamibot编写自动化脚本。下面是一个完整的实现方案:

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

// 设置打卡时间(24小时制)
const CHECK_IN_HOUR = 9;    // 上班打卡小时
const CHECK_IN_MIN = 0;     // 上班打卡分钟
const CHECK_OUT_HOUR = 18;  // 下班打卡小时
const CHECK_OUT_MIN = 0;    // 下班打卡分钟

// 美信软件包名(需要你根据实际应用填写)
const APP_PACKAGE = "com.example.meixin"; // 请替换为实际包名

// 保持屏幕常亮,防止执行过程中屏幕熄灭
device.keepScreenOn(300000); // 保持5分钟屏幕常亮

// 检查是否到达打卡时间
function isCheckInTime() {
    var now = new Date();
    return now.getHours() === CHECK_IN_HOUR && now.getMinutes() === CHECK_IN_MIN;
}

function isCheckOutTime() {
    var now = new Date();
    return now.getHours() === CHECK_OUT_HOUR && now.getMinutes() === CHECK_OUT_MIN;
}

// 唤醒设备并解锁(如果需要)
function wakeUpAndUnlock() {
    device.wakeUpIfNeeded();
    sleep(1000);
    
    // 如果有锁屏,这里添加解锁操作
    // 例如:swipe(500, 1500, 500, 500, 300);
    // sleep(1000);
    // id("lock_pattern_view").findOne().click(); // 根据实际锁屏界面操作
}

// 打开美信应用
function openMeiXinApp() {
    app.launch(APP_PACKAGE);
    waitForPackage(APP_PACKAGE, 10000); // 等待应用启动,最多10秒
    sleep(3000); // 等待界面加载
}

// 执行打卡操作
function doCheckIn() {
    log("开始执行打卡操作...");
    
    // 根据美信软件界面结构调整以下选择器
    // 示例:点击工作台
    text("工作台").findOne(5000).click();
    sleep(2000);
    
    // 示例:点击考勤打卡
    text("考勤打卡").findOne(5000).click();
    sleep(3000);
    
    // 示例:点击打卡按钮
    // 根据实际界面可能需要调整选择器
    var checkInButton = textMatches(/(上班打卡|签到|打卡)/).findOne(5000);
    if (checkInButton) {
        checkInButton.click();
        log("打卡操作已执行");
        sleep(2000);
        
        // 如果有确认按钮
        var confirmButton = textMatches(/(确定|确认)/).findOne(2000);
        if (confirmButton) {
            confirmButton.click();
        }
    } else {
        log("未找到打卡按钮,请检查界面元素");
    }
    
    back();
    sleep(1000);
    back();
    sleep(1000);
}

// 主循环
while (true) {
    var now = new Date();
    log("当前时间: " + now.toLocaleTimeString());
    
    // 检查是否到达上班打卡时间
    if (isCheckInTime()) {
        wakeUpAndUnlock();
        openMeiXinApp();
        doCheckIn();
        log("已执行上班打卡");
    }
    
    // 检查是否到达下班打卡时间
    if (isCheckOutTime()) {
        wakeUpAndUnlock();
        openMeiXinApp();
        doCheckIn();
        log("已执行下班打卡");
    }
    
    // 每分钟检查一次
    sleep(60000);
}

使用说明:

  1. 首先需要确定美信软件的实际包名,可以通过以下方法获取:

    // 运行此代码获取当前应用包名
    console.show();
    setInterval(function() {
        log("当前应用包名: " + currentPackage());
    }, 1000);
    

    打开美信软件后查看控制台输出

  2. 根据美信软件的实际界面结构调整脚本中的选择器:

    • text("工作台") → 替换为美信中"工作台"的实际文本
    • text("考勤打卡") → 替换为实际的考勤入口文本
    • textMatches(/(上班打卡|签到|打卡)/) → 根据实际打卡按钮文本调整
  3. 如果美信软件有锁屏,请在wakeUpAndUnlock函数中添加相应的解锁操作

  4. 设置定时任务:

    • 在Hamibot中创建新脚本,粘贴上述代码并调整
    • 设置脚本为"守护进程"模式,确保长期运行
    • 在"任务"中设置"开机启动",保证设备重启后脚本能自动运行
  5. 测试脚本:

    • 先手动运行脚本,确认所有操作步骤正确
    • 调整sleep时间,确保每个操作有足够时间完成
    • 检查是否有弹窗需要处理

注意:不同版本的美信软件界面可能不同,请根据实际情况调整选择器。如果打卡需要定位权限,请确保在Hamibot中开启了"模拟位置"功能,并设置合适的坐标。

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