苹果脚本示例7种不同的OCR识别和点击方法
苹果脚本示例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.name + ": (" + points.x + ", " + points.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;
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;
// 计算百分比坐标
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;
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;
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;
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;
// 生成随机偏移量
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;
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;
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;
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;
if (clickFunction(point)) {
successCount++;
}
sleep(500);
}
printl("批量操作完成,成功: " + successCount + "/" + points.length);
return successCount === points.length;
}
// 执行主函数
main();
页:
[1]