第一步点击播放“◀”按钮, 延迟为一秒,检测有没有“继续”按钮,有则点击继续,无则执行下一步。
延迟一秒,第二步识别到右边屏幕有按键消失,点击左上角返回“<″按键,延迟一秒,识别“下一节”按键。
延迟一秒,第三步滑动至屏幕最下面, 识别“下一章节”,点击“下一章节”,延迟五秒。
回答
以下是为你编写的 Hamibot 自动化脚本。代码已严格适配 Rhino 1.7.15 引擎(无箭头函数、无默认参数),并加入了控件定位容错与执行稳定性处理。
// 文档地址 https://docs.hamibot.com/
// 建议根据你设计脚本时的手机分辨率修改此处参数,实现坐标自动放缩
setScreenMetrics(1080, 1920);
// 安全点击辅助函数:优先尝试控件点击,失败则尝试坐标点击
function safeClick(selector, x, y) {
var target = selector.findOnce();
if (target) {
if (target.click()) {
return true;
}
// 部分控件 clickable 为 false,尝试点击其中心坐标
var bounds = target.bounds();
click(bounds.centerX(), bounds.centerY());
return true;
}
// 控件未找到时 fallback 到坐标点击
if (x && y) {
click(x, y);
return true;
}
return false;
}
function main() {
// ================= 第一步 =================
log("第一步:点击播放按钮 ◀");
safeClick(text("◀"), 150, 960); // 坐标为备用值,请按实际调整
sleep(1000);
// 检测“继续”按钮
if (text("继续").exists()) {
log("检测到继续按钮,执行点击");
safeClick(text("继续"));
sleep(1000);
} else {
log("未检测到继续按钮,跳过");
}
sleep(1000);
// ================= 第二步 =================
log("第二步:等待右侧按键消失");
// 请将 "右侧按键文本" 替换为实际右侧按钮的 text 或 desc
var rightBtn = "右侧按键文本";
var waitCount = 0;
var maxWait = 20; // 最多等待 10 秒 (20 * 500ms)
while (text(rightBtn).exists() && waitCount < maxWait) {
sleep(500);
waitCount++;
}
log("右侧按键已消失或等待超时");
log("点击左上角返回 < 按键");
safeClick(text("<"), 80, 120);
sleep(1000);
// 识别“下一节”按键
if (text("下一节").exists()) {
log("已识别到下一节按钮");
} else {
log("未识别到下一节按钮,请检查界面状态");
}
sleep(1000);
// ================= 第三步 =================
log("第三步:滑动至屏幕最下方");
// scrollDown() 会自动寻找面积最大的可滑动控件进行下滑
for (var i = 0; i < 6; i++) {
scrollDown();
sleep(300);
}
log("识别并点击下一章节");
if (text("下一章节").exists()) {
safeClick(text("下一章节"));
} else {
log("未找到下一章节按钮");
}
sleep(5000);
log("全流程执行完毕");
}
main();
关键说明与最佳实践
-
控件定位准确性
- 脚本中的
text("◀")、text("继续")等依赖界面实际文本。不同应用或系统语言可能导致文本差异。 - 强烈建议在 Hamibot 控制台使用 「布局分析」 或 「设备调试」 功能,抓取目标控件的
text、desc或id,并替换脚本中的选择器。
- 脚本中的
-
右侧按键消失检测逻辑
- 自动化无法直接“感知”消失动作,通常采用 轮询检测:持续判断该控件是否还存在,直到
exists()返回false或达到超时时间。 - 请将代码中的
"右侧按键文本"替换为实际右侧按钮的标识。如果该按钮没有 text,可改用desc("xxx")或id("xxx")。
- 自动化无法直接“感知”消失动作,通常采用 轮询检测:持续判断该控件是否还存在,直到
-
滑动与坐标适配
scrollDown()会默认寻找屏幕上面积最大的可滑动区域执行下滑,适用于绝大多数列表或网页。- 脚本开头已加入
setScreenMetrics(1080, 1920)。当 fallback 到坐标点击时,Hamibot 会根据你运行设备的实际分辨率自动换算坐标,避免多机型错位。
-
稳定性优化
- 使用
safeClick封装了点击逻辑:优先调用控件.click(),若控件clickable为false则自动计算中心坐标点击,最后 fallback 到预设坐标。这能显著提升复杂 UI 下的点击成功率。 - 所有
sleep()均按你的要求设置。若网络或页面加载较慢,可适当延长等待时间或改用waitFor()系列函数。
- 使用
如需针对特定 APP 的控件结构进行精准适配,你可以提供布局分析抓取的控件属性(id/text/desc/bounds),我会为你进一步优化选择器与执行逻辑。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实