回答
Hamibot 可以实现自动打开软件并打卡,但不同软件的界面布局、按钮文字或控件 ID 各不相同,因此无法提供通用的打卡脚本。你需要根据实际使用的软件(如钉钉、企业微信等)编写特定的自动化脚本。
以下是实现自动打卡的通用步骤和代码模板,你可以基于此进行修改。
实现步骤
- 准备环境:确保手机已开启 Hamibot 的无障碍服务权限。
- 确定目标:明确要打开的软件名称和打卡按钮的特征(文字、ID 或位置)。
- 编写脚本:使用控件查找或图像识别定位打卡按钮。
- 设置定时任务:在 Hamibot 控制台设置定时运行,实现自动打卡。
代码模板(控件查找方式)
控件查找方式比图像识别更稳定,推荐优先使用。请将代码中的 应用名称 和 按钮文字 替换为实际内容。
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 配置区域
var appName = "钉钉"; // 修改为实际应用名称,如"企业微信"
var buttonText = "打卡"; // 修改为打卡按钮上的实际文字
var waitTime = 5000; // 等待控件出现的最大时间(毫秒)
// 启动应用
app.launchApp(appName);
toast("已启动:" + appName);
// 等待界面加载
sleep(3000);
// 查找打卡按钮
var btn = text(buttonText).findOne(waitTime);
if (btn != null) {
btn.click();
toast("打卡成功");
// 可选:打卡后退出脚本
hamibot.exit();
} else {
toast("未找到打卡按钮,请检查界面或文字");
// 可选:找不到时尝试图像识别或其他逻辑
hamibot.exit();
}
代码模板(图像识别方式)
如果控件无法查找,可以使用屏幕截图配合图像识别。需要先授予 Hamibot 屏幕截图权限。
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
var appName = "钉钉";
app.launchApp(appName);
sleep(5000);
// 读取本地保存的打卡按钮图标
var icon = images.read("/sdcard/clock_in_icon.png");
var p = findImage(captureScreen(), icon, {
threshold: 0.8
});
if (p) {
click(p.x, p.y);
toast("图像识别打卡成功");
} else {
toast("未找到打卡图标");
}
hamibot.exit();
最佳实践建议
- 稳定性优化:应用启动时间因手机性能而异,建议适当调整
sleep时间,或使用text(...).waitFor()等待特定界面元素出现。 - 异常处理:增加判断逻辑,例如检测是否弹出更新窗口、登录失效提示等,避免脚本卡住。
- 定时任务:在 Hamibot 控制台创建定时任务,设置工作日运行时间,确保脚本按时执行。
- 兼容性注意:脚本使用 JavaScript 引擎 Rhino 1.7.15,编写时请勿使用箭头函数或默认参数,变量定义建议使用
var。
如果你能提供具体需要打卡的软件名称,我可以提供更针对性的控件查找建议。
ℹ️ 本回答由 AI 生成,内容仅供参考