回答
以下是为你编写的打卡脚本模板。脚本已按照 Hamibot 的最佳实践进行优化,使用元素查找替代固定延时,确保页面跳转稳定可靠。
// 文档地址 https://docs.hamibot.com/
var appName = "你的应用名称"; // 替换为实际应用名称或包名
var homeFlag = "首页特有文本"; // 替换为首页加载完成后必定出现的文本
var entryBtn = "进入打卡"; // 替换为跳转至打卡页的按钮文本
var pageFlag = "打卡界面特有文本"; // 替换为打卡页加载完成后必定出现的文本
var checkInBtn = "打卡"; // 替换为打卡按钮的文本
var successFlag = "打卡成功"; // 替换为打卡成功后的提示文本(可选)
// 1. 启动应用
app.launchApp(appName);
// 2. 等待首页加载完成(超时10秒)
if (!text(homeFlag).findOne(10000)) {
toast("未找到首页元素,脚本退出");
exit();
}
// 3. 点击跳转至打卡界面(循环点击直至成功)
while (!click(entryBtn)) {
sleep(500);
}
// 4. 等待打卡界面加载完成(超时10秒)
if (!text(pageFlag).findOne(10000)) {
toast("未进入打卡界面,脚本退出");
exit();
}
// 5. 点击打卡按钮
while (!click(checkInBtn)) {
sleep(500);
}
// 6. 确认打卡结果
if (text(successFlag).findOne(5000)) {
toast("打卡成功");
} else {
toast("打卡操作已执行,请手动确认结果");
}
关键逻辑说明
- 启动应用:
app.launchApp()支持应用名称或包名。建议使用包名(如com.example.app)可避免同名应用冲突。 - 等待页面跳转:使用
text("特征文本").findOne(超时毫秒)替代sleep()。只有当目标元素出现时才会继续执行,避免因设备性能差异导致点击错位。 - 可靠点击:
while (!click("文本")) { sleep(500); }会持续尝试点击,直到返回true。这能解决控件未渲染完成或点击区域被遮挡的问题。 - 特征文本选取:
homeFlag和pageFlag必须是对应页面唯一且稳定存在的文本(如标题、固定标签)。不要使用动态变化的内容。
使用注意事项
- 确保设备已授予 Hamibot 无障碍服务权限,否则
click()和text().findOne()无法正常工作。 - 若按钮无文本仅有图标,可改用
desc("内容描述").findOne()或id("控件ID").findOne()进行定位。 - 脚本运行前,建议手动走一遍流程,使用 Hamibot 的「布局分析」工具抓取准确的文本、desc 或 id。
- 若同一屏幕存在多个相同文本,可使用
click("文本", 索引),索引从 0 开始。
按上述模板替换占位符后即可直接运行。如需适配复杂交互(如滑动、弹窗处理、验证码等),可提供具体界面特征,我会为你补充对应逻辑。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实