 | |  |  | AIWROK苹果脚本sleep方法综合实战示例
- /*
- 🍎交流 QQ 群 711841924 群一,苹果内测群,528816639
- 🍎睡眠类 [sleep] 方法综合实战示例
- 📝 版本:2026-V2.0
- 🎯 适用:AIWROK 苹果 iOS 自动化脚本
- */
- // ============================================
- // 📚 sleep 类方法完整说明
- // ============================================
- // 方法一:📌millisecond 毫秒级延迟
- /*
- 类别 详情说明
- 方法功能 使程序暂停执行指定的毫秒数
- 方法签名 Promise<void> millisecond(Number ms)
- 返回值 Promise<void>(延迟完成的Promise对象)
- 参数 - Number ms:需要延迟的毫秒数
- 应用场景 - UI动画延迟
- - 点击间隔控制
- - OCR识别后等待
- - 短暂暂停操作
- */
- // 示例:延迟10毫秒
- sleep.millisecond(10);
- // 方法二:📌second 秒级延迟
- /*
- 类别 详情说明
- 方法功能 使程序暂停执行指定的秒数
- 方法签名 Promise<void> second(Number s)
- 返回值 Promise<void>(延迟完成的Promise对象)
- 参数 - Number s:需要延迟的秒数
- 应用场景 - 页面加载等待
- - 任务进度提示
- - 长时间操作间隔
- - 网络请求等待
- */
- // 示例:延迟10秒
- sleep.second(10);
- // ============================================
- // 🎯 实战场景一:快速点击自动化工具
- // ============================================
- function quickClickAutomation() {
- printl("=== 🎯 实战场景一:快速点击自动化工具 ===");
-
- var clickCount = 0;
- var targetCount = 100;
- var clickInterval = 10; // 毫秒
-
- printl("开始快速点击,目标次数:" + targetCount);
- printl("点击间隔:" + clickInterval + "毫秒");
-
- // 移动到目标位置
- hid.moveToPercentPoint(0.4774, 0.7126, 0.4774, 0.7126);
-
- // 等待移动完成(使用毫秒级延迟)
- sleep.millisecond(500);
-
- // 执行快速点击
- for (let i = 0; i < targetCount; i++) {
- hid.mouseDown();
- hid.mouseUp();
- clickCount++;
-
- // 使用毫秒级延迟控制点击间隔
- if (i < targetCount - 1) {
- sleep.millisecond(clickInterval);
- }
- }
-
- printl("✅ 点击完成,共执行 " + clickCount + " 次");
- }
- // ============================================
- // 🎯 实战场景二:OCR识别与点击流程
- // ============================================
- function ocrClickWorkflow() {
- printl("=== 🎯 实战场景二:OCR识别与点击流程 ===");
-
- try {
- // 步骤1:执行OCR识别
- printl("步骤1:开始OCR识别...");
- var ocrResult = screen.ocr(0, 0, 1, 1);
- var allDetects = ocrResult.getAllDetect();
-
- printl("✓ OCR识别完成,检测到 " + allDetects.length + " 个目标");
-
- // 短暂延迟,确保识别结果稳定
- sleep.millisecond(200);
-
- // 步骤2:查找目标文本
- printl("步骤2:查找目标文本...");
- for (var i = 0; i < allDetects.length; i++) {
- var detectObj = allDetects[i];
- var text = detectObj.text();
-
- if (text && text.indexOf("收益") !== -1) {
- printl("✓ 找到目标:'" + text + "'");
-
- // 点击目标
- detectObj.click();
-
- // 等待点击效果显示
- sleep.millisecond(800);
-
- // 步骤3:在下方区域查找次级目标
- printl("步骤3:在下方区域查找次级目标...");
- var rect = detectObj.getRect();
- var coords = rect.toString().replace("矩形区域:", "").trim().split(", ");
- var bottom = parseFloat(coords[2]) + 0.05;
-
- var settingTarget = ocrResult.findIncludeText("明日再来", [0, coords[1], 1, bottom]);
-
- if (settingTarget) {
- printl("✓ 找到次级目标");
- settingTarget.click();
-
- // 等待操作完成
- sleep.second(2);
- }
-
- break;
- }
- }
-
- printl("✅ OCR工作流程完成");
-
- } catch (e) {
- printl("❌ 执行出错:" + e.message);
- }
- }
- // ============================================
- // 🎯 实战场景三:滑动操作序列
- // ============================================
- function swipeSequenceAutomation() {
- printl("=== 🎯 实战场景三:滑动操作序列 ===");
-
- var swipeCount = 0;
- var maxSwipes = 5;
-
- printl("开始滑动序列,最大次数:" + maxSwipes);
-
- while (swipeCount < maxSwipes) {
- swipeCount++;
- printl("执行第 " + swipeCount + " 次滑动...");
-
- // 上滑操作
- // 正确参数顺序:startXPercent, startYPercent, endXPercent, endYPercent, swipTime, step
- hid.swipVPercent(0.5, 0.8, 0.5, 0.2, 500, 1);
-
- // 每次滑动后等待,让屏幕内容稳定
- sleep.millisecond(1000);
-
- // 尝试OCR识别目标
- var ocrResult = screen.ocr(0, 0, 1, 1);
- var target = ocrResult.findIncludeText("加载更多");
-
- if (target) {
- printl("✓ 找到'加载更多',点击加载");
- target.click();
-
- // 等待内容加载
- sleep.second(2);
- }
- }
-
- printl("✅ 滑动序列完成,共执行 " + swipeCount + " 次");
- }
- // ============================================
- // 🎯 实战场景四:多任务调度系统
- // ============================================
- function multiTaskScheduler() {
- printl("=== 🎯 实战场景四:多任务调度系统 ===");
-
- var tasks = [
- { name: "任务1:检查更新", delay: 1000, action: checkUpdate },
- { name: "任务2:清理缓存", delay: 2000, action: clearCache },
- { name: "任务3:同步数据", delay: 3000, action: syncData }
- ];
-
- printl("开始执行多任务调度...");
-
- for (var i = 0; i < tasks.length; i++) {
- var task = tasks[i];
- printl("执行 " + task.name);
-
- // 执行任务
- task.action();
-
- // 根据任务延迟等待
- sleep.millisecond(task.delay);
-
- printl("✓ " + task.name + " 完成");
- }
-
- printl("✅ 所有任务执行完成");
- }
- // 辅助函数
- function checkUpdate() {
- printl(" 正在检查更新...");
- sleep.millisecond(500);
- }
- function clearCache() {
- printl(" 正在清理缓存...");
- sleep.millisecond(800);
- }
- function syncData() {
- printl(" 正在同步数据...");
- sleep.millisecond(1200);
- }
- // ============================================
- // 🎯 实战场景五:智能等待与重试机制
- // ============================================
- function smartWaitRetry() {
- printl("=== 🎯 实战场景五:智能等待与重试机制 ===");
-
- var maxRetries = 3;
- var retryDelay = 2000; // 2秒
-
- printl("开始智能等待与重试,最大重试次数:" + maxRetries);
-
- for (var attempt = 1; attempt <= maxRetries; attempt++) {
- printl("第 " + attempt + " 次尝试...");
-
- // 尝试查找目标
- var ocrResult = screen.ocr(0, 0, 1, 1);
- var target = ocrResult.findIncludeText("确认");
-
- if (target) {
- printl("✓ 找到目标,执行点击");
- target.click();
-
- // 等待操作完成
- sleep.millisecond(1500);
-
- printl("✅ 操作成功完成");
- return;
- } else {
- printl("× 未找到目标");
-
- if (attempt < maxRetries) {
- printl("等待 " + (retryDelay / 1000) + " 秒后重试...");
- sleep.second(retryDelay / 1000);
- }
- }
- }
-
- printl("❌ 达到最大重试次数,操作失败");
- }
- // ============================================
- // 🎯 实战场景六:进度条模拟与反馈
- // ============================================
- function progressBarSimulation() {
- printl("=== 🎯 实战场景六:进度条模拟与反馈 ===");
-
- var totalSteps = 10;
- var stepDelay = 500; // 每步500毫秒
-
- printl("开始执行任务,总步骤:" + totalSteps);
-
- for (var step = 1; step <= totalSteps; step++) {
- var progress = Math.round((step / totalSteps) * 100);
-
- // 显示进度提示
- toast.show("任务执行中 (" + progress + "%)");
- printl("进度:" + progress + "% - 步骤 " + step + "/" + totalSteps);
-
- // 执行任务步骤
- performTaskStep(step);
-
- // 等待指定时间
- sleep.millisecond(stepDelay);
- }
-
- toast.show("任务已完成");
- printl("✅ 所有步骤执行完成");
- }
- function performTaskStep(step) {
- // 模拟任务步骤
- sleep.millisecond(100);
- }
- // ============================================
- // 🎯 实战场景七:组合操作流程
- // ============================================
- function combinedWorkflow() {
- printl("=== 🎯 实战场景七:组合操作流程 ===");
-
- // 阶段1:初始化
- printl("阶段1:初始化...");
- sleep.millisecond(500);
-
- // 阶段2:滑动到目标区域
- printl("阶段2:滑动到目标区域...");
- // 正确参数顺序:startXPercent, startYPercent, endXPercent, endYPercent, swipTime, step
- hid.swipVPercent(0.5, 0.8, 0.5, 0.2, 800, 1);
- sleep.millisecond(1000);
-
- // 阶段3:OCR识别
- printl("阶段3:OCR识别目标...");
- var ocrResult = screen.ocr(0, 0, 1, 1);
- var target = ocrResult.findIncludeText("开始");
-
- if (target) {
- printl("✓ 找到目标");
-
- // 阶段4:点击目标
- printl("阶段4:点击目标...");
- target.click();
- sleep.millisecond(800);
-
- // 阶段5:等待页面加载
- printl("阶段5:等待页面加载...");
- sleep.second(3);
-
- // 阶段6:执行后续操作
- printl("阶段6:执行后续操作...");
- performSecondaryActions();
-
- printl("✅ 组合流程完成");
- } else {
- printl("❌ 未找到目标,流程终止");
- }
- }
- function performSecondaryActions() {
- // 执行次要操作
- sleep.millisecond(500);
- hid.moveToPercentPoint(0.5, 0.5, 0.5, 0.5);
- sleep.millisecond(300);
- hid.mouseDown();
- hid.mouseUp();
- sleep.millisecond(500);
- }
- // ============================================
- // 🎯 实战场景八:性能优化示例
- // ============================================
- function performanceOptimization() {
- printl("=== 🎯 实战场景八:性能优化示例 ===");
-
- // 对比:使用不同延迟时间的性能差异
-
- printl("测试1:使用10毫秒延迟");
- var start1 = new Date().getTime();
- for (let i = 0; i < 100; i++) {
- sleep.millisecond(10);
- }
- var end1 = new Date().getTime();
- printl("耗时:" + (end1 - start1) + "毫秒");
-
- printl("测试2:使用100毫秒延迟");
- var start2 = new Date().getTime();
- for (let i = 0; i < 10; i++) {
- sleep.millisecond(100);
- }
- var end2 = new Date().getTime();
- printl("耗时:" + (end2 - start2) + "毫秒");
-
- printl("测试3:使用1秒延迟");
- var start3 = new Date().getTime();
- for (let i = 0; i < 3; i++) {
- sleep.second(1);
- }
- var end3 = new Date().getTime();
- printl("耗时:" + (end3 - start3) + "毫秒");
-
- printl("✅ 性能测试完成");
- }
- // ============================================
- // 📊 使用建议与最佳实践
- // ============================================
- /*
- 🍎 sleep 方法使用建议:
- 1. 毫秒级延迟 (millisecond):
- - 适用场景:UI动画、点击间隔、OCR后短暂等待
- - 推荐值:10-1000毫秒
- - 注意:过短的延迟可能导致操作不稳定
- 2. 秒级延迟 (second):
- - 适用场景:页面加载、网络请求、长时间等待
- - 推荐值:1-10秒
- - 注意:过长的延迟会影响用户体验
- 3. 组合使用:
- - 在复杂流程中,合理组合使用毫秒和秒级延迟
- - 根据实际需要调整延迟时间
- - 使用重试机制提高稳定性
- 4. 性能优化:
- - 避免不必要的延迟
- - 在循环中谨慎使用延迟
- - 考虑使用异步操作替代长时间延迟
- 5. 调试技巧:
- - 在关键步骤添加printl日志
- - 使用toast.show显示进度
- - 逐步调整延迟时间找到最佳值
- */
- // ============================================
- // 🚀 主函数:运行所有示例
- // ============================================
- function main() {
- printl("🍎 AIWROK 睡眠类方法综合实战示例");
- printl("====================================");
-
- // 运行各个实战场景
- quickClickAutomation();
- sleep.second(1);
-
- ocrClickWorkflow();
- sleep.second(1);
-
- swipeSequenceAutomation();
- sleep.second(1);
-
- multiTaskScheduler();
- sleep.second(1);
-
- smartWaitRetry();
- sleep.second(1);
-
- progressBarSimulation();
- sleep.second(1);
-
- combinedWorkflow();
- sleep.second(1);
-
- performanceOptimization();
-
- printl("====================================");
- printl("✅ 所有示例执行完成");
- }
- // 运行所有示例
- main();
复制代码
| |  | |  |
|