回答
// 文档地址 https://docs.hamibot.com/
// 1. 解锁手机(假设使用简单的滑动解锁)
function unlockPhone() {
// 确保屏幕已唤醒
if (!device.isScreenOn()) {
device.wakeUp();
sleep(1000);
}
// 执行滑动解锁,从 (100, 800) 滑动到 (1000, 800),耗时 500ms
swipe(100, 800, 1000, 800, 500);
sleep(2000); // 等待解锁完成
}
// 2. 启动“小盈办公”APP
function launchApp() {
var appName = "小盈办公";
var packageName = getPackageName(appName);
if (packageName) {
app.launch(packageName);
toastLog("正在启动“" + appName + "”");
sleep(3000); // 等待应用启动
} else {
toastLog("未找到“" + appName + "”应用,请检查是否已安装。");
hamibot.exit();
}
}
// 3. 自动登录(假设账号密码输入框和登录按钮有明确的控件标识)
function login() {
// 输入用户名
setText(0, "你的用户名"); // 第一个输入框输入用户名
sleep(500);
// 输入密码
setText(1, "你的密码"); // 第二个输入框输入密码
sleep(500);
// 点击登录按钮
if (text("登录").exists()) {
text("登录").findOne().click();
toastLog("正在登录...");
sleep(3000); // 等待登录完成
} else {
toastLog("未找到登录按钮,请确认页面是否正确。");
hamibot.exit();
}
}
// 4. 点击“考勤打卡”
function goToAttendance() {
if (text("考勤打卡").exists()) {
text("考勤打卡").findOne().click();
toastLog("进入考勤打卡页面");
sleep(2000);
} else {
toastLog("未找到“考勤打卡”入口,请确认页面是否正确。");
hamibot.exit();
}
}
// 5. 点击“下班打卡”
function clockOut() {
if (text("下班打卡").exists()) {
text("下班打卡").findOne().click();
toastLog("已点击“下班打卡”");
sleep(2000);
// 可以在此处添加判断是否打卡成功的逻辑
if (text("打卡成功").exists() || desc("打卡成功").exists()) {
toastLog("下班打卡成功!");
} else {
toastLog("下班打卡可能未成功,请手动确认。");
}
} else {
toastLog("未找到“下班打卡”按钮,请确认是否已到达打卡页面。");
hamibot.exit();
}
}
// 主流程控制
auto.waitFor(); // 等待无障碍服务开启
unlockPhone(); // 解锁手机
launchApp(); // 启动应用
login(); // 登录账户
goToAttendance(); // 进入考勤打卡
clockOut(); // 下班打卡
// 结束脚本
toastLog("脚本执行完毕");
hamibot.exit();
使用说明:
- 权限设置:确保 Hamibot 已获取“无障碍服务”和“设备弹出层”权限。
- 个性化配置:
- 将
"你的用户名"和"你的密码"替换为真实的账号信息。
- 将
- 兼容性调整:
- 若“小盈办公”APP 的界面元素发生变化(如文字标签不同),请根据实际界面修改
text("XXX")中的内容。 - 可使用 Hamibot 的“布局分析”工具来精确定位控件。
- 若“小盈办公”APP 的界面元素发生变化(如文字标签不同),请根据实际界面修改
注意事项:
- 该脚本假设使用的是滑动解锁方式,若为密码/指纹解锁需另行处理。
- 建议在非敏感环境下测试运行,避免账号安全风险。
- 如遇验证码或二次验证,请手动完成后再运行脚本。
ℹ️ 本回答由 AI 生成,内容仅供参考