回答
以下是为你编写的 Hamibot UC浏览器自动打卡脚本模板。由于 UC 浏览器版本更新频繁,打卡入口可能位于原生界面或 H5/WebView 页面中,脚本采用通用选择器+重试机制设计,你需根据实际界面微调文本或坐标。
// 文档地址 https://docs.hamibot.com/
// UC浏览器自动打卡脚本模板
// 注意:UI元素可能随版本更新变化,请根据实际情况调整选择器或坐标
auto.waitFor();
var config = {
appName: "UC浏览器",
packageName: "com.UCMobile",
clockInText: "打卡",
successTexts: ["打卡成功", "已打卡", "签到成功", "今日已打卡"],
maxRetries: 3,
retryDelay: 2000
};
function main() {
log("开始执行UC浏览器自动打卡任务");
launchApp(config.appName);
sleep(4000);
if (!enterClockInPage()) {
log("未能进入打卡页面,任务终止");
return;
}
sleep(2000);
performClockIn();
}
function enterClockInPage() {
// 示例路径:底部导航 -> 我的 -> 打卡入口
// 请根据实际界面替换选择器
var myTab = text("我的").findOne(3000) || desc("我的").findOne(3000);
if (myTab) {
myTab.click();
sleep(1500);
}
var entry = text("每日打卡").findOne(2000) ||
text("签到打卡").findOne(2000) ||
text("活动打卡").findOne(2000);
if (entry) {
entry.click();
return true;
}
return false;
}
function performClockIn() {
var retryCount = 0;
while (retryCount < config.maxRetries) {
var btn = text(config.clockInText).findOne(2000) ||
text("立即打卡").findOne(2000) ||
desc(config.clockInText).findOne(2000);
if (btn) {
btn.click();
log("已点击打卡按钮");
sleep(3000);
for (var i = 0; i < config.successTexts.length; i++) {
if (text(config.successTexts[i]).exists()) {
log("打卡成功!");
return;
}
}
}
retryCount++;
log("第 " + retryCount + " 次尝试打卡,等待重试...");
sleep(config.retryDelay);
}
log("打卡失败,已达到最大重试次数");
}
main();
使用与适配指南
- 获取准确选择器:在 Hamibot 控制台或手机端打开脚本编辑器,点击「布局分析」,点击 UC 浏览器中的打卡按钮,查看
text、desc、id或className属性,替换脚本中的对应值。 - WebView 页面处理:若打卡按钮位于网页内,原生
text()可能无法识别。可尝试:- 使用
click(x, y)坐标点击(通过布局分析获取中心坐标) - 或启用 WebView 调试:
auto.setWebViewDebuggingEnabled(true)(需 UC 浏览器支持)
- 使用
- 权限要求:确保设备已开启无障碍服务、悬浮窗权限(如需),并在 Hamibot 客户端授予脚本运行权限。
- 定时执行:在 Hamibot 控制台创建「定时任务」,设置每日固定时间触发此脚本,实现全自动打卡。
最佳实践建议
- 添加
try...catch包裹关键点击操作,避免异常中断。 - 使用
waitFor()替代固定sleep()提升稳定性,例如:text("打卡").waitFor(5000)。 - 打卡成功后可调用
home()或back()返回桌面,避免停留在活动页。 - 定期使用布局分析验证选择器有效性,UC 浏览器大版本更新后通常需微调。
如需针对你提供的截图界面定制精确选择器,请描述截图中的按钮文本、位置或层级结构,我将为你生成对应代码。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实



