|
|
AIWROKÈí¼þ²âÊÔÎÄÐÄʶ±ðʶ±ðÑéÖ¤ÂëʾÀý
- // AIWROK ×Ô¶¯»¯Á÷³Ì£º½ØÍ¼BÕ¾ÑéÖ¤Âë ¡ú Æô¶¯ÎÄÐÄÖúÊÖ ¡ú ·¢ËͽØÍ¼Ñ¯ÎÊÍ϶¯¾àÀë ¡ú ²É¼¯»Ø´ð ¡ú ÇлØBÕ¾Í϶¯»¬¿é
- // °üÃû£ºcom.baidu.newapp£¨°Ù¶ÈÎÄÐÄÖúÊÖ£©
- //
- // ʹÓÃ˵Ã÷£º
- // 1. ÔÚBÕ¾ÑéÖ¤ÂëÒ³ÃæÔËÐнű¾
- // 2. ½Å±¾×Ô¶¯½ØÍ¼²¢·¢Ë͸øÎÄÐÄʶ±ð
- // 3. ½âÎöÎÄÐÄ·µ»ØµÄÍ϶¯¾àÀ룬ÇлØBÕ¾Í϶¯»¬¿é
- print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³ÌÆô¶¯ =====");
- print.time();
- // ========== ÅäÖÃÇø ==========
- var ÎÄÐİüÃû = "com.baidu.newapp";
- var BÕ¾°üÃû = "tv.danmaku.bili";
- var ½ØÍ¼±£´æÂ·¾¶ = "/sdcard/ÑéÖ¤Âë½ØÍ¼.png";
- var µÈ´ý»Ø´ð³¬Ê±Ãë = 20;
- var »Ø´ðÊä³öµÈ´ýÃë = 20;
- var »¬¿éУ׼ϵÊý = 1.0;
- var ÌáÎÊ»°Êõ = "Çë°ïÎÒ·ÖÎöÕâÕÅͼƬ£¬¸æËßÎÒ×ó±ßµÄ·½¿éÐèÒªÏòÓÒÒÆ¶¯¶àÉÙÏñËØ²ÅÄܺÍÓұߵÄȱ¿Ú¶ÔÆë£¬Ö»Êä³ö£º¾àÀë¼ÓÊý×Ö";
- // ========== »ñÈ¡É豸ÐÅÏ¢ ==========
- var ÆÁÄ»¿í = screen.getScreenWidth();
- var ÆÁÄ»¸ß = screen.getScreenHeight();
- var ÑéÖ¤Â뻬¿é¾àÀë = null;
- print.log("ÆÁÄ»³ß´ç£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);
- print.log("´úÀí״̬£º" + (agent.isOpen() ? "ÒÑ¿ªÆô" : "먦Æô"));
- // ========== ¹¤¾ßº¯Êý ==========
- function »ñÈ¡UI() {
- var xml = agent.getXml();
- return "" + xml;
- }
- function ×Ö·û´®³¤¶È(s) {
- var str = "" + s;
- return str.length;
- }
- function ½âÂëHTMLʵÌå(s) {
- var str = "" + s;
- str = str.replace(/
- /g, "\n");
- str = str.replace(/
- /g, "\r");
- str = str.replace(/ /g, "\t");
- str = str.replace(/'/g, "'");
- str = str.replace(/"/g, '"');
- str = str.replace(/"/g, '"');
- str = str.replace(/'/g, "'");
- str = str.replace(/&/g, "&");
- str = str.replace(/</g, "<");
- str = str.replace(/>/g, ">");
- return str;
- }
- function »ñÈ¡µ±Ç°×îºóAI»Ø´ð(xml) {
- var »Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
- if (»Ø´ðÁбí.length === 0) return "";
- return »Ø´ðÁбí[»Ø´ðÁбí.length - 1];
- }
- function »ñÈ¡WebViewÇøÓò(xml) {
- var xmlStr = "" + xml;
- var webViewPattern = /<node[^>]*?class="com\.baidu\.webkit\.sdk\.WebView"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/;
- var wvMatch = webViewPattern.exec(xmlStr);
- if (wvMatch) {
- return {
- x1: parseInt(wvMatch[1]),
- y1: parseInt(wvMatch[2]),
- x2: parseInt(wvMatch[3]),
- y2: parseInt(wvMatch[4])
- };
- }
- return { x1: 0, y1: 348, x2: ÆÁÄ»¿í, y2: ÆÁÄ»¸ß * 0.5 };
- }
- function OCRʶ±ðWebViewÇøÓò(xml) {
- try {
- var img = screen.screenShotFull();
-
- var ocrres = img.MLKitOcr('zhs');
- var ocrText = "";
-
- if (ocrres && typeof ocrres.getAllString === 'function') {
- ocrText = "" + ocrres.getAllString();
- } else if (ocrres && typeof ocrres.getJsonString === 'function') {
- var jsonStr = "" + ocrres.getJsonString();
- var textPattern = /"text"\s*:\s*"([^"]+)"/g;
- var match;
- var allText = [];
- while ((match = textPattern.exec(jsonStr)) !== null) {
- if (match[1] && match[1].length > 0) {
- allText.push(match[1]);
- }
- }
- ocrText = allText.join("\n");
- } else {
- var str = "" + ocrres;
- var textPattern2 = /"text"\s*:\s*"([^"]+)"/g;
- var match2;
- var allText2 = [];
- while ((match2 = textPattern2.exec(str)) !== null) {
- if (match2[1] && match2[1].length > 0) {
- allText2.push(match2[1]);
- }
- }
- ocrText = allText2.join("\n");
- }
-
- img.recycle();
-
- if (ocrText && ocrText.length > 0) {
- print.log("✓ MLKitOcrʶ±ð³É¹¦");
- print.log("--- OCR½á¹û¿ªÊ¼ ---");
- print.log(ocrText);
- print.log("--- OCR½á¹û½áÊø ---");
- return "" + ocrText;
- }
-
- print.log("⚠ MLKitOcrδʶ±ðµ½ÄÚÈÝ");
- return "";
- } catch (e) {
- print.log("⚠ OCRʶ±ðÒì³££º" + e.message);
- return "";
- }
- }
- function ÌáÈ¡Êý×Ö(Îı¾) {
- var str = "" + Îı¾;
- var ¾«È·Æ¥Åä = str.match(/¾àÀë¼Ó(\d+)/);
- if (¾«È·Æ¥Åä) {
- var num = parseInt(¾«È·Æ¥Åä[1]);
- if (num >= 30) {
- return "" + num;
- }
- }
- var ±¸Ñ¡Æ¥Åä = str.match(/¾àÀ뾫[\u51c6\u79ef\u786e]¼Ó?(\d+)/);
- if (±¸Ñ¡Æ¥Åä) {
- var num2 = parseInt(±¸Ñ¡Æ¥Åä[1]);
- if (num2 >= 30) {
- return "" + num2;
- }
- }
- var allMatches = str.match(/\d+/g);
- if (allMatches) {
- var ºòÑ¡Êý×Ö = [];
- for (var i = 0; i < allMatches.length; i++) {
- var n = parseInt(allMatches[i]);
- if (n >= 30 && n < 1000) {
- ºòÑ¡Êý×Ö.push(n);
- }
- }
- if (ºòÑ¡Êý×Ö.length > 0) {
- ºòÑ¡Êý×Ö.sort(function(a, b) { return b - a; });
- return "" + ºòÑ¡Êý×Ö[0];
- }
- var allNums = [];
- for (var j = 0; j < allMatches.length; j++) {
- allNums.push(parseInt(allMatches[j]));
- }
- allNums.sort(function(a, b) { return b - a; });
- return "" + allNums[0];
- }
- return "";
- }
- function ²É¼¯AI»Ø´ðÁбí(xml) {
- var xmlStr = "" + xml;
- var »Ø´ðÁбí = [];
- var hasWebView = xmlStr.indexOf('com.baidu.webkit.sdk.WebView') !== -1;
-
- if (hasWebView) {
- var ocrÎı¾ = OCRʶ±ðWebViewÇøÓò(xml);
- if (ocrÎı¾ && ×Ö·û´®³¤¶È(ocrÎı¾) > 1) {
- »Ø´ðÁбí.push(ocrÎı¾);
- print.log("✓ OCRʶ±ðµ½WebViewÎı¾");
- print.log("--- OCR½á¹û¿ªÊ¼ ---");
- print.log(ocrÎı¾);
- print.log("--- OCR½á¹û½áÊø ---");
-
- var ocrÊý×Ö = ÌáÈ¡Êý×Ö(ocrÎı¾);
- if (ocrÊý×Ö) {
- print.log("✓ ´ÓOCR½á¹ûÖÐÌáÈ¡µ½Êý×Ö£º" + ocrÊý×Ö);
- »Ø´ðÁбí.push(ocrÊý×Ö);
- }
- }
- }
- var textViewPattern = /<node[^>]*?text="([^"]+)"[^>]*?class="android\.widget\.TextView"[^>]*?\/?>/g;
- var tvMatch;
- var Ìø¹ý¹¤¾ßÀ¸ = true;
- while ((tvMatch = textViewPattern.exec(xmlStr)) !== null) {
- if (tvMatch[1] && ×Ö·û´®³¤¶È(tvMatch[1]) > 1) {
- var ÔʼÎı¾ = tvMatch[1];
- var ½âÂëÎı¾ = ½âÂëHTMLʵÌå(ÔʼÎı¾);
-
- if (½âÂëÎı¾.includes("ÈÎÎñ") || ½âÂëÎı¾.includes("´´Òâ") ||
- ½âÂëÎı¾.includes("·ÅÐÄ") || ½âÂëÎı¾.includes("ħ·¨")) {
- Ìø¹ý¹¤¾ßÀ¸ = false;
- continue;
- }
-
- if (!Ìø¹ý¹¤¾ßÀ¸ && !½âÂëÎı¾.includes("½Ó×ÅÎÊ") &&
- !½âÂëÎı¾.includes("ÄÚÈÝÓÉAIÉú³É") &&
- !»Ø´ðÁбí.includes(½âÂëÎı¾)) {
- »Ø´ðÁбí.push(½âÂëÎı¾);
- print.log("✓ ÔÚTextViewÖÐÕÒµ½Îı¾: '" + ½âÂëÎı¾ + "'");
- }
- }
- }
- var editTextPattern = /<node[^>]*?text="([^"]+)"[^>]*?class="android\.widget\.EditText"[^>]*?\/?>/g;
- var etMatch;
- while ((etMatch = editTextPattern.exec(xmlStr)) !== null) {
- if (etMatch[1] && ×Ö·û´®³¤¶È(etMatch[1]) > 1 && !etMatch[1].includes("½Ó×ÅÎÊ")) {
- var ÔʼÎı¾ = etMatch[1];
- var ½âÂëÎı¾ = ½âÂëHTMLʵÌå(ÔʼÎı¾);
- if (!½âÂëÎı¾.includes("ÄÚÈÝÓÉAIÉú³É") && !»Ø´ðÁбí.includes(½âÂëÎı¾)) {
- »Ø´ðÁбí.push(½âÂëÎı¾);
- print.log("✓ ÔÚEditTextÖÐÕÒµ½Îı¾: '" + ½âÂëÎı¾ + "'");
- }
- }
- }
- if (»Ø´ðÁбí.length === 0) {
- print.log("⚠ δÕÒµ½AI»Ø´ð½Úµã");
- } else {
- print.log("✓ ²É¼¯µ½" + »Ø´ðÁбí.length + "ÌõAI»Ø´ð");
- }
- return »Ø´ðÁбí;
- }
- function È«ÆÁ½ØÍ¼(±£´æÂ·¾¶) {
- try {
- var result = agent.shell("screencap -p " + ±£´æÂ·¾¶);
- print.log("✓ ½ØÍ¼ÃüÁîÖ´ÐУº" + result);
-
- var lsResult = agent.shell("ls -la " + ±£´æÂ·¾¶);
- print.log("✓ ½ØÍ¼Îļþ¼ì²é£º" + lsResult);
-
- return true;
- } catch (e) {
- print.log("⚠ ½ØÍ¼Ê§°Ü£º" + e.message);
- return false;
- }
- }
- function ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml) {
- var xmlStr = "" + xml;
-
- var hasWebView = xmlStr.indexOf('com.baidu.webkit.sdk.WebView') !== -1;
- var hasInput = xmlStr.indexOf('text="·¢ÏûÏ¢»ò°´×¡Ëµ»°"') !== -1 ||
- xmlStr.indexOf('text="ÔÚÕâÀïÌáÎÊ"') !== -1 ||
- xmlStr.indexOf('text="½Ó×ÅÎÊ"') !== -1;
-
- if (hasWebView || hasInput) {
- print.log("✓ ÎÄÐÄAPP´ò¿ªÐÎʽ£ºÖ±½Ó¶Ô»°Ò³Ãæ");
- return "¶Ô»°Ò³";
- }
-
- var hasDialogTab = xmlStr.indexOf('text="¶Ô»°"') !== -1;
- var hasWenxinText = xmlStr.indexOf('text="ÎÄÐÄ"') !== -1;
- var hasAssistantText = xmlStr.indexOf('text="ÖúÊÖ"') !== -1;
- var hasRecyclerView = xmlStr.indexOf('class="androidx.recyclerview.widget.RecyclerView"') !== -1;
- var hasBottomNav = xmlStr.indexOf('text="¹¤¾ß"') !== -1 && xmlStr.indexOf('text="·¢ÏÖ"') !== -1 && xmlStr.indexOf('text="ÎÒµÄ"') !== -1;
-
- if ((hasDialogTab && hasRecyclerView) || (hasWenxinText && hasAssistantText) || hasBottomNav) {
- print.log("✓ ÎÄÐÄAPP´ò¿ªÐÎʽ£º¶Ô»°ÁбíÒ³Ãæ");
- return "ÁбíÒ³";
- }
-
- print.log("⚠ ÎÄÐÄAPP´ò¿ªÐÎʽ£ºÎ´ÖªÒ³Ãæ");
- return "δ֪";
- }
- function ²éÕÒÊäÈë¿òÖÐÐÄ(xml) {
- var xmlStr = "" + xml;
-
- var inputKeywords = ["·¢ÏûÏ¢»ò°´×¡Ëµ»°", "ÔÚÕâÀïÌáÎÊ", "½Ó×ÅÎÊ"];
- for (var k = 0; k < inputKeywords.length; k++) {
- var inputIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
- if (inputIdx !== -1) {
- var ¶Î = xmlStr.substring(inputIdx);
- var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m) {
- var x1 = parseInt(m[1]);
- var y1 = parseInt(m[2]);
- var x2 = parseInt(m[3]);
- var y2 = parseInt(m[4]);
- print.log("✓ ÊäÈë¿ò¶¨Î»£ºtext=" + inputKeywords[k] + "£¬bounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
- return {
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- };
- }
- }
- }
- var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
- if (editTextIdx !== -1) {
- var ¶Î2 = xmlStr.substring(editTextIdx);
- var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m2) {
- var x1 = parseInt(m2[1]);
- var y1 = parseInt(m2[2]);
- var x2 = parseInt(m2[3]);
- var y2 = parseInt(m2[4]);
- print.log("✓ ÊäÈë¿ò¶¨Î»£¨EditText£©£ºbounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
- return {
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- };
- }
- }
- print.log("⚠ δÕÒµ½ÊäÈë¿ò£¬Ê¹Óöµµ××ø±ê");
- return {
- x: ÆÁÄ»¿í * 0.4,
- y: ÆÁÄ»¸ß * 0.85
- };
- }
- function ²éÕҼӺŰ´Å¥(xml) {
- var xmlStr = "" + xml;
-
- var inputKeywords = ["·¢ÏûÏ¢»ò°´×¡Ëµ»°", "ÔÚÕâÀïÌáÎÊ", "½Ó×ÅÎÊ"];
- var ÊäÈë¿ò±ß½ç = null;
-
- for (var k = 0; k < inputKeywords.length; k++) {
- var inputBoxIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
- if (inputBoxIdx !== -1) {
- var ÊäÈë¿ò¶Î = xmlStr.substring(inputBoxIdx);
- ÊäÈë¿ò±ß½ç = ÊäÈë¿ò¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (ÊäÈë¿ò±ß½ç) break;
- }
- }
-
- if (!ÊäÈë¿ò±ß½ç) {
- var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
- if (editTextIdx !== -1) {
- var ¶Î = xmlStr.substring(editTextIdx);
- ÊäÈë¿ò±ß½ç = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- }
- }
-
- if (ÊäÈë¿ò±ß½ç) {
- var ÊäÈë¿òX2 = parseInt(ÊäÈë¿ò±ß½ç[3]);
- var ÊäÈë¿òY = parseInt(ÊäÈë¿ò±ß½ç[2]);
- var ÊäÈë¿òµ×²¿Y = parseInt(ÊäÈë¿ò±ß½ç[4]);
- var ÊäÈë¿òÖÐÐÄY = (ÊäÈë¿òY + ÊäÈë¿òµ×²¿Y) / 2;
-
- var plusPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var plusMatch;
- var ºòÑ¡°´Å¥ = [];
-
- while ((plusMatch = plusPattern.exec(xmlStr)) !== null) {
- var bx1 = parseInt(plusMatch[1]);
- var by1 = parseInt(plusMatch[2]);
- var bx2 = parseInt(plusMatch[3]);
- var by2 = parseInt(plusMatch[4]);
-
- if (by1 >= ÊäÈë¿òÖÐÐÄY - 100 && by2 <= ÊäÈë¿òÖÐÐÄY + 200 && bx1 > ÊäÈë¿òX2 - 50) {
- ºòÑ¡°´Å¥.push({ x: (bx1 + bx2) / 2, y: (by1 + by2) / 2 });
- }
- }
-
- if (ºòÑ¡°´Å¥.length > 0) {
- ºòÑ¡°´Å¥.sort(function(a, b) { return a.x - b.x; });
- print.log("✓ ¼ÓºÅ°´Å¥¶¨Î»£ºÊäÈë¿òÓÒ²àclickableÔªËØ£¬×ø±ê(" + Math.round(ºòÑ¡°´Å¥[0].x) + "," + Math.round(ºòÑ¡°´Å¥[0].y) + ")");
- return ºòÑ¡°´Å¥[0];
- }
- }
- print.log("⚠ ¼ÓºÅ°´Å¥Ê¹Óöµµ××ø±ê£¨ÊäÈë¿òÓҲࣩ");
- var ÊäÈë¿ò = ²éÕÒÊäÈë¿òÖÐÐÄ(xml);
- return {
- x: ÆÁÄ»¿í * 0.9,
- y: ÊäÈë¿ò.y
- };
- }
- function Õ³ÌùÎı¾(Îı¾) {
- try {
- Clipboard.copy("" + Îı¾);
- } catch (e) {
- print.log("⚠ Clipboard.copy ʧ°Ü£º" + e.message);
- }
- sleep.millisecond(ºÁÃë = 300);
- try {
- agent.shell("service call clipboard 3 i32 1 s16 '" + Îı¾ + "' i32 0");
- } catch (e2) {
- // ºöÂÔ´íÎó
- }
- sleep.millisecond(ºÁÃë = 300);
- agent.shell("input keyevent 279");
- sleep.second(Ãë = 1);
- print.log("✓ ÒÑÕ³ÌùÎı¾£º" + Îı¾);
- }
- function ²éÕÒÏà²áÑ¡Ïî(xml) {
- var xmlStr = "" + xml;
-
- var text¹Ø¼ü´Ê = ["Ïà²á", "ͼƬ", "ÕÕÆ¬", "ËùÓÐÕÕÆ¬", "´ÓÏà²áÑ¡Ôñ", "Ñ¡ÔñͼƬ"];
- for (var i = 0; i < text¹Ø¼ü´Ê.length; i++) {
- var kw = text¹Ø¼ü´Ê[i];
- var idx = xmlStr.indexOf('text="' + kw + '"');
- if (idx !== -1) {
- var ¶Î = xmlStr.substring(idx);
- var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m) {
- print.log("✓ Ïà²áÑ¡Ïλ£ºtext=" + kw);
- return {
- x: (parseInt(m[1]) + parseInt(m[3])) / 2,
- y: (parseInt(m[2]) + parseInt(m[4])) / 2
- };
- }
- }
- }
- var desc¹Ø¼ü´Ê = ["Ïà²á", "ͼƬ", "ÕÕÆ¬"];
- for (var j = 0; j < desc¹Ø¼ü´Ê.length; j++) {
- var kw2 = desc¹Ø¼ü´Ê[j];
- var idx2 = xmlStr.indexOf('content-desc="' + kw2 + '"');
- if (idx2 !== -1) {
- var ¶Î2 = xmlStr.substring(idx2);
- var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m2) {
- print.log("✓ Ïà²áÑ¡Ïλ£ºcontent-desc=" + kw2);
- return {
- x: (parseInt(m2[1]) + parseInt(m2[3])) / 2,
- y: (parseInt(m2[2]) + parseInt(m2[4])) / 2
- };
- }
- }
- }
- return null;
- }
- function ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml) {
- var xmlStr = "" + xml;
-
- var packageMatch = xmlStr.match(/package="([^"]+)"/);
- var µ±Ç°°üÃû = packageMatch ? packageMatch[1] : "";
-
- if (µ±Ç°°üÃû && µ±Ç°°üÃû !== ÎÄÐİüÃû) {
- print.log("✓ ¼ì²âµ½ÏµÍ³Ïà²áÒ³Ãæ£¬°üÃû£º" + µ±Ç°°üÃû);
- return true;
- }
-
- if (µ±Ç°°üÃû === ÎÄÐİüÃû) {
- var ÓÐÅÄÕչؼü´Ê = xmlStr.indexOf('text="ÅÄÕÕ"') !== -1;
- var Óб¾µØÎļþ¹Ø¼ü´Ê = xmlStr.indexOf('text="±¾µØÎļþ"') !== -1;
- var ÓÐ΢ÐÅÎļþ¹Ø¼ü´Ê = xmlStr.indexOf('text="΢ÐÅÎļþ"') !== -1;
-
- if (ÓÐÅÄÕչؼü´Ê || Óб¾µØÎļþ¹Ø¼ü´Ê || ÓÐ΢ÐÅÎļþ¹Ø¼ü´Ê) {
- var ÓÐÍ¼Æ¬Íø¸ñ = xmlStr.indexOf('ugc_item_gridview') !== -1;
- var ÓÐËùÓÐͼƬ = xmlStr.indexOf('text="ËùÓÐͼƬ"') !== -1;
- var ÓÐÈ¡Ïû°´Å¥ = xmlStr.indexOf('text="È¡Ïû"') !== -1;
-
- if (ÓÐÍ¼Æ¬Íø¸ñ || ÓÐËùÓÐͼƬ || ÓÐÈ¡Ïû°´Å¥) {
- print.log("✓ ¼ì²âµ½ÎÄÐÄÖúÊÖÄÚ²¿Í¼Æ¬Ñ¡ÔñÒ³Ãæ");
- return true;
- }
-
- print.log("⚠ ÎÄÐÄÖúÊÖÄÚ²¿¸½¼þ²Ëµ¥£¬²»ÊÇϵͳÏà²á");
- return false;
- }
- }
-
- var gallery¹Ø¼ü´Ê = ["×î½ü", "ͼ¿â", "Camera", "ËùÓÐͼƬ", "ÕÕÆ¬", "Ïà²á", "All photos", "Photos"];
- for (var i = 0; i < gallery¹Ø¼ü´Ê.length; i++) {
- if (xmlStr.indexOf('text="' + gallery¹Ø¼ü´Ê[i] + '"') !== -1 ||
- xmlStr.indexOf('content-desc="' + gallery¹Ø¼ü´Ê[i] + '"') !== -1) {
- var ÓÐÁÄÌìÊäÈë = xmlStr.indexOf("½Ó×ÅÎÊ") !== -1 || xmlStr.indexOf("ÔÚÕâÀïÌáÎÊ") !== -1 || xmlStr.indexOf("·¢ÏûÏ¢»ò°´×¡Ëµ»°") !== -1;
- if (!ÓÐÁÄÌìÊäÈë) {
- print.log("✓ ¼ì²âµ½Ïà²áÒ³Ãæ£¨¹Ø¼ü´Ê£º" + gallery¹Ø¼ü´Ê[i] + "£©");
- return true;
- }
- }
- }
-
- var ÓÐͼƬÎļþ = xmlStr.indexOf('.png"') !== -1 || xmlStr.indexOf('.jpg"') !== -1 ||
- xmlStr.indexOf('.jpeg"') !== -1 || xmlStr.indexOf('.gif"') !== -1;
- var ÓÐÑ¡Ôñ°´Å¥ = xmlStr.indexOf('text="Ñ¡Ôñ"') !== -1;
- var ÓÐÁÄÌìÊäÈë2 = xmlStr.indexOf("½Ó×ÅÎÊ") !== -1 || xmlStr.indexOf("ÔÚÕâÀïÌáÎÊ") !== -1 || xmlStr.indexOf("·¢ÏûÏ¢»ò°´×¡Ëµ»°") !== -1;
-
- if (ÓÐͼƬÎļþ && ÓÐÑ¡Ôñ°´Å¥ && !ÓÐÁÄÌìÊäÈë2) {
- print.log("✓ ¼ì²âµ½Ïà²áÒ³Ãæ£¨ÓÐͼƬÎļþºÍÑ¡Ôñ°´Å¥£©");
- return true;
- }
-
- return false;
- }
- function ÊÇ·ñÔÚͼƬԤÀÀÒ³Ãæ(xml) {
- var xmlStr = "" + xml;
- if (xmlStr.indexOf('text="Íê³É"') !== -1 || xmlStr.indexOf('text="·¢ËÍ"') !== -1) {
- return true;
- }
- if (xmlStr.indexOf('content-desc="Íê³É"') !== -1 || xmlStr.indexOf('content-desc="·¢ËÍ"') !== -1) {
- return true;
- }
- return false;
- }
- function ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml) {
- var xmlStr = "" + xml;
-
- var ¹Ø¼ü´Ê = ["Íê³É", "·¢ËÍ", "È·ÈÏ"];
- for (var i = 0; i < ¹Ø¼ü´Ê.length; i++) {
- var kw = ¹Ø¼ü´Ê[i];
- var textIdx = xmlStr.indexOf('text="' + kw + '"');
- if (textIdx !== -1) {
- var ¶Î = xmlStr.substring(textIdx);
- var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m) {
- var x = (parseInt(m[1]) + parseInt(m[3])) / 2;
- var y = (parseInt(m[2]) + parseInt(m[4])) / 2;
- print.log("✓ ͼƬԤÀÀÈ·Èϰ´Å¥¶¨Î»£ºtext=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
- return { x: x, y: y };
- }
- }
- }
-
- for (var j = 0; j < ¹Ø¼ü´Ê.length; j++) {
- var kw2 = ¹Ø¼ü´Ê[j];
- var descIdx = xmlStr.indexOf('content-desc="' + kw2 + '"');
- if (descIdx !== -1) {
- var ¶Î2 = xmlStr.substring(descIdx);
- var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m2) {
- var x = (parseInt(m2[1]) + parseInt(m2[3])) / 2;
- var y = (parseInt(m2[2]) + parseInt(m2[4])) / 2;
- print.log("✓ ͼƬԤÀÀÈ·Èϰ´Å¥¶¨Î»£ºcontent-desc=" + kw2 + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
- return { x: x, y: y };
- }
- }
- }
-
- print.log("⚠ ͼƬԤÀÀÈ·Èϰ´Å¥Ê¹Óöµµ××ø±ê£¨µ×²¿Öм䣩");
- return { x: ÆÁÄ»¿í * 0.5, y: ÆÁÄ»¸ß * 0.92 };
- }
- function ²éÕÒÏà²áÑ¡Ôñ°´Å¥(xml) {
- var xmlStr = "" + xml;
-
- var ¹Ø¼ü´ÊÁбí = ["Ñ¡Ôñ", "Íê³É", "È·ÈÏ", "·¢ËÍ", "È·¶¨"];
- for (var i = 0; i < ¹Ø¼ü´ÊÁбí.length; i++) {
- var kw = ¹Ø¼ü´ÊÁбí[i];
-
- var textPattern = new RegExp('text="' + kw + '[^"]*"[^>]*?bounds="\\[(\\d+),(\\d+)\\]\\[(\\d+),(\\d+)\\]"', 'gi');
- var textMatch = textPattern.exec(xmlStr);
- if (textMatch) {
- var x = (parseInt(textMatch[1]) + parseInt(textMatch[3])) / 2;
- var y = (parseInt(textMatch[2]) + parseInt(textMatch[4])) / 2;
- print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºtext=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
- return { x: x, y: y };
- }
-
- var descIdx = xmlStr.indexOf('content-desc="' + kw + '"');
- if (descIdx !== -1) {
- var ¶Î2 = xmlStr.substring(descIdx);
- var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m2) {
- var x = (parseInt(m2[1]) + parseInt(m2[3])) / 2;
- var y = (parseInt(m2[2]) + parseInt(m2[4])) / 2;
- print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºcontent-desc=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
- return { x: x, y: y };
- }
- }
- }
-
- var bottomButtonPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var bottomMatch;
- var µ×²¿°´Å¥Áбí = [];
- while ((bottomMatch = bottomButtonPattern.exec(xmlStr)) !== null) {
- var bx1 = parseInt(bottomMatch[1]);
- var by1 = parseInt(bottomMatch[2]);
- var bx2 = parseInt(bottomMatch[3]);
- var by2 = parseInt(bottomMatch[4]);
- if (by1 >= ÆÁÄ»¸ß * 0.85) {
- µ×²¿°´Å¥Áбí.push({ x: (bx1 + bx2) / 2, y: (by1 + by2) / 2 });
- }
- }
-
- if (µ×²¿°´Å¥Áбí.length > 0) {
- µ×²¿°´Å¥Áбí.sort(function(a, b) { return b.x - a.x; });
- var ×îÓұ߰´Å¥ = µ×²¿°´Å¥Áбí[0];
- print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºµ×²¿×îÓұ߰´Å¥£¬×ø±ê(" + Math.round(×îÓұ߰´Å¥.x) + "," + Math.round(×îÓұ߰´Å¥.y) + ")");
- return { x: ×îÓұ߰´Å¥.x, y: ×îÓұ߰´Å¥.y };
- }
-
- print.log("⚠ Ïà²áÑ¡Ôñ°´Å¥Ê¹Óöµµ××ø±ê£¨µ×²¿£©");
- return { x: ÆÁÄ»¿í * 0.78, y: ÆÁÄ»¸ß * 0.92 };
- }
- function ²éÕÒµÚÒ»ÕÅͼƬ(xml) {
- var xmlStr = "" + xml;
-
- if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xmlStr)) {
- agent.shell("echo '" + xmlStr.substring(0, 5000) + "' > /sdcard/Ïà²áUI_dump.xml");
- print.log("✓ Òѱ£´æÏà²áUI XMLµ½/sdcard/Ïà²áUI_dump.xml");
-
- var packageMatch = xmlStr.match(/package="([^"]+)"/);
- var µ±Ç°°üÃû = packageMatch ? packageMatch[1] : "";
-
- if (µ±Ç°°üÃû === ÎÄÐİüÃû) {
- var ugcPattern = /<node[^>]*?resource-id="[^"]*?ugc_img"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var ugcMatch;
- var ugcͼƬÁбí = [];
-
- while ((ugcMatch = ugcPattern.exec(xmlStr)) !== null) {
- var ix1 = parseInt(ugcMatch[1]);
- var iy1 = parseInt(ugcMatch[2]);
- var ix2 = parseInt(ugcMatch[3]);
- var iy2 = parseInt(ugcMatch[4]);
- var iw = ix2 - ix1;
- var ih = iy2 - iy1;
-
- if (iw >= 100 && ih >= 100) {
- ugcͼƬÁбí.push({ x1: ix1, y1: iy1, x2: ix2, y2: iy2, x: (ix1 + ix2) / 2, y: (iy1 + iy2) / 2 });
- }
- }
-
- if (ugcͼƬÁбí.length > 0) {
- ugcͼƬÁбí.sort(function(a, b) {
- if (a.y1 !== b.y1) return a.y1 - b.y1;
- return a.x1 - b.x1;
- });
- var µÚÒ»ÕÅͼƬ = ugcͼƬÁбí[0];
- print.log("✓ ÎÄÐÄÖúÊÖÄÚ²¿Ïà²áÕÒµ½µÚÒ»ÕÅͼƬ£º×ø±ê(" + Math.round(µÚÒ»ÕÅͼƬ.x) + "," + Math.round(µÚÒ»ÕÅͼƬ.y) + ")£¬bounds=[" + µÚÒ»ÕÅͼƬ.x1 + "," + µÚÒ»ÕÅͼƬ.y1 + "][" + µÚÒ»ÕÅͼƬ.x2 + "," + µÚÒ»ÕÅͼƬ.y2 + "]");
- return { x: µÚÒ»ÕÅͼƬ.x, y: µÚÒ»ÕÅͼƬ.y };
- }
- }
-
- var nafPattern = /<node[^>]*?NAF="true"[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var nafMatch;
- var NAFСԲµãÁбí = [];
-
- while ((nafMatch = nafPattern.exec(xmlStr)) !== null) {
- var nx1 = parseInt(nafMatch[1]);
- var ny1 = parseInt(nafMatch[2]);
- var nx2 = parseInt(nafMatch[3]);
- var ny2 = parseInt(nafMatch[4]);
- var nw = nx2 - nx1;
- var nh = ny2 - ny1;
-
- if (nw >= 50 && nw <= 300 && nh >= 50 && nh <= 300) {
- if (ny1 >= 400 && ny2 <= ÆÁÄ»¸ß - 400) {
- NAFСԲµãÁбí.push({ x1: nx1, y1: ny1, x2: nx2, y2: ny2, x: (nx1 + nx2) / 2, y: (ny1 + ny2) / 2 });
- }
- }
- }
-
- if (NAFСԲµãÁбí.length > 0) {
- NAFСԲµãÁбí.sort(function(a, b) {
- if (a.y1 !== b.y1) return a.y1 - b.y1;
- return a.x1 - b.x1;
- });
- var Ñ¡ÖÐСԲµã = NAFСԲµãÁбí[0];
- print.log("✓ ComposeViewÕÒµ½NAFСԲµãÑ¡Ôñ¿ò£º×ø±ê(" + Math.round(Ñ¡ÖÐСԲµã.x) + "," + Math.round(Ñ¡ÖÐСԲµã.y) + ")£¬bounds=[" + Ñ¡ÖÐСԲµã.x1 + "," + Ñ¡ÖÐСԲµã.y1 + "][" + Ñ¡ÖÐСԲµã.x2 + "," + Ñ¡ÖÐСԲµã.y2 + "]");
- return { x: Ñ¡ÖÐСԲµã.x, y: Ñ¡ÖÐСԲµã.y };
- }
-
- var imageDescPattern = /<node[^>]*?content-desc="([^"]+\.(png|jpg|jpeg|gif))"[^>]*?class="android\.view\.View"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/gi;
- var imgMatch;
- var ͼƬ½ÚµãÁбí = [];
-
- while ((imgMatch = imageDescPattern.exec(xmlStr)) !== null) {
- var ÎļþÃû = imgMatch[1];
- var ix1 = parseInt(imgMatch[3]);
- var iy1 = parseInt(imgMatch[4]);
- var ix2 = parseInt(imgMatch[5]);
- var iy2 = parseInt(imgMatch[6]);
- var iw = ix2 - ix1;
- var ih = iy2 - iy1;
-
- if (iw >= 100 && ih >= 100) {
- ͼƬ½ÚµãÁбí.push({ ÎļþÃû: ÎļþÃû, x1: ix1, y1: iy1, x2: ix2, y2: iy2, w: iw, h: ih });
- }
- }
-
- if (ͼƬ½ÚµãÁбí.length > 0) {
- ͼƬ½ÚµãÁбí.sort(function(a, b) {
- if (a.y1 !== b.y1) return a.y1 - b.y1;
- return a.x1 - b.x1;
- });
- var µÚÒ»ÕÅͼƬ = ͼƬ½ÚµãÁбí[0];
- print.log("✓ ÕÒµ½Í¼Æ¬£º" + µÚÒ»ÕÅͼƬ.ÎļþÃû + "£¬bounds=[" + µÚÒ»ÕÅͼƬ.x1 + "," + µÚÒ»ÕÅͼƬ.y1 + "][" + µÚÒ»ÕÅͼƬ.x2 + "," + µÚÒ»ÕÅͼƬ.y2 + "]");
-
- var Ñ¡Ôñ¿òX = µÚÒ»ÕÅͼƬ.x1 + µÚÒ»ÕÅͼƬ.w * 0.77;
- var Ñ¡Ôñ¿òY = µÚÒ»ÕÅͼƬ.y1 + µÚÒ»ÕÅͼƬ.h * 0.24;
- print.log("✓ ¼ÆËãСԲµãÑ¡Ôñ¿ò×ø±ê£º(" + Math.round(Ñ¡Ôñ¿òX) + "," + Math.round(Ñ¡Ôñ¿òY) + ")");
- return { x: Ñ¡Ôñ¿òX, y: Ñ¡Ôñ¿òY };
- }
-
- var clickableViewPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var clickMatch;
- var ¿Éµã»÷ÇøÓò = [];
- while ((clickMatch = clickableViewPattern.exec(xmlStr)) !== null) {
- var cx1 = parseInt(clickMatch[1]);
- var cy1 = parseInt(clickMatch[2]);
- var cx2 = parseInt(clickMatch[3]);
- var cy2 = parseInt(clickMatch[4]);
- var cw = cx2 - cx1;
- var ch = cy2 - cy1;
- ¿Éµã»÷ÇøÓò.push({ x1: cx1, y1: cy1, x2: cx2, y2: cy2, w: cw, h: ch, x: (cx1 + cx2) / 2, y: (cy1 + cy2) / 2 });
- }
-
- var Í¼Æ¬ÇøÓòÄڿɵã»÷ = [];
- for (var k = 0; k < ¿Éµã»÷ÇøÓò.length; k++) {
- var item = ¿Éµã»÷ÇøÓò[k];
- if (item.y >= 400 && item.y <= ÆÁÄ»¸ß - 400) {
- Í¼Æ¬ÇøÓòÄڿɵã»÷.push(item);
- }
- }
-
- if (Í¼Æ¬ÇøÓòÄڿɵã»÷.length > 0) {
- Í¼Æ¬ÇøÓòÄڿɵã»÷.sort(function(a, b) {
- if (a.y !== b.y) return a.y - b.y;
- return a.x - b.x;
- });
- var µÚÒ»¸ö¿Éµã»÷ = Í¼Æ¬ÇøÓòÄڿɵã»÷[0];
- print.log("✓ ComposeViewÍ¼Æ¬ÇøÓòÄÚµÚÒ»¸ö¿Éµã»÷ÔªËØ£º×ø±ê(" + Math.round(µÚÒ»¸ö¿Éµã»÷.x) + "," + Math.round(µÚÒ»¸ö¿Éµã»÷.y) + ")");
- return { x: µÚÒ»¸ö¿Éµã»÷.x, y: µÚÒ»¸ö¿Éµã»÷.y };
- }
- print.log("⚠ ϵͳÏà²áδÕÒµ½Í¼Æ¬£¬Êä³öµ÷ÊÔÐÅÏ¢£º");
- print.log(" µ±Ç°°üÃû£º" + xmlStr.match(/package="([^"]+)"/)[1]);
- print.log(" XMLǰ1000×Ö·û£º" + xmlStr.substring(0, 1000));
- print.log(" NAFСԲµãÊýÁ¿£º" + NAFСԲµãÁбí.length);
- print.log(" ͼƬ½ÚµãÊýÁ¿£º" + ͼƬ½ÚµãÁбí.length);
-
- var allImgViews = xmlStr.match(/class="android\.widget\.ImageView"/g);
- print.log(" È«²¿ImageViewÊýÁ¿£º" + (allImgViews ? allImgViews.length : 0));
-
- return { x: ÆÁÄ»¿í * 0.25, y: ÆÁÄ»¸ß * 0.3 };
- }
- var rvPattern = /<node[^>]*?class="androidx\.recyclerview\.widget\.RecyclerView"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var rvMatch;
- var ͼƬÁбíÇøÓò = null;
- while ((rvMatch = rvPattern.exec(xmlStr)) !== null) {
- var rx1 = parseInt(rvMatch[1]);
- var ry1 = parseInt(rvMatch[2]);
- var rx2 = parseInt(rvMatch[3]);
- var ry2 = parseInt(rvMatch[4]);
- var ¸ß¶È = ry2 - ry1;
- if (ry1 > ÆÁÄ»¸ß * 0.7 && ¸ß¶È > 300) {
- ͼƬÁбíÇøÓò = {x1: rx1, y1: ry1, x2: rx2, y2: ry2};
- print.log("✓ ÕÒµ½µ×²¿Í¼Æ¬ÁбíRecyclerView£º[" + rx1 + "," + ry1 + "][" + rx2 + "," + ry2 + "]");
- break;
- }
- }
- if (ͼƬÁбíÇøÓò) {
- var imgPattern = /<node[^>]*?class="android\.widget\.ImageView"[^>]*?\/?>/g;
- var imgMatch;
- var ºòÑ¡ = [];
- while ((imgMatch = imgPattern.exec(xmlStr)) !== null) {
- var imgNode = imgMatch[0];
- var boundsMatch = imgNode.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (!boundsMatch) continue;
- var ix1 = parseInt(boundsMatch[1]);
- var iy1 = parseInt(boundsMatch[2]);
- var ix2 = parseInt(boundsMatch[3]);
- var iy2 = parseInt(boundsMatch[4]);
- var iw = ix2 - ix1;
- var ih = iy2 - iy1;
- var ÔÚÇøÓòÄÚ = (ix1 >= ͼƬÁбíÇøÓò.x1 && ix2 <= ͼƬÁбíÇøÓò.x2 &&
- iy1 >= ͼƬÁбíÇøÓò.y1 && iy2 <= ͼƬÁбíÇøÓò.y2);
- var ÊÇ´óͼ = (iw > 100 && ih > 100);
- if (ÔÚÇøÓòÄÚ && ÊÇ´óͼ) {
- ºòÑ¡.push({
- x: (ix1 + ix2) / 2,
- y: (iy1 + iy2) / 2,
- y1: iy1,
- x1: ix1
- });
- }
- }
- if (ºòÑ¡.length > 0) {
- ºòÑ¡.sort(function(a, b) {
- if (a.y1 !== b.y1) return a.y1 - b.y1;
- return a.x1 - b.x1;
- });
- var Ñ¡ÖÐ = ºòÑ¡[0];
- print.log("✓ µÚÒ»ÕÅͼƬ¶¨Î»£ºµ×²¿Í¼Æ¬ÁбíÄÚµÄImageView£¬×ø±ê(" + Math.round(Ñ¡ÖÐ.x) + "," + Math.round(Ñ¡ÖÐ.y) + ")");
- return { x: Ñ¡ÖÐ.x, y: Ñ¡ÖÐ.y };
- }
- }
- var imgPattern2 = /<node[^>]*?class="android\.widget\.ImageView"[^>]*?\/?>/g;
- var imgMatch2;
- var ºòÑ¡2 = [];
- while ((imgMatch2 = imgPattern2.exec(xmlStr)) !== null) {
- var imgNode = imgMatch2[0];
- var boundsMatch = imgNode.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (!boundsMatch) continue;
- var ix1 = parseInt(boundsMatch[1]);
- var iy1 = parseInt(boundsMatch[2]);
- var ix2 = parseInt(boundsMatch[3]);
- var iy2 = parseInt(boundsMatch[4]);
- var iw = ix2 - ix1;
- var ih = iy2 - iy1;
- if (iy1 > ÆÁÄ»¸ß * 0.7 && iw > 100 && ih > 100) {
- ºòÑ¡2.push({
- x: (ix1 + ix2) / 2,
- y: (iy1 + iy2) / 2,
- y1: iy1,
- x1: ix1
- });
- }
- }
- if (ºòÑ¡2.length > 0) {
- ºòÑ¡2.sort(function(a, b) {
- if (a.y1 !== b.y1) return a.y1 - b.y1;
- return a.x1 - b.x1;
- });
- var Ñ¡ÖÐ2 = ºòÑ¡2[0];
- print.log("✓ µÚÒ»ÕÅͼƬ¶¨Î»£ºµ×²¿ÇøÓòImageView£¬×ø±ê(" + Math.round(Ñ¡ÖÐ2.x) + "," + Math.round(Ñ¡ÖÐ2.y) + ")");
- return { x: Ñ¡ÖÐ2.x, y: Ñ¡ÖÐ2.y };
- }
- print.log("⚠ δÕÒµ½Í¼Æ¬£¬Ê¹Óöµµ××ø±ê£¨µ×²¿µÚÒ»ÐеÚÒ»ÁУ©");
- return { x: ÆÁÄ»¿í * 0.15, y: ÆÁÄ»¸ß * 0.85 };
- }
- function ²éÕÒ·¢ËͰ´Å¥ÖÐÐÄ(xml) {
- var xmlStr = "" + xml;
- try {
- var detects = opencv.findImagesEx('ͼɫ168638.cv');
- if (detects != null && detects.length > 0) {
- print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÍ¼É«Æ¥Åä");
- var dStr = "" + detects[0];
- print.log("ͼɫƥÅä½á¹û£º" + dStr);
- var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
- if (m) {
- var left = parseFloat(m[1]);
- var top = parseFloat(m[2]);
- var right = parseFloat(m[3]);
- var bottom = parseFloat(m[4]);
- var centerX = (left + right) / 2;
- var centerY = (top + bottom) / 2;
- print.log("ͼɫƥÅä°Ù·Ö±È×ø±ê£ºleft=" + left + ", top=" + top + ", right=" + right + ", bottom=" + bottom);
- print.log("¼ÆËãµã»÷°Ù·Ö±È£º(" + centerX + "," + centerY + ")");
- agent.clickPercent(centerX, centerY);
- print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Í¼É«£©");
- return null;
- }
- print.log("⚠ ͼɫƥÅä½á¹û¸ñʽ½âÎöʧ°Ü");
- }
- } catch (e) {
- print.log("⚠ ͼɫƥÅäʧ°Ü£º" + e.message);
- }
- var sendImgPattern = /class="android\.widget\.ImageView"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var imgMatches = [];
- var imgMatch;
-
- while ((imgMatch = sendImgPattern.exec(xmlStr)) !== null) {
- var ix1 = parseInt(imgMatch[1]);
- var iy1 = parseInt(imgMatch[2]);
- var ix2 = parseInt(imgMatch[3]);
- var iy2 = parseInt(imgMatch[4]);
- var iw = ix2 - ix1;
- var ih = iy2 - iy1;
-
- if (iw > 50 && ih > 50 && ix1 > ÆÁÄ»¿í * 0.7 && iy1 > ÆÁÄ»¸ß * 0.7) {
- imgMatches.push({
- x1: ix1, y1: iy1, x2: ix2, y2: iy2,
- x: (ix1 + ix2) / 2,
- y: (iy1 + iy2) / 2
- });
- }
- }
-
- if (imgMatches.length > 0) {
- imgMatches.sort(function(a, b) {
- return b.y1 - a.y1;
- });
- var ·¢ËͰ´Å¥ = imgMatches[0];
- print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÊäÈë¿òÏ·½ImageView£¬×ø±ê(" + Math.round(·¢ËͰ´Å¥.x) + "," + Math.round(·¢ËͰ´Å¥.y) + ")");
- return ·¢ËͰ´Å¥;
- }
- var sendTextIdx = xmlStr.indexOf('text="·¢ËÍ"');
- if (sendTextIdx !== -1) {
- var ¶Î = xmlStr.substring(sendTextIdx);
- var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m) {
- print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÎı¾Æ¥Åä");
- return {
- x: (parseInt(m[1]) + parseInt(m[3])) / 2,
- y: (parseInt(m[2]) + parseInt(m[4])) / 2
- };
- }
- }
- var sendDescIdx = xmlStr.indexOf('content-desc="·¢ËÍ"');
- if (sendDescIdx !== -1) {
- var ¶Î2 = xmlStr.substring(sendDescIdx);
- var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m2) {
- print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºcontent-descÆ¥Åä");
- return {
- x: (parseInt(m2[1]) + parseInt(m2[3])) / 2,
- y: (parseInt(m2[2]) + parseInt(m2[4])) / 2
- };
- }
- }
- var inputKeywords = ["·¢ÏûÏ¢»ò°´×¡Ëµ»°", "ÔÚÕâÀïÌáÎÊ", "½Ó×ÅÎÊ", "·ÖÎöͼƬÄÚÈÝ"];
- var ÊäÈë¿ò±ß½ç = null;
-
- for (var k = 0; k < inputKeywords.length; k++) {
- var inputIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
- if (inputIdx !== -1) {
- var ÊäÈë¿ò¶Î = xmlStr.substring(inputIdx);
- ÊäÈë¿ò±ß½ç = ÊäÈë¿ò¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (ÊäÈë¿ò±ß½ç) break;
- }
- }
-
- if (!ÊäÈë¿ò±ß½ç) {
- var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
- if (editTextIdx !== -1) {
- var ¶Î = xmlStr.substring(editTextIdx);
- ÊäÈë¿ò±ß½ç = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- }
- }
-
- if (ÊäÈë¿ò±ß½ç) {
- var ÊäÈë¿òÐÅÏ¢ = {
- x1: parseInt(ÊäÈë¿ò±ß½ç[1]),
- y1: parseInt(ÊäÈë¿ò±ß½ç[2]),
- x2: parseInt(ÊäÈë¿ò±ß½ç[3]),
- y2: parseInt(ÊäÈë¿ò±ß½ç[4]),
- centerY: (parseInt(ÊäÈë¿ò±ß½ç[2]) + parseInt(ÊäÈë¿ò±ß½ç[4])) / 2
- };
- var toolbarKeywords = ["ħ·¨ÐÞͼ", "ÊÓÆµÍ¨»°", "·ÅÐÄд", "ħ·¨Âþ»"];
- var ¹¤¾ßÀ¸Y·¶Î§ = null;
- for (var t = 0; t < toolbarKeywords.length; t++) {
- var tbIdx = xmlStr.indexOf('text="' + toolbarKeywords[t] + '"');
- if (tbIdx !== -1) {
- var tb¶Î = xmlStr.substring(tbIdx);
- var tbMatch = tb¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (tbMatch) {
- ¹¤¾ßÀ¸Y·¶Î§ = {
- y1: parseInt(tbMatch[2]),
- y2: parseInt(tbMatch[4])
- };
- break;
- }
- }
- }
- var clickablePattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"[^>]*?\/?>/g;
- var clickMatch;
- var candidates = [];
- while ((clickMatch = clickablePattern.exec(xmlStr)) !== null) {
- var cx1 = parseInt(clickMatch[1]);
- var cy1 = parseInt(clickMatch[2]);
- var cx2 = parseInt(clickMatch[3]);
- var cy2 = parseInt(clickMatch[4]);
- var cw = cx2 - cx1;
- var ch = cy2 - cy1;
- var ÊÇС°´Å¥ = (cw < 300 && ch < 300);
- var ÔÚÊäÈë¿òÓÒ²à = (cx1 > ÊäÈë¿òÐÅÏ¢.x2 - 100);
- var ÔÚÊäÈë¿òˮƽÐÐ = (cy1 >= ÊäÈë¿òÐÅÏ¢.y1 - 100 && cy1 <= ÊäÈë¿òÐÅÏ¢.y2 + 100);
-
- var ÔÚ¹¤¾ßÀ¸ÇøÓò = false;
- if (¹¤¾ßÀ¸Y·¶Î§ && cy1 >= ¹¤¾ßÀ¸Y·¶Î§.y1 && cy2 <= ¹¤¾ßÀ¸Y·¶Î§.y2 + 100) {
- ÔÚ¹¤¾ßÀ¸ÇøÓò = true;
- }
- if (ÊÇС°´Å¥ && ÔÚÊäÈë¿òÓÒ²à && ÔÚÊäÈë¿òˮƽÐÐ && !ÔÚ¹¤¾ßÀ¸ÇøÓò) {
- candidates.push({
- x1: cx1, y1: cy1, x2: cx2, y2: cy2,
- x: (cx1 + cx2) / 2,
- y: (cy1 + cy2) / 2
- });
- }
- }
- if (candidates.length > 0) {
- candidates.sort(function(a, b) {
- return b.x1 - a.x1;
- });
- var Ñ¡ÖÐ = candidates[0];
- print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÊäÈë¿òÓÒ²àclickableÔªËØ£¬×ø±ê(" + Math.round(Ñ¡ÖÐ.x) + "," + Math.round(Ñ¡ÖÐ.y) + ")");
- return { x: Ñ¡ÖÐ.x, y: Ñ¡ÖÐ.y };
- }
- var Ô¤¹ÀX = ÊäÈë¿òÐÅÏ¢.x2 + 100;
- var Ô¤¹ÀY = ÊäÈë¿òÐÅÏ¢.centerY;
- print.log("⚠ ·¢ËͰ´Å¥Ê¹ÓÃÊäÈë¿òÓҲඵµ××ø±ê(" + Math.round(Ô¤¹ÀX) + "," + Math.round(Ô¤¹ÀY) + ")");
- return { x: Ô¤¹ÀX, y: Ô¤¹ÀY };
- }
- print.log("⚠ ·¢ËͰ´Å¥Ê¹ÓÃÆÁÄ»ÓҲඵµ×²ßÂÔ");
- agent.clickPercent(0.9, 0.91);
- print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Ó²±àÂë¶µµ×£©");
- return null;
- }
- function µÈ´ýAI»Ø´ðÍê³É(·¢ËÍǰµÄ×îºóÎı¾, ·¢ËÍǰ»Ø´ðÊýÁ¿) {
- var ÒѺÄʱ = 0;
- var ¼ì²é¼ä¸ôÃë = 1;
- print.log("·¢ËÍǰ×îºóAI»Ø´ð£º'" + ·¢ËÍǰµÄ×îºóÎı¾ + "'£¬·¢ËÍǰ»Ø´ðÊýÁ¿£º" + ·¢ËÍǰ»Ø´ðÊýÁ¿);
- var ¹¤¾ßÀ¸¹Ø¼ü´Ê = ["ħ·¨ÐÞͼ", "ÊÓÆµÍ¨»°", "·ÅÐÄд", "ħ·¨Âþ»"];
- var ·¢ËÍǰÊǹ¤¾ßÀ¸ = ¹¤¾ßÀ¸¹Ø¼ü´Ê.indexOf(·¢ËÍǰµÄ×îºóÎı¾) !== -1;
- var ¼ì²é¼ä¸ôÃë = 3;
- var Á¬ÐøÏàͬ´ÎÊý = 0;
- var Éϴι淶»¯Îı¾ = "";
- sleep.second(Ãë = 5);
- ÒѺÄʱ += 5;
- while (ÒѺÄʱ < µÈ´ý»Ø´ð³¬Ê±Ãë) {
- var xml = »ñÈ¡UI();
- var »Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
-
- if (»Ø´ðÁбí.length > 0) {
- var µ±Ç°×îºó»Ø´ð = »Ø´ðÁбí[»Ø´ðÁбí.length - 1];
- var µ±Ç°ÌáÈ¡Êý×Ö = ÌáÈ¡Êý×Ö(µ±Ç°×îºó»Ø´ð);
- var µ±Ç°¹æ·¶»¯Îı¾ = µ±Ç°×îºó»Ø´ð.trim().replace(/\s+/g, " ");
-
- var ÓÐлشð = false;
- var »Ø´ðÊýÁ¿Ôö¼Ó = (»Ø´ðÁбí.length > ·¢ËÍǰ»Ø´ðÊýÁ¿);
-
- if (·¢ËÍǰÊǹ¤¾ßÀ¸) {
- var µ±Ç°²»Êǹ¤¾ßÀ¸ = ¹¤¾ßÀ¸¹Ø¼ü´Ê.indexOf(µ±Ç°×îºó»Ø´ð) === -1;
- var ÓÐOCRÄÚÈÝ = µ±Ç°×îºó»Ø´ð.length > 10;
- ÓÐлشð = µ±Ç°²»Êǹ¤¾ßÀ¸ || ÓÐOCRÄÚÈÝ || µ±Ç°ÌáÈ¡Êý×Ö !== "";
- } else {
- var ·¢ËÍǰ¹æ·¶»¯ = ·¢ËÍǰµÄ×îºóÎı¾.trim().replace(/\s+/g, " ");
- ÓÐлشð = (µ±Ç°¹æ·¶»¯Îı¾ !== ·¢ËÍǰ¹æ·¶»¯) || (µ±Ç°ÌáÈ¡Êý×Ö !== "");
- }
-
- if (ÓÐлشð || »Ø´ðÊýÁ¿Ôö¼Ó) {
- print.log("✓ ¼ì²âµ½Ð»شð£¨" + ÒѺÄʱ + "Ã룩£º'" + µ±Ç°×îºó»Ø´ð + "'£¬ÌáÈ¡Êý×Ö£º'" + µ±Ç°ÌáÈ¡Êý×Ö + "'");
-
- if (µ±Ç°ÌáÈ¡Êý×Ö !== "") {
- print.log("✓ ÌáÈ¡µ½Êý×Ö£¬Ö±½Ó·µ»Ø£º" + µ±Ç°ÌáÈ¡Êý×Ö);
- return µ±Ç°ÌáÈ¡Êý×Ö;
- }
-
- if (µ±Ç°¹æ·¶»¯Îı¾ === Éϴι淶»¯Îı¾) {
- Á¬ÐøÏàͬ´ÎÊý++;
- if (Á¬ÐøÏàͬ´ÎÊý >= 2) {
- print.log("✓ Îı¾Á¬Ðø2´ÎÏàͬ£¬»Ø´ðÍê³É");
- var ×îÖÕÊý×Ö = ÌáÈ¡Êý×Ö(µ±Ç°×îºó»Ø´ð);
- if (×îÖÕÊý×Ö !== "") {
- return ×îÖÕÊý×Ö;
- }
- return µ±Ç°×îºó»Ø´ð;
- }
- } else {
- Á¬ÐøÏàͬ´ÎÊý = 0;
- Éϴι淶»¯Îı¾ = µ±Ç°¹æ·¶»¯Îı¾;
- }
- }
- }
-
- sleep.second(Ãë = ¼ì²é¼ä¸ôÃë);
- ÒѺÄʱ += ¼ì²é¼ä¸ôÃë;
- }
- print.log("⚠ µÈ´ýAI»Ø´ð³¬Ê±£¨" + µÈ´ý»Ø´ð³¬Ê±Ãë + "Ã룩£¬³¢ÊÔ·µ»Øµ±Ç°ÄÚÈÝ");
- var xml = »ñÈ¡UI();
- var ¶µµ×Áбí = ²É¼¯AI»Ø´ðÁбí(xml);
- if (¶µµ×Áбí.length > 0) {
- var ¶µµ×Îı¾ = ¶µµ×Áбí[¶µµ×Áбí.length - 1];
- print.log("✓ ³¬Ê±¶µµ×£º·µ»Øµ±Ç°²É¼¯µ½µÄ»Ø´ð£º" + ¶µµ×Îı¾);
- return ¶µµ×Îı¾;
- }
- return null;
- }
- // ========== Ö÷Á÷³Ì¿ªÊ¼ ==========
- function Ö÷Á÷³Ì() {
- // ²½Öè1£ºÈ«ÆÁ½ØÍ¼£¨BÕ¾ÑéÖ¤ÂëÒ³Ãæ£©
- print.log("\n========== ²½Öè1£ºÈ«ÆÁ½ØÍ¼BÕ¾ÑéÖ¤Âë ==========");
- var ½ØÍ¼³É¹¦ = È«ÆÁ½ØÍ¼(½ØÍ¼±£´æÂ·¾¶);
- if (!½ØÍ¼³É¹¦) {
- print.log("✗ ½ØÍ¼Ê§°Ü£¬Í˳öÁ÷³Ì");
- print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
- return;
- }
- // ²½Öè2£ºÆô¶¯ÎÄÐÄÖúÊÖAPP
- print.log("\n========== ²½Öè2£ºÆô¶¯ÎÄÐÄÖúÊÖAPP ==========");
- try {
- app.openApp(ÎÄÐİüÃû);
- print.log("✓ ÒÑÆô¶¯ÎÄÐÄÖúÊÖ");
- } catch (e) {
- print.log("⚠ Æô¶¯Ê§°Ü£º" + e.message);
- }
- sleep.second(Ãë = 5);
- // ²½Öè3£ºÈ·ÈϽøÈë¶Ô»°Ò³Ã棨֧³ÖÁ½ÖÖ´ò¿ªÐÎʽ£©
- print.log("\n========== ²½Öè3£ºÈ·ÈϽøÈë¶Ô»°Ò³Ãæ ==========");
- var xml = »ñÈ¡UI();
- var ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
- var ½øÈë¶Ô»°³É¹¦ = false;
-
- if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
- print.log("✓ ÎÄÐÄAPPÖ±½Ó´ò¿ªµ½¶Ô»°Ò³Ã棬ÎÞÐè¶îÍâ²Ù×÷");
- ½øÈë¶Ô»°³É¹¦ = true;
- } else if (´ò¿ªÐÎʽ === "ÁбíÒ³") {
- print.log("✓ ÎÄÐÄAPP´ò¿ªµ½¶Ô»°ÁбíÒ³Ãæ£¬ÐèÒªµã»÷½øÈë¶Ô»°");
- var wenxinIdx = xml.indexOf('text="ÎÄÐÄ"');
- if (wenxinIdx !== -1) {
- var ÎÄÐĶΠ= xml.substring(wenxinIdx);
- var wxBounds = ÎÄÐĶÎ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (wxBounds) {
- var wxX = (parseInt(wxBounds[1]) + parseInt(wxBounds[3])) / 2;
- var wxY = (parseInt(wxBounds[2]) + parseInt(wxBounds[4])) / 2;
- agent.click(wxX, wxY);
- print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¬×ø±ê(" + Math.round(wxX) + "," + Math.round(wxY) + ")");
- sleep.second(Ãë = 3);
- } else {
- agent.clickPercent(0.3, 0.15);
- print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¨¶µµ××ø±ê£©");
- sleep.second(Ãë = 3);
- }
- } else {
- agent.clickPercent(0.3, 0.15);
- print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¨¶µµ××ø±ê£©");
- sleep.second(Ãë = 3);
- }
-
- xml = »ñÈ¡UI();
- ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
- if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
- print.log("✓ ³É¹¦½øÈë¶Ô»°Ò³Ãæ");
- ½øÈë¶Ô»°³É¹¦ = true;
- } else {
- print.log("⚠ µã»÷ºóÈÔδ½øÈë¶Ô»°Ò³Ã棬Ôٴγ¢ÊÔ");
- agent.clickPercent(0.3, 0.15);
- sleep.second(Ãë = 3);
- xml = »ñÈ¡UI();
- ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
- if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
- print.log("✓ µÚ¶þ´Î³¢ÊԳɹ¦½øÈë¶Ô»°Ò³Ãæ");
- ½øÈë¶Ô»°³É¹¦ = true;
- }
- }
- } else {
- print.log("⚠ ÎÄÐÄAPP´ò¿ªµ½Î´ÖªÒ³Ã棬µÈ´ý3ÃëºóÖØÊÔ");
- sleep.second(Ãë = 3);
- xml = »ñÈ¡UI();
- ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
-
- if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
- print.log("✓ µÈ´ýºó×Ô¶¯½øÈë¶Ô»°Ò³Ãæ");
- ½øÈë¶Ô»°³É¹¦ = true;
- } else if (´ò¿ªÐÎʽ === "ÁбíÒ³") {
- print.log("✓ µÈ´ýºó½øÈë¶Ô»°ÁбíÒ³Ãæ£¬µã»÷½øÈë¶Ô»°");
- agent.clickPercent(0.3, 0.15);
- print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¨¶µµ××ø±ê£©");
- sleep.second(Ãë = 3);
- xml = »ñÈ¡UI();
- if (ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml) === "¶Ô»°Ò³") {
- print.log("✓ µã»÷ºó³É¹¦½øÈë¶Ô»°Ò³Ãæ");
- ½øÈë¶Ô»°³É¹¦ = true;
- }
- }
- }
-
- if (½øÈë¶Ô»°³É¹¦) {
- print.log("✓ Òѳɹ¦½øÈëÎÄÐĶԻ°Ò³Ãæ");
- } else {
- print.log("⚠ ¶à´Î³¢ÊÔÈÔδ½øÈë¶Ô»°Ò³Ã棬¼ÌÐøºóÐø²½Öè");
- }
- // ²½Öè4£º¼Ç¼·¢ËÍǰµÄ×îºóÒ»ÌõAI»Ø´ðºÍÊýÁ¿
- var ·¢ËÍǰ»Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
- var ·¢ËÍǰ»Ø´ðÊýÁ¿ = ·¢ËÍǰ»Ø´ðÁбí.length;
- var ·¢ËÍǰ×îºóÎı¾ = "";
- if (·¢ËÍǰ»Ø´ðÁбí.length > 0) {
- ·¢ËÍǰ×îºóÎı¾ = ·¢ËÍǰ»Ø´ðÁбí[·¢ËÍǰ»Ø´ðÁбí.length - 1];
- }
- print.log("✓ ·¢ËÍǰ»Ø´ðÊýÁ¿£º" + ·¢ËÍǰ»Ø´ðÊýÁ¿ + "£¬×îºóÎı¾£º'" + ·¢ËÍǰ×îºóÎı¾ + "'");
- // ²½Öè5£ºµã»÷¼ÓºÅ°´Å¥´ò¿ª¸½¼þ²Ëµ¥
- print.log("\n========== ²½Öè5£ºµã»÷¼ÓºÅ°´Å¥´ò¿ª¸½¼þ²Ëµ¥ ==========");
- var ¼ÓºÅ°´Å¥ = ²éÕҼӺŰ´Å¥(xml);
- agent.click(¼ÓºÅ°´Å¥.x, ¼ÓºÅ°´Å¥.y);
- print.log("✓ Òѵã»÷¼ÓºÅ°´Å¥£¬×ø±ê(" + Math.round(¼ÓºÅ°´Å¥.x) + "," + Math.round(¼ÓºÅ°´Å¥.y) + ")");
- sleep.second(Ãë = 2);
- // ²½Öè6£ºÑ¡ÔñÏà²á»òͼƬ
- print.log("\n========== ²½Öè6£ºÑ¡ÔñÏà²á»òͼƬ ==========");
- var Ïà²áÑ¡Ôñ³É¹¦ = false;
- var ³¢ÊÔ´ÎÊý = 0;
- while (!Ïà²áÑ¡Ôñ³É¹¦ && ³¢ÊÔ´ÎÊý < 5) {
- ³¢ÊÔ´ÎÊý++;
- xml = »ñÈ¡UI();
-
- if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
- print.log("✓ ÒѽøÈëϵͳÏà²áÒ³Ãæ");
- Ïà²áÑ¡Ôñ³É¹¦ = true;
- break;
- }
-
- var Ïà²áÑ¡Ïî = ²éÕÒÏà²áÑ¡Ïî(xml);
- if (Ïà²áÑ¡Ïî) {
- agent.click(Ïà²áÑ¡Ïî.x, Ïà²áÑ¡Ïî.y);
- print.log("✓ Òѵã»÷Ïà²áÑ¡Ïî£¬×ø±ê(" + Math.round(Ïà²áÑ¡Ïî.x) + "," + Math.round(Ïà²áÑ¡Ïî.y) + ")");
- sleep.second(Ãë = 2);
- Ïà²áÑ¡Ôñ³É¹¦ = true;
- break;
- }
-
- var imgCount = (xml.match(/class="android\.widget\.ImageView"/g) || []).length;
- if (imgCount >= 4) {
- print.log("✓ ¼ÓºÅ²Ëµ¥µ×²¿ÒÑÏÔʾͼƬÁÐ±í£¨¼ì²âµ½" + imgCount + "¸öͼƬ£©");
- Ïà²áÑ¡Ôñ³É¹¦ = true;
- break;
- }
-
- print.log("⚠ µÚ" + ³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÎ´ÕÒµ½Ïà²áÑ¡ÏµÈ´ýÖØÊÔ");
- sleep.second(Ãë = 1);
- }
- // ²½Öè7£ºÑ¡ÔñµÚÒ»ÕÅͼƬ£¨´¦ÀíϵͳÏà²áºÍͼƬԤÀÀÒ³Ãæ£©
- print.log("\n========== ²½Öè7£ºÑ¡ÔñµÚÒ»ÕÅͼƬ ==========");
- var ͼƬѡÔñ³É¹¦ = false;
- var ͼƬ³¢ÊÔ´ÎÊý = 0;
- while (!ͼƬѡÔñ³É¹¦ && ͼƬ³¢ÊÔ´ÎÊý < 10) {
- ͼƬ³¢ÊÔ´ÎÊý++;
- xml = »ñÈ¡UI();
-
- if (ͼƬ³¢ÊÔ´ÎÊý === 1) {
- var pkgMatch = xml.match(/package="([^"]+)"/);
- print.log("µ÷ÊÔ£ºµ±Ç°°üÃû=" + (pkgMatch ? pkgMatch[1] : "δ֪"));
- print.log("µ÷ÊÔ£ºXMLǰ300×Ö·û=" + xml.substring(0, 300));
- print.log("µ÷ÊÔ£ºÊÇ·ñÓнÓ×ÅÎÊ=" + (xml.indexOf("½Ó×ÅÎÊ") !== -1));
- var dbgImgCount = (xml.match(/class="android\.widget\.ImageView"/g) || []).length;
- print.log("µ÷ÊÔ£ºImageViewÊýÁ¿=" + dbgImgCount);
- }
-
- if (ÊÇ·ñÔÚͼƬԤÀÀÒ³Ãæ(xml)) {
- var È·Èϰ´Å¥ = ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml);
- agent.click(È·Èϰ´Å¥.x, È·Èϰ´Å¥.y);
- print.log("✓ Òѵã»÷ͼƬԤÀÀÈ·Èϰ´Å¥£¬×ø±ê(" + Math.round(È·Èϰ´Å¥.x) + "," + Math.round(È·Èϰ´Å¥.y) + ")");
- ͼƬѡÔñ³É¹¦ = true;
- sleep.second(Ãë = 3);
- break;
- }
-
- if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
- var µÚÒ»ÕÅͼƬ = ²éÕÒµÚÒ»ÕÅͼƬ(xml);
- if (µÚÒ»ÕÅͼƬ) {
- agent.click(µÚÒ»ÕÅͼƬ.x, µÚÒ»ÕÅͼƬ.y);
- print.log("✓ Òѵã»÷µÚÒ»ÕÅͼƬ£¬×ø±ê(" + Math.round(µÚÒ»ÕÅͼƬ.x) + "," + Math.round(µÚÒ»ÕÅͼƬ.y) + ")");
- sleep.second(Ãë = 2);
-
- var pkgMatch = xml.match(/package="([^"]+)"/);
- var µ±Ç°°üÃû = pkgMatch ? pkgMatch[1] : "";
-
- if (µ±Ç°°üÃû === ÎÄÐİüÃû) {
- xml = »ñÈ¡UI();
-
- var È·Èϰ´Å¥ = ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml);
- if (È·Èϰ´Å¥) {
- agent.click(È·Èϰ´Å¥.x, È·Èϰ´Å¥.y);
- print.log("✓ ÎÄÐÄÖúÊÖÄÚ²¿Ïà²á£ºµã»÷È·Èϰ´Å¥£¬×ø±ê(" + Math.round(È·Èϰ´Å¥.x) + "," + Math.round(È·Èϰ´Å¥.y) + ")");
- } else {
- var Íê³É°´Å¥Idx = xml.indexOf('text="Íê³É"');
- if (Íê³É°´Å¥Idx !== -1) {
- var Íê³É¶Î = xml.substring(Íê³É°´Å¥Idx);
- var Íê³ÉÆ¥Åä = Íê³É¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (Íê³ÉÆ¥Åä) {
- var Íê³ÉX = (parseInt(Íê³ÉÆ¥Åä[1]) + parseInt(Íê³ÉÆ¥Åä[3])) / 2;
- var Íê³ÉY = (parseInt(Íê³ÉÆ¥Åä[2]) + parseInt(Íê³ÉÆ¥Åä[4])) / 2;
- agent.click(Íê³ÉX, Íê³ÉY);
- print.log("✓ ÎÄÐÄÖúÊÖÄÚ²¿Ïà²á£ºµã»÷Íê³É°´Å¥£¬×ø±ê(" + Math.round(Íê³ÉX) + "," + Math.round(Íê³ÉY) + ")");
- }
- }
- }
-
- ͼƬѡÔñ³É¹¦ = true;
- sleep.second(Ãë = 3);
- break;
- }
-
- xml = »ñÈ¡UI();
- var Ñ¡Ôñ°´Å¥ = ²éÕÒÏà²áÑ¡Ôñ°´Å¥(xml);
- if (Ñ¡Ôñ°´Å¥) {
- agent.click(Ñ¡Ôñ°´Å¥.x, Ñ¡Ôñ°´Å¥.y);
- print.log("✓ Òѵã»÷Ñ¡Ôñ°´Å¥£¬×ø±ê(" + Math.round(Ñ¡Ôñ°´Å¥.x) + "," + Math.round(Ñ¡Ôñ°´Å¥.y) + ")");
- ͼƬѡÔñ³É¹¦ = true;
- sleep.second(Ãë = 3);
- break;
- } else {
- print.log("⚠ µÚ" + ͼƬ³¢ÊÔ´ÎÊý + "´Î£ºÎ´ÕÒµ½Ñ¡Ôñ°´Å¥£¬ÖØÐ»ñÈ¡XMLÖØÊÔ");
- sleep.second(Ãë = 1);
- continue;
- }
- } else {
- print.log("⚠ ϵͳÏà²áδÕÒµ½Í¼Æ¬");
- sleep.second(Ãë = 1);
- continue;
- }
- }
-
- print.log("⚠ µÚ" + ͼƬ³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÎ´¼ì²âµ½Ïà²áÒ³Ãæ£¬µÈ´ýÖØÊÔ");
- sleep.second(Ãë = 1);
- }
- // ²½Öè8£ºµÈ´ýͼƬÌí¼Óµ½ÊäÈëÇøÓò£¨µÈ´ý»Øµ½ÎÄÐĶԻ°Ò³Ã棩
- print.log("\n========== ²½Öè8£ºµÈ´ýͼƬÌí¼Óµ½ÊäÈëÇøÓò ==========");
- var ͼƬÌí¼Ó³É¹¦ = false;
- var µÈ´ý³¢ÊÔ´ÎÊý = 0;
- while (!ͼƬÌí¼Ó³É¹¦ && µÈ´ý³¢ÊÔ´ÎÊý < 10) {
- µÈ´ý³¢ÊÔ´ÎÊý++;
- xml = »ñÈ¡UI();
-
- var packageMatch = xml.match(/package="([^"]+)"/);
- if (packageMatch && packageMatch[1] === ÎÄÐİüÃû) {
- print.log("✓ Òѻص½ÎÄÐĶԻ°Ò³Ãæ");
-
- var hasInput = xml.indexOf('text="ÔÚÕâÀïÌáÎÊ"') !== -1 ||
- xml.indexOf('text="½Ó×ÅÎÊ"') !== -1 ||
- xml.indexOf('text="·ÖÎöͼƬÄÚÈÝ"') !== -1;
-
- var hasImagePreview = xml.indexOf('class="android.widget.HorizontalScrollView"') !== -1 &&
- xml.indexOf('class="android.widget.FrameLayout"') !== -1;
-
- if (hasInput || hasImagePreview) {
- print.log("✓ ͼƬÒÑÌí¼Óµ½ÊäÈëÇøÓò");
- ͼƬÌí¼Ó³É¹¦ = true;
- break;
- }
- }
-
- print.log("⚠ µÚ" + µÈ´ý³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÍ¼Æ¬ÉÐδÌí¼Ó£¬µÈ´ýÖØÊÔ");
- sleep.second(Ãë = 1);
- }
-
- if (!ͼƬÌí¼Ó³É¹¦) {
- print.log("⚠ ¶à´ÎµÈ´ýͼƬδÌí¼Ó£¬¼ÌÐøºóÐø²½Öè");
- }
- // ²½Öè9£ºÕ³ÌùÎÄ×ÖѯÎÊÍ϶¯¾àÀë
- print.log("\n========== ²½Öè9£ºÕ³ÌùÎÄ×ÖѯÎÊÍ϶¯¾àÀë ==========");
- xml = »ñÈ¡UI();
- var ÊäÈë¿ò = ²éÕÒÊäÈë¿òÖÐÐÄ(xml);
- var AI»Ø´ð = null;
- if (ÊäÈë¿ò) {
- agent.click(ÊäÈë¿ò.x, ÊäÈë¿ò.y);
- sleep.second(Ãë = 1);
-
- var hasDefaultText = xml.indexOf('text="·ÖÎöͼƬÄÚÈÝ"') !== -1;
- if (hasDefaultText) {
- agent.shell("input keyevent 112");
- sleep.millisecond(ºÁÃë = 500);
- agent.shell("input keyevent 112");
- sleep.millisecond(ºÁÃë = 500);
- agent.shell("input keyevent 112");
- sleep.millisecond(ºÁÃë = 500);
- agent.shell("input keyevent 67");
- sleep.millisecond(ºÁÃë = 300);
- agent.shell("input keyevent 67");
- sleep.millisecond(ºÁÃë = 300);
- agent.shell("input keyevent 67");
- sleep.millisecond(ºÁÃë = 300);
- agent.shell("input keyevent 67");
- sleep.millisecond(ºÁÃë = 300);
- agent.shell("input keyevent 67");
- sleep.millisecond(ºÁÃë = 300);
- print.log("✓ ÒÑÇå³ýĬÈÏÎı¾'·ÖÎöͼƬÄÚÈÝ'");
- }
-
- Õ³ÌùÎı¾(ÌáÎÊ»°Êõ);
- print.log("✓ ÒÑÕ³ÌùÎı¾£º" + ÌáÎÊ»°Êõ);
- sleep.second(Ãë = 2);
- // ²½Öè10£º·¢ËÍͼƬºÍÎÄ×Ö
- print.log("\n========== ²½Öè10£º·¢ËÍͼƬºÍÎÄ×Ö ==========");
- xml = »ñÈ¡UI();
- var ·¢ËͰ´Å¥ = ²éÕÒ·¢ËͰ´Å¥ÖÐÐÄ(xml);
- if (·¢ËͰ´Å¥) {
- agent.click(·¢ËͰ´Å¥.x, ·¢ËͰ´Å¥.y);
- print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¬×ø±ê(" + Math.round(·¢ËͰ´Å¥.x) + "," + Math.round(·¢ËͰ´Å¥.y) + ")");
- agent.shell("input keyevent 66");
- print.log("✓ ÒѰ´»Ø³µ¼ü·¢ËÍ");
- }
- if (!·¢ËͰ´Å¥) {
- agent.shell("input keyevent 66");
- print.log("✓ ÒѰ´»Ø³µ¼ü·¢ËÍ");
- }
- sleep.second(Ãë = 25);
- // ²½Öè11£ºµÈ´ýÎÄÐÄAI»Ø´ð
- print.log("\n========== ²½Öè11£ºµÈ´ýÎÄÐÄAI»Ø´ð ==========");
- xml = »ñÈ¡UI();
- var ·¢ËÍǰʵ¼Ê»Ø´ð = »ñÈ¡µ±Ç°×îºóAI»Ø´ð(xml);
- var ·¢ËÍǰʵ¼ÊÊýÁ¿ = ²É¼¯AI»Ø´ðÁбí(xml).length;
- print.log("·¢ËÍÇ°ÖØÐ¼ì²â£º×îºó»Ø´ð='" + ·¢ËÍǰʵ¼Ê»Ø´ð + "'£¬ÊýÁ¿=" + ·¢ËÍǰʵ¼ÊÊýÁ¿);
- AI»Ø´ð = µÈ´ýAI»Ø´ðÍê³É(·¢ËÍǰʵ¼Ê»Ø´ð, ·¢ËÍǰʵ¼ÊÊýÁ¿);
- } else {
- print.log("⚠ δÕÒµ½ÊäÈë¿ò");
- }
-
- if (!AI»Ø´ð) {
- print.log("✗ δ»ñÈ¡µ½AI»Ø´ð");
- print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
- return;
- }
- print.log("\n✓ ²É¼¯µ½AI»Ø´ð");
- print.log("--- ²É¼¯ÄÚÈÝ¿ªÊ¼ ---");
- print.log(AI»Ø´ð);
- print.log("--- ²É¼¯ÄÚÈݽáÊø ---");
- // ²½Öè12£º½âÎöÍ϶¯¾àÀë×ø±ê
- print.log("\n========== ²½Öè12£º½âÎöÍ϶¯¾àÀë×ø±ê ==========");
- print.log("✓ AIÔʼ»Ø´ð£º'" + AI»Ø´ð + "'");
-
- var ËùÓÐÊý×Ö = AI»Ø´ð.match(/\d+/g);
- var Í϶¯¾àÀëÏñËØ = null;
- var AIͼÏñ¿í¶È = null;
-
- if (ËùÓÐÊý×Ö && ËùÓÐÊý×Ö.length >= 2) {
- var Êý×ÖÁбí = [];
- for (var i = 0; i < ËùÓÐÊý×Ö.length; i++) {
- Êý×ÖÁбí.push(parseInt(ËùÓÐÊý×Ö[i]));
- }
- print.log("✓ ÌáÈ¡µ½ËùÓÐÊý×Ö£º" + Êý×ÖÁбí.join(", "));
-
- if (Êý×ÖÁбí.length >= 5) {
- var x1 = Êý×ÖÁбí[0];
- var y1 = Êý×ÖÁбí[1];
- var x2 = Êý×ÖÁбí[2];
- var y2 = Êý×ÖÁбí[3];
- AIͼÏñ¿í¶È = Êý×ÖÁбí[4];
- Í϶¯¾àÀëÏñËØ = Math.abs(x2 - x1);
- print.log("✓ ʶ±ðµ½Á½×é×ø±ê+ͼÏñ¿í¶È£º(" + x1 + "," + y1 + ") ºÍ (" + x2 + "," + y2 + ")£¬Í¼Ïñ¿í¶È=" + AIͼÏñ¿í¶È);
- print.log("✓ ¼ÆËãÍ϶¯¾àÀ룺|x2 - x1| = |" + x2 + " - " + x1 + "| = " + Í϶¯¾àÀëÏñËØ);
- } else if (Êý×ÖÁбí.length >= 4) {
- var x1 = Êý×ÖÁбí[0];
- var y1 = Êý×ÖÁбí[1];
- var x2 = Êý×ÖÁбí[2];
- var y2 = Êý×ÖÁбí[3];
- Í϶¯¾àÀëÏñËØ = Math.abs(x2 - x1);
- AIͼÏñ¿í¶È = Math.max(x1, x2) + 100;
- print.log("✓ ʶ±ðµ½Á½×é×ø±ê¸ñʽ£º(" + x1 + "," + y1 + ") ºÍ (" + x2 + "," + y2 + ")");
- print.log("✓ ¼ÆËãÍ϶¯¾àÀ룺|x2 - x1| = |" + x2 + " - " + x1 + "| = " + Í϶¯¾àÀëÏñËØ);
- print.log("✓ ¹ÀËãͼÏñ¿í¶È£ºmax(x1,x2)+100 = " + AIͼÏñ¿í¶È);
- } else if (Êý×ÖÁбí.length >= 2) {
- var ×ø±êÆ¥Åä = AI»Ø´ð.match(/(\d+)\s*[,£¬]\s*(\d+)/);
- if (×ø±êÆ¥Åä) {
- var cx1 = parseInt(×ø±êÆ¥Åä[1]);
- var cx2 = parseInt(×ø±êÆ¥Åä[2]);
- Í϶¯¾àÀëÏñËØ = Math.abs(cx2 - cx1);
- AIͼÏñ¿í¶È = Math.max(cx1, cx2) + 100;
- print.log("✓ ʶ±ðµ½×ø±ê¸ñʽ£º(" + cx1 + "," + cx2 + ")£¬¼ÆËã¾àÀ룺" + Í϶¯¾àÀëÏñËØ);
- } else {
- Í϶¯¾àÀëÏñËØ = Êý×ÖÁбí[0];
- print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
- }
- } else {
- Í϶¯¾àÀëÏñËØ = Êý×ÖÁбí[0];
- print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
- }
- } else if (ËùÓÐÊý×Ö && ËùÓÐÊý×Ö.length === 1) {
- Í϶¯¾àÀëÏñËØ = parseInt(ËùÓÐÊý×Ö[0]);
- print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
- } else {
- print.log("✗ δÕÒµ½ÓÐЧµÄÍ϶¯¾àÀë");
- print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
- return;
- }
-
- var ͼÏñËõ·ÅϵÊý = 1.0;
- if (Í϶¯¾àÀëÏñËØ < 30) {
- print.log("⚠ ÌáÈ¡µ½µÄÍ϶¯¾àÀë¹ýС(" + Í϶¯¾àÀëÏñËØ + ")£¬¿ÉÄÜÊÇOCRʶ±ð´íÎó£¬Ìø¹ýËõ·Å²¹³¥");
- } else if (AIͼÏñ¿í¶È && AIͼÏñ¿í¶È > 0 && AIͼÏñ¿í¶È < ÆÁÄ»¿í) {
- ͼÏñËõ·ÅϵÊý = ÆÁÄ»¿í / AIͼÏñ¿í¶È;
- if (ͼÏñËõ·ÅϵÊý > 5) {
- ͼÏñËõ·ÅϵÊý = 1.0;
- } else {
- Í϶¯¾àÀëÏñËØ = Math.round(Í϶¯¾àÀëÏñËØ * ͼÏñËõ·ÅϵÊý);
- print.log("✓ ͼÏñËõ·Å²¹³¥£ºAIͼÏñ¿í¶È=" + AIͼÏñ¿í¶È + "£¬ÆÁÄ»¿í=" + ÆÁÄ»¿í);
- print.log("✓ Ëõ·ÅϵÊý=" + ͼÏñËõ·ÅϵÊý.toFixed(2) + "£¬²¹³¥ºóÍ϶¯¾àÀë=" + Í϶¯¾àÀëÏñËØ);
- }
- } else {
- ͼÏñËõ·ÅϵÊý = ÆÁÄ»¿í / 750;
- Í϶¯¾àÀëÏñËØ = Math.round(Í϶¯¾àÀëÏñËØ * ͼÏñËõ·ÅϵÊý);
- print.log("✓ µ¥Êý×Öģʽ²¹³¥£º¼ÙÉèAIͼÏñ¿í¶È¡Ö750£¬Ëõ·ÅϵÊý=" + ͼÏñËõ·ÅϵÊý.toFixed(2));
- print.log("✓ ²¹³¥ºóÍ϶¯¾àÀë=" + Í϶¯¾àÀëÏñËØ);
- }
-
- ÑéÖ¤Â뻬¿é¾àÀë = {
- x: Í϶¯¾àÀëÏñËØ,
- y: 0
- };
- // ²½Öè13£ºÇл»»ØBÕ¾²¢Í϶¯»¬¿é
- print.log("\n========== ²½Öè13£ºÇл»»ØBÕ¾²¢Í϶¯»¬¿é ==========");
-
- agent.shell("input keyevent 187");
- print.log("✓ ÒѰ´ºǫ́¼ü´ò¿ªÈÎÎñÁбí");
- sleep.second(Ãë = 2);
-
- xml = »ñÈ¡UI();
- var biliIdx = xml.indexOf('ßÙÁ¨ßÙÁ¨');
- if (biliIdx === -1) {
- biliIdx = xml.indexOf('bilibili');
- }
- if (biliIdx === -1) {
- biliIdx = xml.indexOf('BÕ¾');
- }
-
- if (biliIdx !== -1) {
- var ¶Î = xml.substring(biliIdx);
- var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (m) {
- var clickX = (parseInt(m[1]) + parseInt(m[3])) / 2;
- var clickY = (parseInt(m[2]) + parseInt(m[4])) / 2;
- agent.click(clickX, clickY);
- print.log("✓ Òѵã»÷BÕ¾ÈÎÎñ¿¨Æ¬£¬×ø±ê(" + Math.round(clickX) + "," + Math.round(clickY) + ")");
- }
- } else {
- print.log("⚠ δÕÒµ½BÕ¾ÈÎÎñ¿¨Æ¬£¬³¢ÊÔÖ±½Ó´ò¿ª");
- try {
- app.openApp(BÕ¾°üÃû);
- print.log("✓ ÒÑ´ò¿ªBÕ¾");
- } catch (e) {
- print.log("⚠ ´ò¿ªBվʧ°Ü£º" + e.message);
- }
- }
- sleep.second(Ãë = 3);
- xml = »ñÈ¡UI();
- var ÑéÖ¤ÂëÇøÓò×ó±ß½ç = ÆÁÄ»¿í * 0.15;
-
- var »¬¿é¹ìµÀÆ¥Åä = xml.match(/<node[^>]*?text="Í϶¯»¬¿éÍê³Éƴͼ"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (»¬¿é¹ìµÀÆ¥Åä) {
- ÑéÖ¤ÂëÇøÓò×ó±ß½ç = parseInt(»¬¿é¹ìµÀÆ¥Åä[1]);
- }
- var Í϶¯¾àÀë = ÑéÖ¤Â뻬¿é¾àÀë.x * »¬¿éУ׼ϵÊý;
- var startX = ÑéÖ¤ÂëÇøÓò×ó±ß½ç + 50;
- var startY = ÆÁÄ»¸ß * 0.42;
- var endX = startX + Í϶¯¾àÀë;
- var endY = startY;
- print.log("✓ ÑéÖ¤ÂëÇøÓò×ó±ß½ç: " + ÑéÖ¤ÂëÇøÓò×ó±ß½ç + ", Í϶¯¾àÀë: " + Í϶¯¾àÀë);
- agent.swip(startX, startY, endX, endY, 2000);
- print.log("✓ ÒÑÍ϶¯»¬¿é£¬Æðµã(" + Math.round(startX) + "," + Math.round(startY) + ")£¬ÖÕµã(" + Math.round(endX) + "," + Math.round(endY) + ")");
- }
- Ö÷Á÷³Ì();
- print.log("\n===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
¸´ÖÆ´úÂë
|
|