回答
Hamibot 实现定时企业微信打卡方案
一、实现思路
使用 Hamibot 的定时任务功能 + 自动化脚本,实现企业微信自动打卡。主要步骤:
- 设置定时触发器(每天指定时间执行)
- 启动企业微信应用
- 导航到工作台打卡页面
- 执行打卡操作
- 记录打卡结果
二、脚本代码示例
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 配置参数
var WORK_WECHAT_PACKAGE = "com.tencent.wework";
var CLOCK_IN_TIME = "08:50"; // 上班打卡时间
var CLOCK_OUT_TIME = "18:10"; // 下班打卡时间
// 主函数
function main() {
toastLog("开始执行企业微信打卡");
// 请求截图权限
if (!requestScreenCapture()) {
toastLog("没有授予 Hamibot 屏幕截图权限");
hamibot.exit();
}
// 启动企业微信
launchApp("企业微信");
sleep(3000);
// 进入工作台
var workbench = text("工作台").findOne(5000);
if (workbench) {
workbench.click();
sleep(2000);
}
// 查找打卡入口
var clockIn = text("打卡").findOne(5000);
if (clockIn) {
clockIn.click();
sleep(3000);
}
// 执行打卡
var clockButton = text("上班打卡").findOne(5000);
if (!clockButton) {
clockButton = text("下班打卡").findOne(5000);
}
if (clockButton && clockButton.exists()) {
clockButton.click();
sleep(2000);
toastLog("打卡成功");
// 截图保存记录
var path = "/sdcard/Hamibot/打卡记录/" + new Date().getTime() + ".png";
captureScreen();
images.save(captureScreen(), path);
toastLog("打卡记录已保存:" + path);
} else {
toastLog("未找到打卡按钮,可能已打卡");
}
hamibot.exit();
}
// 执行主函数
main();
三、设置定时任务
方式 1:使用 Hamibot 触发器
- 在 Hamibot 控制台创建脚本
- 添加触发器,选择「定时触发」
- 设置执行时间(如工作日 08:50 和 18:10)
- 绑定设备并启用
方式 2:使用 timers 模块(脚本内定时)
// 文档地址 https://docs.hamibot.com/
// 设置每天定时检查
var checkInterval = setInterval(function() {
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
// 上班打卡时间检查
if (hours === 8 && minutes === 50) {
doClockIn("上班");
}
// 下班打卡时间检查
if (hours === 18 && minutes === 10) {
doClockIn("下班");
}
}, 60 * 1000); // 每分钟检查一次
function doClockIn(type) {
toastLog(type + "打卡时间到");
// 调用打卡逻辑
main();
}
四、找图方式打卡(更稳定)
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
toastLog("没有授予 Hamibot 屏幕截图权限");
hamibot.exit();
}
sleep(1000);
// 启动企业微信
launchApp("企业微信");
sleep(5000);
// 读取打卡按钮图片模板
var clockImg = images.read("/sdcard/打卡按钮.png");
// 截图找图
var p = findImage(captureScreen(), clockImg, {
region: [0, 50],
threshold: 0.8,
});
if (p) {
click(p.x, p.y);
toastLog("打卡成功");
} else {
toastLog("未找到打卡按钮");
}
hamibot.exit();
五、注意事项
| 项目 | 说明 |
|---|---|
| 权限 | 需授予无障碍服务、截图权限、自启动权限 |
| 设备 | 建议专用手机,保持常亮或定时唤醒 |
| 网络 | 确保执行时网络正常 |
| 企业微信版本 | 不同版本界面可能有差异,需调整定位方式 |
| 打卡范围 | 部分公司需要 GPS 定位,需确保设备在打卡范围内 |
| 异常处理 | 建议添加打卡结果通知,便于确认执行情况 |
六、最佳实践建议
- 提前执行:设置打卡时间比要求时间提前 5-10 分钟,避免网络延迟
- 结果通知:打卡完成后发送通知到微信或邮件,确认执行结果
- 日志记录:保存每次打卡的时间和截图,便于追溯
- 容错机制:添加重试逻辑,首次失败后间隔重试 2-3 次
- 定期检查:每周检查脚本执行情况,确保功能正常
七、常见问题
Q: 脚本执行后没有反应?
- 检查无障碍服务是否开启
- 确认企业微信已登录
- 查看 Hamibot 日志输出
Q: 找不到打卡按钮?
- 企业微信版本更新导致界面变化
- 使用找图方式替代文字定位
- 重新录制界面元素
Q: 定时任务不执行?
- 检查设备是否被系统杀后台
- 设置设备白名单,允许自启动
- 确认触发器配置正确
如需进一步帮助,可查看 Hamibot 官方文档或联系技术支持。
ℹ️ 本回答由 AI 生成,内容仅供参考