 | |  |  | 苹果脚本示例7种不同的OCR识别和点击方法
- // AIWROK苹果系统指定坐标点击综合示例
- // 🍎交流QQ群711841924群一,苹果内测群,528816639
- function sleep(ms) {
- var start = new Date().getTime();
- while (new Date().getTime() - start < ms) {
- }
- }
- function main() {
- printl("========== AIWROK苹果系统指定坐标点击综合示例 ==========\n");
-
- // 定义要操作的五个坐标点
- var points = [
- {x: 171, y: 359, name: "位置1"},
- {x: 358, y: 351, name: "位置2"},
- {x: 574, y: 353, name: "位置3"},
- {x: 375, y: 1084, name: "位置4"},
- {x: 580, y: 1081, name: "位置5"}
- ];
-
- printl("将要对以下五个坐标点进行各种点击操作演示:");
- for (var i = 0; i < points.length; i++) {
- printl(points[i].name + ": (" + points[i].x + ", " + points[i].y + ")");
- }
- printl("");
- demoDirectClick(points); // 示例1: 直接点击方法
- demoPercentClick(points); // 示例2: 百分比点击方法
- demoDoubleClick(points); // 示例3: 双击方法
- demoMoveAndClick(points); // 示例4: 移动后点击方法
- demoMouseUpDownClick(points); // 示例5: 鼠标按下抬起点击
- demoRandomClickInArea(points); // 示例6: 区域内随机点击
- demoAdvancedClickMethods(points); // 示例7: 高级点击方法
-
- printl("\n========== 所有示例执行完毕 ==========");
- }
- // ========== 示例1: 直接点击方法 ==========
- function demoDirectClick(points) {
- printl("【示例1】直接点击方法");
- printl("说明:使用hid.click()直接在指定坐标位置点击\n");
- try {
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 绝对坐标点击: x=" + point.x + ", y=" + point.y);
- hid.click(point.x, point.y);
- printl("✓ " + point.name + " 点击成功");
- sleep(500); // 每次点击间隔0.5秒便于观察
- }
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 示例2: 百分比点击方法 ==========
- function demoPercentClick(points) {
- printl("【示例2】百分比点击方法");
- printl("说明:将绝对坐标转换为屏幕百分比后使用hid.clickPercent()点击\n");
- try {
- // 获取屏幕尺寸(假设标准iOS屏幕尺寸)
- var screenWidth = device.width || 750;
- var screenHeight = device.height || 1334;
-
- printl("屏幕尺寸: " + screenWidth + "x" + screenHeight);
-
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
-
- // 计算百分比坐标
- var xPercent = point.x / screenWidth;
- var yPercent = point.y / screenHeight;
-
- printl(point.name + " - 百分比坐标: x=" + xPercent.toFixed(3) + ", y=" + yPercent.toFixed(3));
- hid.clickPercent(xPercent, yPercent);
- printl("✓ " + point.name + " 百分比点击成功");
- sleep(500);
- }
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 示例3: 双击方法 ==========
- function demoDoubleClick(points) {
- printl("【示例3】双击方法");
- printl("说明:使用hid.doubleClick()在指定坐标位置执行双击操作\n");
- try {
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 绝对坐标双击: x=" + point.x + ", y=" + point.y);
- hid.doubleClick(point.x, point.y);
- printl("✓ " + point.name + " 双击成功");
- sleep(800); // 双击间隔稍短一些
- }
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 示例4: 移动后点击方法 ==========
- function demoMoveAndClick(points) {
- printl("【示例4】移动后点击方法");
- printl("说明:先移动到目标位置再执行点击操作\n");
- try {
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 移动到坐标: x=" + point.x + ", y=" + point.y);
- hid.moveToRealPoint(point.x, point.y);
- sleep(500); // 等待移动完成
-
- printl("执行点击...");
- hid.mouseDown();
- sleep(50); // 短暂保持按下状态
- hid.mouseUp();
- printl("✓ " + point.name + " 移动后点击成功");
- sleep(500);
- }
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 示例5: 鼠标按下抬起点击 ==========
- function demoMouseUpDownClick(points) {
- printl("【示例5】鼠标按下抬起点击");
- printl("说明:使用mouseDown和mouseUp组合实现精确控制的点击\n");
- try {
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 准备点击: x=" + point.x + ", y=" + point.y);
-
- // 先移动到目标位置
- hid.moveToRealPoint(point.x, point.y);
- sleep(200);
-
- // 执行按下-抬起操作
- hid.mouseDown();
- sleep(100); // 控制按下持续时间
- hid.mouseUp();
-
- printl("✓ " + point.name + " 鼠标按下抬起点击成功");
- sleep(500);
- }
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 示例6: 区域内随机点击 ==========
- function demoRandomClickInArea(points) {
- printl("【示例6】区域内随机点击");
- printl("说明:在每个坐标点周围的小区域内进行随机点击\n");
- try {
- var radius = 20; // 随机范围半径
-
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
-
- // 生成随机偏移量
- var randomX = point.x + (Math.random() * 2 - 1) * radius;
- var randomY = point.y + (Math.random() * 2 - 1) * radius;
-
- printl(point.name + " - 原始坐标: (" + point.x + ", " + point.y + ")");
- printl("随机点击坐标: (" + Math.round(randomX) + ", " + Math.round(randomY) + ")");
-
- hid.click(Math.round(randomX), Math.round(randomY));
- printl("✓ " + point.name + " 区域内随机点击成功");
- sleep(500);
- }
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 示例7: 高级点击方法 ==========
- function demoAdvancedClickMethods(points) {
- printl("【示例7】高级点击方法");
- printl("说明:组合多种技术实现更复杂的点击操作\n");
- try {
- printl("方式1: 连续快速点击同一位置");
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 执行3次快速点击");
-
- for (var j = 0; j < 3; j++) {
- hid.click(point.x, point.y);
- sleep(100); // 快速间隔
- }
- printl("✓ " + point.name + " 快速连击完成");
- sleep(500); // 减少间隔时间
- }
-
- sleep(1000);
-
- printl("方式2: 长按操作");
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 执行长按操作");
-
- hid.moveToRealPoint(point.x, point.y);
- sleep(100);
- hid.mouseDown();
- sleep(2000); // 长按2秒
- hid.mouseUp();
-
- printl("✓ " + point.name + " 长按操作完成");
- sleep(500); // 减少间隔时间
- }
-
- sleep(1000);
-
- printl("方式3: 带反馈的点击验证");
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- printl(point.name + " - 执行带验证的点击");
-
- // 记录点击前状态
- var beforeTime = new Date().getTime();
-
- // 执行点击(使用非阻塞方式)
- hid.moveToRealPoint(point.x, point.y);
- sleep(50);
- hid.mouseDown();
- sleep(30);
- hid.mouseUp();
-
- // 计算耗时
- var afterTime = new Date().getTime();
- var clickDuration = afterTime - beforeTime;
-
- printl("✓ " + point.name + " 点击耗时: " + clickDuration + "ms");
- sleep(500); // 减少等待时间
- }
-
- } catch (e) {
- printl("错误: " + e);
- }
- printl("");
- }
- // ========== 辅助函数 ==========
- /**
- * 安全地执行点击操作,包含错误处理
- */
- function safeClick(x, y, description) {
- try {
- printl("执行点击: " + description);
- hid.click(x, y);
- printl("✓ 点击成功");
- return true;
- } catch (e) {
- printl("✗ 点击失败: " + e.message);
- return false;
- }
- }
- /**
- * 批量执行相同的点击操作
- */
- function batchClick(points, operationName, clickFunction) {
- printl("批量执行 " + operationName + " 操作");
- var successCount = 0;
-
- for (var i = 0; i < points.length; i++) {
- var point = points[i];
- if (clickFunction(point)) {
- successCount++;
- }
- sleep(500);
- }
-
- printl("批量操作完成,成功: " + successCount + "/" + points.length);
- return successCount === points.length;
- }
- // 执行主函数
- main();
复制代码
| |  | |  |
|