回答
以下是适用于 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();
运行与部署步骤
- 在 Hamibot 控制台新建脚本,将上述代码粘贴至编辑器。
- 保存后点击“运行”,首次运行需在手机系统设置中为 Hamibot 开启无障碍服务。
- 若需每日自动执行,可在 Hamibot 控制台创建“定时任务”,绑定该脚本并设置触发时间(建议提前 5~10 分钟)。
核心注意事项
- 界面适配:企业微信版本更新或企业自定义工作台可能导致按钮文本变化。若脚本失效,请使用 Hamibot 的“UI 分析器”获取实际控件的
text、id或desc属性,替换脚本中的对应字符串。 - 定位与网络:企业微信打卡依赖 GPS 或 Wi-Fi 校验。脚本仅模拟点击操作,无法绕过定位限制。请确保设备已开启定位服务且处于公司允许的网络范围内。
- 权限要求:需授予 Hamibot 无障碍权限、后台运行权限、悬浮窗权限(部分机型需关闭电池优化)。
- 合规提示:自动化打卡需符合你所在企业的考勤管理制度。部分企业后台会检测异常操作频率或设备指纹,建议合理设置执行间隔。
调试与优化建议
- 使用
log()替代部分toast()可在 Hamibot 控制台查看完整执行日志,便于定位卡点。 - 若页面加载较慢,可将固定
sleep()替换为waitFor()或until()轮询逻辑,提升稳定性。 - 建议将脚本拆分为“启动应用”、“导航至打卡页”、“执行打卡”三个函数,便于单独测试与复用。
- 定时任务建议开启“失败重试”与“执行通知”,便于及时感知异常。
如需针对特定企业微信版本或复杂打卡规则(如多地点切换、外勤打卡、审批流联动)进行定制,可提供具体界面截图或控件信息,我将为你调整选择器与执行逻辑。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实