 | |  |  |
AIWROK软件安卓AIWROK汇集软件点击
- // 安卓AIWROK汇集软件点击
- // 🍎交流QQ群711841924群一,苹果内测群,528816639
- // 兼容ES5标准,仅支持安卓设备运行
- // 初始化日志窗口
- if (typeof logWindow !== 'undefined') {
- print.log(logWindow.show());
- print.log(logWindow.clear());
- print.log(logWindow.setHeight(2500));
- print.log(logWindow.setWidth(1500));
- print.log(logWindow.setNoClickModel());
- }
- // 兼容ES5的延迟函数
- function es5Sleep(ms) {
- if (typeof sleep !== 'undefined') {
- if (typeof sleep.millisecond === 'function') {
- sleep.millisecond(ms);
- } else if (typeof sleep === 'function') {
- sleep(ms);
- }
- } else {
- // 纯JavaScript实现的延迟
- var start = new Date().getTime();
- while (new Date().getTime() - start < ms) {
- // 空循环延迟
- }
- }
- }
- // ==================== 1. 按钮点击事件监听 ====================
- /**
- * 设置按钮点击事件监听器
- * @param {Object} button - 按钮对象
- * @param {Function} callback - 点击回调函数
- */
- function setButtonClickListener(button, callback) {
- if (button && button.setOnClickListener) {
- try {
- button.setOnClickListener(callback);
- print.log("按钮点击事件监听器设置成功");
- } catch (e) {
- print.log("设置按钮点击事件监听器时出错: " + e);
- }
- } else {
- print.log("无效的按钮对象");
- }
- }
- // 示例用法
- function buttonClickExample() {
- // 假设我们有一个按钮对象
- // var btn_start = f1.findViewById('startButton');
-
- // 设置点击事件
- /*
- setButtonClickListener(btn_start, function() {
- printl("启动按钮被点击");
- // 执行启动逻辑
- });
- */
-
- print.log("按钮点击事件示例演示完成");
- }
- // ==================== 2. 屏幕坐标点击 ====================
- /**
- * 点击屏幕指定坐标
- * @param {number} x - x坐标
- * @param {number} y - y坐标
- * @returns {boolean} 是否点击成功
- */
- function clickScreen(x, y) {
- try {
- if (typeof auto !== 'undefined' && typeof auto.clickPoint === 'function') {
- auto.clickPoint(x, y);
- print.log("使用auto.clickPoint点击坐标 (" + x + ", " + y + ")");
- return true;
- } else if (typeof hid !== 'undefined' && typeof hid.click === 'function') {
- hid.click(x, y);
- print.log("使用hid.click点击坐标 (" + x + ", " + y + ")");
- return true;
- } else {
- print.log("未找到可用的点击方法");
- return false;
- }
- } catch (e) {
- print.log("点击屏幕失败: " + e);
- return false;
- }
- }
- // 示例用法
- function screenClickExample() {
- // 点击屏幕中心位置
- var screenWidth = 1080; // 假设屏幕宽度
- var screenHeight = 1920; // 假设屏幕高度
- var centerX = screenWidth / 2;
- var centerY = screenHeight / 2;
-
- clickScreen(centerX, centerY);
- print.log("屏幕坐标点击示例演示完成");
- }
- // ==================== 3. 带重试机制的安全点击 ====================
- /**
- * 安全点击(带重试机制)
- * @param {number} x - x坐标
- * @param {number} y - y坐标
- * @param {number} retries - 重试次数
- * @returns {boolean} 是否点击成功
- */
- function safeClick(x, y, retries) {
- if (typeof retries === 'undefined') retries = 3;
-
- for (var i = 0; i < retries; i++) {
- try {
- if (typeof hid !== 'undefined' && typeof hid.click === 'function') {
- hid.click(x, y);
- print.log("点击坐标 (" + x + ", " + y + ") 成功");
- return true;
- } else if (typeof auto !== 'undefined' && typeof auto.clickPoint === 'function') {
- auto.clickPoint(x, y);
- print.log("点击坐标 (" + x + ", " + y + ") 成功");
- return true;
- }
- } catch (error) {
- print.log("点击失败,重试第 " + (i + 1) + " 次:" + error);
- // 兼容ES5的sleep调用
- es5Sleep(500);
- }
- }
- print.log("点击坐标 (" + x + ", " + y + ") 最终失败");
- return false;
- }
- // 示例用法
- function safeClickExample() {
- safeClick(500, 500, 3);
- print.log("安全点击示例演示完成");
- }
- // ==================== 4. 找字点击 ====================
- /**
- * 找字并点击功能
- * @param {string} targetText - 要查找并点击的文字
- * @param {array} region - 搜索区域,可选参数 [x1, y1, x2, y2]
- * @param {object} ocr - OCR实例
- * @returns {boolean} 是否成功点击
- */
- function findTextAndClick(targetText, region, ocr) {
- try {
- var result;
-
- if (region && region.length == 4) {
- // 区域找字
- // result = ocr.recognize(region[0], region[1], region[2], region[3]);
- print.log("在区域 " + region + " 中查找文字: " + targetText);
- } else {
- // 全屏找字
- // result = ocr.recognize(0, 0, screenWidth, screenHeight);
- print.log("在全屏中查找文字: " + targetText);
- }
-
- // 模拟找到文字的情况
- var mockResult = {
- text: targetText,
- centerX: 500,
- centerY: 500
- };
-
- if (mockResult) {
- print.log('准备点击文字: ' + mockResult.text);
- print.log('点击坐标: (' + mockResult.centerX + ', ' + mockResult.centerY + ')');
-
- // 添加随机偏移模拟真实点击
- var randomX = mockResult.centerX + (Math.random() - 0.5) * 10;
- var randomY = mockResult.centerY + (Math.random() - 0.5) * 10;
-
- clickScreen(randomX, randomY);
- es5Sleep(500);
-
- return true;
- } else {
- print.log('未找到可点击的文字: ' + targetText);
- return false;
- }
- } catch (e) {
- print.log('找字点击失败: ' + e);
- return false;
- }
- }
- // 示例用法
- function findTextClickExample() {
- findTextAndClick("确定", [0, 0, 1080, 1920]);
- print.log("找字点击示例演示完成");
- }
- // ==================== 5. 系统事件监听 ====================
- /**
- * 设置系统事件监听器
- */
- function setupSystemEventListeners() {
- // 开始按钮事件监听
- try {
- if (typeof event !== 'undefined' && typeof event.onStartEvent === 'function') {
- event.onStartEvent(function(){
- print.log('开始按钮被点击');
- });
- print.log("开始按钮事件监听器设置成功");
- }
- } catch (e) {
- print.log("设置开始按钮事件监听器时出错: " + e);
- }
-
- // 暂停按钮事件监听
- try {
- if (typeof event !== 'undefined' && typeof event.onPauseEvent === 'function') {
- event.onPauseEvent(function(){
- print.log('暂停按钮被点击');
- });
- print.log("暂停按钮事件监听器设置成功");
- }
- } catch (e) {
- print.log("设置暂停按钮事件监听器时出错: " + e);
- }
-
- // 停止按钮事件监听
- try {
- if (typeof event !== 'undefined' && typeof event.onStopEvent === 'function') {
- event.onStopEvent(function(){
- print.log('停止按钮被点击');
- });
- print.log("停止按钮事件监听器设置成功");
- }
- } catch (e) {
- print.log("设置停止按钮事件监听器时出错: " + e);
- }
- }
- // 示例用法
- function systemEventExample() {
- setupSystemEventListeners();
- print.log("系统事件监听示例演示完成");
- }
- // ==================== 6. 网页按钮点击 ====================
- /**
- * 网页按钮点击示例代码
- * 注意:此代码应在H5页面中使用
- */
- var webButtonClickExample = {
- // HTML部分
- html: '<button onclick="showTextValue()">显示文本值</button> ' +
- '<button onclick="runStartScript()">执行开始脚本</button> ' +
- '<button class="danger" onclick="closePage()">关闭页面</button>',
-
- // JavaScript部分
- javascript: '// 显示文本值\n' +
- 'function showTextValue() {\n' +
- ' var inputText = document.getElementById("inputText");\n' +
- ' if (inputText) {\n' +
- ' printLog("文本值: " + inputText.value);\n' +
- ' }\n' +
- '}\n' +
- '\n' +
- '// 执行开始脚本\n' +
- 'function runStartScript() {\n' +
- ' printLog("执行开始脚本");\n' +
- ' // 这里可以调用AIWROK的API\n' +
- '}\n' +
- '\n' +
- '// 关闭页面\n' +
- 'function closePage() {\n' +
- ' printLog("关闭页面");\n' +
- ' if (typeof dismiss === "function") {\n' +
- ' dismiss();\n' +
- ' }\n' +
- '}\n' +
- '\n' +
- '// 使用addEventListener方式\n' +
- 'function setupEventListeners() {\n' +
- ' var buttons = document.querySelectorAll("button");\n' +
- ' for (var i = 0; i < buttons.length; i++) {\n' +
- ' (function(button) {\n' +
- ' button.addEventListener("click", function() {\n' +
- ' printLog("按钮被点击: " + this.textContent);\n' +
- ' });\n' +
- ' })(buttons[i]);\n' +
- ' }\n' +
- '}'
- };
- // ==================== 7. HID点击方式 ====================
- /**
- * 使用HID方式点击屏幕
- * @param {number} x - x坐标
- * @param {number} y - y坐标
- * @returns {boolean} 是否点击成功
- */
- function hidClick(x, y) {
- try {
- if (typeof hid !== 'undefined' && typeof hid.click === 'function') {
- hid.click(x, y);
- print.log("HID点击坐标 (" + x + ", " + y + ") 成功");
- return true;
- } else {
- print.log("HID模块不可用,尝试使用其他点击方式");
- // 回退到通用点击方法
- return clickScreen(x, y);
- }
- } catch (e) {
- print.log("HID点击失败: " + e);
- return false;
- }
- }
- // 示例用法
- function hidClickExample() {
- hidClick(500, 500);
- print.log("HID点击示例演示完成");
- }
- // ==================== 8. 组合点击示例 ====================
- /**
- * 组合点击示例
- * 演示多种点击方式的组合使用
- */
- function combinedClickExample() {
- print.log("=== 组合点击示例开始 ===");
-
- // 1. 先点击屏幕中央
- clickScreen(540, 960);
- // 兼容ES5的延迟处理
- es5Sleep(1000);
-
- // 2. 使用安全点击点击确定按钮
- safeClick(800, 1600, 3);
- // 兼容ES5的延迟处理
- es5Sleep(1000);
-
- // 3. 模拟找字点击
- findTextAndClick("下一步");
-
- print.log("=== 组合点击示例结束 ===");
- }
- // ==================== 9. 找图点击 ====================
- /**
- * 找图并点击功能
- * @param {string} imagePath - 图片路径
- * @returns {boolean} 是否成功点击
- */
- function findImageAndClick(imagePath) {
- try {
- print.log("开始找图: " + imagePath);
-
- // 检查opencv是否可用
- if (typeof opencv !== 'undefined' && typeof opencv.findImagesEx === 'function') {
- var detects = opencv.findImagesEx(imagePath);
-
- if (detects !== null && detects.length > 0) {
- print.log("找到目标: " + detects);
-
- // 点击第一个找到的目标
- if (typeof detects[0] !== 'undefined' && typeof detects[0].click === 'function') {
- detects[0].click();
- print.log("点击目标成功");
- return true;
- } else if (typeof detects[0] !== 'undefined' && typeof detects[0].x !== 'undefined' && typeof detects[0].y !== 'undefined') {
- // 如果没有click方法,尝试直接点击坐标
- var x = detects[0].x;
- var y = detects[0].y;
- clickScreen(x, y);
- print.log("点击坐标 (" + x + ", " + y + ") 成功");
- return true;
- }
- } else {
- print.log("未找到目标");
- return false;
- }
- } else {
- print.log("opencv模块不可用");
- return false;
- }
- } catch (e) {
- print.log("找图点击失败: " + e);
- return false;
- }
- }
- // 示例用法
- function findImageClickExample() {
- // 使用指定的图片名称
- var result = findImageAndClick('图色766772.cv');
- print.log("找图点击示例演示完成,结果: " + result);
- }
- // ==================== 10. 其他点击方式 ====================
- /**
- * 点击百分比坐标
- * @param {number} percentX - X轴百分比 (0-100)
- * @param {number} percentY - Y轴百分比 (0-100)
- * @returns {boolean} 是否点击成功
- */
- function clickPercent(percentX, percentY) {
- try {
- if (typeof auto !== 'undefined' && typeof auto.clickPercent === 'function') {
- auto.clickPercent(percentX, percentY);
- print.log("使用auto.clickPercent点击百分比坐标 (" + percentX + ", " + percentY + ")");
- return true;
- } else if (typeof agent !== 'undefined' && typeof agent.clickPercent === 'function') {
- agent.clickPercent(percentX, percentY);
- print.log("使用agent.clickPercent点击百分比坐标 (" + percentX + ", " + percentY + ")");
- return true;
- } else if (typeof hid !== 'undefined' && typeof hid.clickPercent === 'function') {
- hid.clickPercent(percentX, percentY);
- print.log("使用hid.clickPercent点击百分比坐标 (" + percentX + ", " + percentY + ")");
- return true;
- } else {
- print.log("未找到可用的百分比点击方法");
- return false;
- }
- } catch (e) {
- print.log("点击百分比坐标失败: " + e);
- return false;
- }
- }
- /**
- * 连续点击
- * @param {number} x - x坐标
- * @param {number} y - y坐标
- * @param {number} count - 点击次数
- * @param {number} interval - 点击间隔(毫秒)
- * @returns {boolean} 是否点击成功
- */
- function clickMultiple(x, y, count, interval) {
- try {
- if (typeof hid !== 'undefined' && typeof hid.clicks === 'function') {
- hid.clicks(x, y, count, interval);
- print.log("使用hid.clicks连续点击 (" + x + ", " + y + ") " + count + " 次");
- return true;
- } else {
- // 模拟连续点击
- for (var i = 0; i < count; i++) {
- clickScreen(x, y);
- if (i < count - 1) {
- es5Sleep(interval || 100);
- }
- }
- print.log("模拟连续点击 (" + x + ", " + y + ") " + count + " 次");
- return true;
- }
- } catch (e) {
- print.log("连续点击失败: " + e);
- return false;
- }
- }
- /**
- * 代理模式点击
- * @param {number} x - x坐标
- * @param {number} y - y坐标
- * @returns {boolean} 是否点击成功
- */
- function agentClick(x, y) {
- try {
- if (typeof agent !== 'undefined' && typeof agent.click === 'function') {
- agent.click(x, y);
- print.log("使用agent.click点击坐标 (" + x + ", " + y + ")");
- return true;
- } else {
- print.log("代理模块不可用");
- return false;
- }
- } catch (e) {
- print.log("代理点击失败: " + e);
- return false;
- }
- }
- /**
- * 元素点击
- * @param {Object} node - 元素节点
- * @returns {boolean} 是否点击成功
- */
- function clickElement(node) {
- try {
- if (node && typeof node.click === 'function') {
- node.click();
- print.log("点击元素成功");
- return true;
- } else if (node && typeof node.clickPoint === 'function') {
- node.clickPoint();
- print.log("点击元素坐标成功");
- return true;
- } else {
- print.log("无效的元素节点或无点击方法");
- return false;
- }
- } catch (e) {
- print.log("点击元素失败: " + e);
- return false;
- }
- }
- /**
- * 监听点击事件
- * @param {Function} callback - 点击回调函数
- * @returns {boolean} 是否设置成功
- */
- function setupClickEventListener(callback) {
- try {
- if (typeof event !== 'undefined' && typeof event.onClickEvent === 'function') {
- event.onClickEvent(callback);
- print.log("点击事件监听器设置成功");
- return true;
- } else {
- print.log("事件模块不可用");
- return false;
- }
- } catch (e) {
- print.log("设置点击事件监听器失败: " + e);
- return false;
- }
- }
- // 示例用法
- function otherClickMethodsExample() {
- print.log("=== 其他点击方式示例开始 ===");
-
- // 测试百分比点击
- clickPercent(50, 50);
- es5Sleep(500);
-
- // 测试连续点击
- clickMultiple(500, 500, 3, 200);
- es5Sleep(500);
-
- // 测试代理点击
- agentClick(600, 600);
- es5Sleep(500);
-
- // 测试点击事件监听
- setupClickEventListener(function(x, y) {
- print.log("监听到点击事件: (" + x + ", " + y + ")");
- });
-
- print.log("=== 其他点击方式示例结束 ===");
- }
- // ==================== 演示所有点击方式 ====================
- /**
- * 演示所有点击方式
- */
- function demoAllClickMethods() {
- print.log("\n==================== 安卓AIWROK点击方式演示 ====================");
-
- print.log("\n1. 按钮点击事件监听示例:");
- buttonClickExample();
-
- print.log("\n2. 屏幕坐标点击示例:");
- screenClickExample();
-
- print.log("\n3. 安全点击示例:");
- safeClickExample();
-
- print.log("\n4. 找字点击示例:");
- findTextClickExample();
-
- print.log("\n5. 系统事件监听示例:");
- systemEventExample();
-
- print.log("\n6. HID点击示例:");
- hidClickExample();
-
- print.log("\n7. 组合点击示例:");
- combinedClickExample();
-
- print.log("\n8. 找图点击示例:");
- findImageClickExample();
-
- print.log("\n9. 其他点击方式示例:");
- otherClickMethodsExample();
-
- print.log("\n==================== 演示完成 ====================");
- print.log("\n网页按钮点击示例代码:\n" + webButtonClickExample.html);
- print.log("\n网页按钮点击JavaScript代码:\n" + webButtonClickExample.javascript);
- }
- // 运行演示
- demoAllClickMethods();
- // 导出常用函数
- var ClickUtils = {
- click: clickScreen,
- safeClick: safeClick,
- findTextAndClick: findTextAndClick,
- findImageAndClick: findImageAndClick,
- hidClick: hidClick,
- clickPercent: clickPercent,
- clickMultiple: clickMultiple,
- agentClick: agentClick,
- clickElement: clickElement,
- setupClickEventListener: setupClickEventListener,
- setButtonClickListener: setButtonClickListener,
- setupSystemEventListeners: setupSystemEventListeners
- };
复制代码
| |  | |  |
|