回答
实现企业微信定时打卡,主要通过 Hamibot 控制台的“定时任务”功能配合自动化脚本来完成。以下是具体的实现方案、脚本示例及最佳实践建议。
一、实现方案
- 定时触发:利用 Hamibot 云控平台的定时任务功能,设置每天特定时间(如 8:55)自动触发脚本。
- 自动化操作:脚本负责唤醒设备、打开企业微信、定位打卡按钮并点击。
- 环境准备:
- 设备需保持联网且屏幕常亮(或支持唤醒)。
- 授予 Hamibot 无障碍服务权限、屏幕截图权限、悬浮窗权限。
- 企业微信需保持登录状态。
二、脚本代码示例
以下脚本实现了打开企业微信并通过图像识别寻找打卡按钮的功能。请在脚本开头保留文档地址注释,以确保兼容性。
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 请求屏幕截图权限
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
// 配置参数
var wecomPackage = 'com.tencent.wework';
var clockInImage = '/sdcard/clock_in_button.png'; // 需预先保存打卡按钮截图
var maxWaitTime = 60000; // 最大等待时间 60 秒
var startTime = Date.now();
// 打开企业微信
toastLog('正在打开企业微信...');
app.launchPackage(wecomPackage);
// 等待应用加载
sleep(3000);
// 主逻辑:寻找并点击打卡按钮
var clicked = false;
while (!clicked && (Date.now() - startTime < maxWaitTime)) {
var screen = captureScreen();
// 尝试通过找图点击
var p = images.findImage(screen, images.read(clockInImage), {
threshold: 0.8
});
if (p) {
click(p.x, p.y);
toastLog('打卡成功');
clicked = true;
} else {
// 如果找图失败,可尝试滑动屏幕后再找
swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 1000);
sleep(1000);
}
}
if (!clicked) {
toastLog('未找到打卡按钮,请检查截图或界面');
}
hamibot.exit();
三、关键步骤说明
-
素材准备:
- 使用
images.read()读取的打卡按钮图片(如clock_in_button.png)需要预先截取并上传到设备指定路径。 - 建议截取按钮特征明显的部分,避免包含动态变化的内容。
- 使用
-
应用启动:
- 使用
app.launchPackage('com.tencent.wework')直接拉起企业微信。 - 若需跳转到特定活动页,可参考
app.startActivity接口构造 Intent。
- 使用
-
识别策略:
- 图像识别:适用于按钮位置固定、样式不变的场景。使用
images.findImage配合threshold阈值调整相似度。 - 文字识别 (OCR):若按钮样式经常变化,可使用
ocr.recognizeText识别“打卡”文字后计算坐标点击。 - 多点找色:对于图标类按钮,可使用
images.findMultiColors提高识别速度和准确性。
- 图像识别:适用于按钮位置固定、样式不变的场景。使用
四、最佳实践建议
-
稳定性优化:
- 在
findImage前增加sleep等待页面加载完成,避免操作过快导致失败。 - 增加异常处理,如网络断开、应用崩溃时的重试逻辑或通知提醒。
- 使用
toastLog记录执行日志,便于在 Hamibot 控制台排查问题。
- 在
-
定时任务配置:
- 在 Hamibot 控制台创建“定时任务”,选择上述脚本。
- 设置执行时间为工作日指定时间。
- 建议设置提前几分钟执行,预留网络加载和设备唤醒时间。
-
设备维护:
- 确保运行设备电量充足,建议连接电源。
- 关闭系统自动锁屏,或在脚本中加入唤醒屏幕的逻辑。
- 定期更新打卡按钮截图,以适应企业微信版本更新导致的 UI 变化。
通过以上配置,即可实现稳定可靠的企业微信自动定时打卡。如有更复杂的交互需求,可结合 ocr 模块或 ui 模块进行进阶开发。
ℹ️ 本回答由 AI 生成,内容仅供参考