B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 1|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

AIWROKÈí¼þ²âÊÔÎÄÐÄʶ±ðʶ±ðÑéÖ¤ÂëʾÀý

[¸´ÖÆÁ´½Ó]

1135

Ö÷Ìâ

1140

Ìû×Ó

7817

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7817
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
AIWROKÈí¼þ²âÊÔÎÄÐÄʶ±ðʶ±ðÑéÖ¤ÂëʾÀý
AIWROKÈí¼þ²âÊÔÎÄÐÄʶ±ðʶ±ðÑéÖ¤ÂëʾÀý B2BÍøÂçÈí¼þ

  1. // AIWROK ×Ô¶¯»¯Á÷³Ì£º½ØÍ¼BÕ¾ÑéÖ¤Âë ¡ú Æô¶¯ÎÄÐÄÖúÊÖ ¡ú ·¢ËͽØÍ¼Ñ¯ÎÊÍ϶¯¾àÀë ¡ú ²É¼¯»Ø´ð ¡ú ÇлØBÕ¾Í϶¯»¬¿é
  2. // °üÃû£ºcom.baidu.newapp£¨°Ù¶ÈÎÄÐÄÖúÊÖ£©
  3. //
  4. // ʹÓÃ˵Ã÷£º
  5. //   1. ÔÚBÕ¾ÑéÖ¤ÂëÒ³ÃæÔËÐнű¾
  6. //   2. ½Å±¾×Ô¶¯½ØÍ¼²¢·¢Ë͸øÎÄÐÄʶ±ð
  7. //   3. ½âÎöÎÄÐÄ·µ»ØµÄÍ϶¯¾àÀ룬ÇлØBÕ¾Í϶¯»¬¿é

  8. print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³ÌÆô¶¯ =====");
  9. print.time();

  10. // ========== ÅäÖÃÇø ==========
  11. var ÎÄÐİüÃû = "com.baidu.newapp";
  12. var BÕ¾°üÃû = "tv.danmaku.bili";
  13. var ½ØÍ¼±£´æÂ·¾¶ = "/sdcard/ÑéÖ¤Âë½ØÍ¼.png";

  14. var µÈ´ý»Ø´ð³¬Ê±Ãë = 20;
  15. var »Ø´ðÊä³öµÈ´ýÃë = 20;
  16. var »¬¿éУ׼ϵÊý = 1.0;

  17. var ÌáÎÊ»°Êõ = "Çë°ïÎÒ·ÖÎöÕâÕÅͼƬ£¬¸æËßÎÒ×ó±ßµÄ·½¿éÐèÒªÏòÓÒÒÆ¶¯¶àÉÙÏñËØ²ÅÄܺÍÓұߵÄȱ¿Ú¶ÔÆë£¬Ö»Êä³ö£º¾àÀë¼ÓÊý×Ö";

  18. // ========== »ñÈ¡É豸ÐÅÏ¢ ==========
  19. var ÆÁÄ»¿í = screen.getScreenWidth();
  20. var ÆÁÄ»¸ß = screen.getScreenHeight();
  21. var ÑéÖ¤Â뻬¿é¾àÀë = null;
  22. print.log("ÆÁÄ»³ß´ç£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);
  23. print.log("´úÀí״̬£º" + (agent.isOpen() ? "ÒÑ¿ªÆô" : "먦Æô"));

  24. // ========== ¹¤¾ßº¯Êý ==========

  25. function »ñÈ¡UI() {
  26.     var xml = agent.getXml();
  27.     return "" + xml;
  28. }

  29. function ×Ö·û´®³¤¶È(s) {
  30.     var str = "" + s;
  31.     return str.length;
  32. }

  33. function ½âÂëHTMLʵÌå(s) {
  34.     var str = "" + s;
  35.     str = str.replace(/
  36. /g, "\n");
  37.     str = str.replace(/
  38. /g, "\r");
  39.     str = str.replace(/        /g, "\t");
  40.     str = str.replace(/'/g, "'");
  41.     str = str.replace(/"/g, '"');
  42.     str = str.replace(/"/g, '"');
  43.     str = str.replace(/'/g, "'");
  44.     str = str.replace(/&/g, "&");
  45.     str = str.replace(/</g, "<");
  46.     str = str.replace(/>/g, ">");
  47.     return str;
  48. }

  49. function »ñÈ¡µ±Ç°×îºóAI»Ø´ð(xml) {
  50.     var »Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
  51.     if (»Ø´ðÁбí.length === 0) return "";
  52.     return »Ø´ðÁбí[»Ø´ðÁбí.length - 1];
  53. }

  54. function »ñÈ¡WebViewÇøÓò(xml) {
  55.     var xmlStr = "" + xml;
  56.     var webViewPattern = /<node[^>]*?class="com\.baidu\.webkit\.sdk\.WebView"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/;
  57.     var wvMatch = webViewPattern.exec(xmlStr);
  58.     if (wvMatch) {
  59.         return {
  60.             x1: parseInt(wvMatch[1]),
  61.             y1: parseInt(wvMatch[2]),
  62.             x2: parseInt(wvMatch[3]),
  63.             y2: parseInt(wvMatch[4])
  64.         };
  65.     }
  66.     return { x1: 0, y1: 348, x2: ÆÁÄ»¿í, y2: ÆÁÄ»¸ß * 0.5 };
  67. }

  68. function OCRʶ±ðWebViewÇøÓò(xml) {
  69.     try {
  70.         var img = screen.screenShotFull();
  71.         
  72.         var ocrres = img.MLKitOcr('zhs');
  73.         var ocrText = "";
  74.         
  75.         if (ocrres && typeof ocrres.getAllString === 'function') {
  76.             ocrText = "" + ocrres.getAllString();
  77.         } else if (ocrres && typeof ocrres.getJsonString === 'function') {
  78.             var jsonStr = "" + ocrres.getJsonString();
  79.             var textPattern = /"text"\s*:\s*"([^"]+)"/g;
  80.             var match;
  81.             var allText = [];
  82.             while ((match = textPattern.exec(jsonStr)) !== null) {
  83.                 if (match[1] && match[1].length > 0) {
  84.                     allText.push(match[1]);
  85.                 }
  86.             }
  87.             ocrText = allText.join("\n");
  88.         } else {
  89.             var str = "" + ocrres;
  90.             var textPattern2 = /"text"\s*:\s*"([^"]+)"/g;
  91.             var match2;
  92.             var allText2 = [];
  93.             while ((match2 = textPattern2.exec(str)) !== null) {
  94.                 if (match2[1] && match2[1].length > 0) {
  95.                     allText2.push(match2[1]);
  96.                 }
  97.             }
  98.             ocrText = allText2.join("\n");
  99.         }
  100.         
  101.         img.recycle();
  102.         
  103.         if (ocrText && ocrText.length > 0) {
  104.             print.log("✓ MLKitOcrʶ±ð³É¹¦");
  105.             print.log("--- OCR½á¹û¿ªÊ¼ ---");
  106.             print.log(ocrText);
  107.             print.log("--- OCR½á¹û½áÊø ---");
  108.             return "" + ocrText;
  109.         }
  110.         
  111.         print.log("⚠ MLKitOcrδʶ±ðµ½ÄÚÈÝ");
  112.         return "";
  113.     } catch (e) {
  114.         print.log("⚠ OCRʶ±ðÒì³££º" + e.message);
  115.         return "";
  116.     }
  117. }

  118. function ÌáÈ¡Êý×Ö(Îı¾) {
  119.     var str = "" + Îı¾;
  120.     var ¾«È·Æ¥Åä = str.match(/¾àÀë¼Ó(\d+)/);
  121.     if (¾«È·Æ¥Åä) {
  122.         var num = parseInt(¾«È·Æ¥Åä[1]);
  123.         if (num >= 30) {
  124.             return "" + num;
  125.         }
  126.     }
  127.     var ±¸Ñ¡Æ¥Åä = str.match(/¾àÀ뾫[\u51c6\u79ef\u786e]¼Ó?(\d+)/);
  128.     if (±¸Ñ¡Æ¥Åä) {
  129.         var num2 = parseInt(±¸Ñ¡Æ¥Åä[1]);
  130.         if (num2 >= 30) {
  131.             return "" + num2;
  132.         }
  133.     }
  134.     var allMatches = str.match(/\d+/g);
  135.     if (allMatches) {
  136.         var ºòÑ¡Êý×Ö = [];
  137.         for (var i = 0; i < allMatches.length; i++) {
  138.             var n = parseInt(allMatches[i]);
  139.             if (n >= 30 && n < 1000) {
  140.                 ºòÑ¡Êý×Ö.push(n);
  141.             }
  142.         }
  143.         if (ºòÑ¡Êý×Ö.length > 0) {
  144.             ºòÑ¡Êý×Ö.sort(function(a, b) { return b - a; });
  145.             return "" + ºòÑ¡Êý×Ö[0];
  146.         }
  147.         var allNums = [];
  148.         for (var j = 0; j < allMatches.length; j++) {
  149.             allNums.push(parseInt(allMatches[j]));
  150.         }
  151.         allNums.sort(function(a, b) { return b - a; });
  152.         return "" + allNums[0];
  153.     }
  154.     return "";
  155. }

  156. function ²É¼¯AI»Ø´ðÁбí(xml) {
  157.     var xmlStr = "" + xml;
  158.     var »Ø´ðÁбí = [];

  159.     var hasWebView = xmlStr.indexOf('com.baidu.webkit.sdk.WebView') !== -1;
  160.    
  161.     if (hasWebView) {
  162.         var ocrÎı¾ = OCRʶ±ðWebViewÇøÓò(xml);
  163.         if (ocrÎı¾ && ×Ö·û´®³¤¶È(ocrÎı¾) > 1) {
  164.             »Ø´ðÁбí.push(ocrÎı¾);
  165.             print.log("✓ OCRʶ±ðµ½WebViewÎı¾");
  166.             print.log("--- OCR½á¹û¿ªÊ¼ ---");
  167.             print.log(ocrÎı¾);
  168.             print.log("--- OCR½á¹û½áÊø ---");
  169.             
  170.             var ocrÊý×Ö = ÌáÈ¡Êý×Ö(ocrÎı¾);
  171.             if (ocrÊý×Ö) {
  172.                 print.log("✓ ´ÓOCR½á¹ûÖÐÌáÈ¡µ½Êý×Ö£º" + ocrÊý×Ö);
  173.                 »Ø´ðÁбí.push(ocrÊý×Ö);
  174.             }
  175.         }
  176.     }

  177.     var textViewPattern = /<node[^>]*?text="([^"]+)"[^>]*?class="android\.widget\.TextView"[^>]*?\/?>/g;
  178.     var tvMatch;
  179.     var Ìø¹ý¹¤¾ßÀ¸ = true;
  180.     while ((tvMatch = textViewPattern.exec(xmlStr)) !== null) {
  181.         if (tvMatch[1] && ×Ö·û´®³¤¶È(tvMatch[1]) > 1) {
  182.             var ԭʼÎı¾ = tvMatch[1];
  183.             var ½âÂëÎı¾ = ½âÂëHTMLʵÌå(ԭʼÎı¾);
  184.             
  185.             if (½âÂëÎı¾.includes("ÈÎÎñ") || ½âÂëÎı¾.includes("´´Òâ") ||
  186.                 ½âÂëÎı¾.includes("·ÅÐÄ") || ½âÂëÎı¾.includes("ħ·¨")) {
  187.                 Ìø¹ý¹¤¾ßÀ¸ = false;
  188.                 continue;
  189.             }
  190.             
  191.             if (!Ìø¹ý¹¤¾ßÀ¸ && !½âÂëÎı¾.includes("½Ó×ÅÎÊ") &&
  192.                 !½âÂëÎı¾.includes("ÄÚÈÝÓÉAIÉú³É") &&
  193.                 !»Ø´ðÁбí.includes(½âÂëÎı¾)) {
  194.                 »Ø´ðÁбí.push(½âÂëÎı¾);
  195.                 print.log("✓ ÔÚTextViewÖÐÕÒµ½Îı¾: '" + ½âÂëÎı¾ + "'");
  196.             }
  197.         }
  198.     }

  199.     var editTextPattern = /<node[^>]*?text="([^"]+)"[^>]*?class="android\.widget\.EditText"[^>]*?\/?>/g;
  200.     var etMatch;
  201.     while ((etMatch = editTextPattern.exec(xmlStr)) !== null) {
  202.         if (etMatch[1] && ×Ö·û´®³¤¶È(etMatch[1]) > 1 && !etMatch[1].includes("½Ó×ÅÎÊ")) {
  203.             var ԭʼÎı¾ = etMatch[1];
  204.             var ½âÂëÎı¾ = ½âÂëHTMLʵÌå(ԭʼÎı¾);
  205.             if (!½âÂëÎı¾.includes("ÄÚÈÝÓÉAIÉú³É") && !»Ø´ðÁбí.includes(½âÂëÎı¾)) {
  206.                 »Ø´ðÁбí.push(½âÂëÎı¾);
  207.                 print.log("✓ ÔÚEditTextÖÐÕÒµ½Îı¾: '" + ½âÂëÎı¾ + "'");
  208.             }
  209.         }
  210.     }

  211.     if (»Ø´ðÁбí.length === 0) {
  212.         print.log("⚠ δÕÒµ½AI»Ø´ð½Úµã");
  213.     } else {
  214.         print.log("✓ ²É¼¯µ½" + »Ø´ðÁбí.length + "ÌõAI»Ø´ð");
  215.     }

  216.     return »Ø´ðÁбí;
  217. }

  218. function È«ÆÁ½ØÍ¼(±£´æÂ·¾¶) {
  219.     try {
  220.         var result = agent.shell("screencap -p " + ±£´æÂ·¾¶);
  221.         print.log("✓ ½ØÍ¼ÃüÁîÖ´ÐУº" + result);
  222.         
  223.         var lsResult = agent.shell("ls -la " + ±£´æÂ·¾¶);
  224.         print.log("✓ ½ØÍ¼Îļþ¼ì²é£º" + lsResult);
  225.         
  226.         return true;
  227.     } catch (e) {
  228.         print.log("⚠ ½ØÍ¼Ê§°Ü£º" + e.message);
  229.         return false;
  230.     }
  231. }

  232. function ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml) {
  233.     var xmlStr = "" + xml;
  234.    
  235.     var hasWebView = xmlStr.indexOf('com.baidu.webkit.sdk.WebView') !== -1;
  236.     var hasInput = xmlStr.indexOf('text="·¢ÏûÏ¢»ò°´×¡Ëµ»°"') !== -1 ||
  237.                    xmlStr.indexOf('text="ÔÚÕâÀïÌáÎÊ"') !== -1 ||
  238.                    xmlStr.indexOf('text="½Ó×ÅÎÊ"') !== -1;
  239.    
  240.     if (hasWebView || hasInput) {
  241.         print.log("✓ ÎÄÐÄAPP´ò¿ªÐÎʽ£ºÖ±½Ó¶Ô»°Ò³Ãæ");
  242.         return "¶Ô»°Ò³";
  243.     }
  244.    
  245.     var hasDialogTab = xmlStr.indexOf('text="¶Ô»°"') !== -1;
  246.     var hasWenxinText = xmlStr.indexOf('text="ÎÄÐÄ"') !== -1;
  247.     var hasAssistantText = xmlStr.indexOf('text="ÖúÊÖ"') !== -1;
  248.     var hasRecyclerView = xmlStr.indexOf('class="androidx.recyclerview.widget.RecyclerView"') !== -1;
  249.     var hasBottomNav = xmlStr.indexOf('text="¹¤¾ß"') !== -1 && xmlStr.indexOf('text="·¢ÏÖ"') !== -1 && xmlStr.indexOf('text="ÎÒµÄ"') !== -1;
  250.    
  251.     if ((hasDialogTab && hasRecyclerView) || (hasWenxinText && hasAssistantText) || hasBottomNav) {
  252.         print.log("✓ ÎÄÐÄAPP´ò¿ªÐÎʽ£º¶Ô»°ÁбíÒ³Ãæ");
  253.         return "ÁбíÒ³";
  254.     }
  255.    
  256.     print.log("⚠ ÎÄÐÄAPP´ò¿ªÐÎʽ£ºÎ´ÖªÒ³Ãæ");
  257.     return "δ֪";
  258. }

  259. function ²éÕÒÊäÈë¿òÖÐÐÄ(xml) {
  260.     var xmlStr = "" + xml;
  261.    
  262.     var inputKeywords = ["·¢ÏûÏ¢»ò°´×¡Ëµ»°", "ÔÚÕâÀïÌáÎÊ", "½Ó×ÅÎÊ"];
  263.     for (var k = 0; k < inputKeywords.length; k++) {
  264.         var inputIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
  265.         if (inputIdx !== -1) {
  266.             var ¶Î = xmlStr.substring(inputIdx);
  267.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  268.             if (m) {
  269.                 var x1 = parseInt(m[1]);
  270.                 var y1 = parseInt(m[2]);
  271.                 var x2 = parseInt(m[3]);
  272.                 var y2 = parseInt(m[4]);
  273.                 print.log("✓ ÊäÈë¿ò¶¨Î»£ºtext=" + inputKeywords[k] + "£¬bounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
  274.                 return {
  275.                     x: (x1 + x2) / 2,
  276.                     y: (y1 + y2) / 2
  277.                 };
  278.             }
  279.         }
  280.     }

  281.     var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
  282.     if (editTextIdx !== -1) {
  283.         var ¶Î2 = xmlStr.substring(editTextIdx);
  284.         var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  285.         if (m2) {
  286.             var x1 = parseInt(m2[1]);
  287.             var y1 = parseInt(m2[2]);
  288.             var x2 = parseInt(m2[3]);
  289.             var y2 = parseInt(m2[4]);
  290.             print.log("✓ ÊäÈë¿ò¶¨Î»£¨EditText£©£ºbounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
  291.             return {
  292.                 x: (x1 + x2) / 2,
  293.                 y: (y1 + y2) / 2
  294.             };
  295.         }
  296.     }

  297.     print.log("⚠ δÕÒµ½ÊäÈë¿ò£¬Ê¹Óöµµ××ø±ê");
  298.     return {
  299.         x: ÆÁÄ»¿í * 0.4,
  300.         y: ÆÁÄ»¸ß * 0.85
  301.     };
  302. }

  303. function ²éÕҼӺŰ´Å¥(xml) {
  304.     var xmlStr = "" + xml;
  305.    
  306.     var inputKeywords = ["·¢ÏûÏ¢»ò°´×¡Ëµ»°", "ÔÚÕâÀïÌáÎÊ", "½Ó×ÅÎÊ"];
  307.     var ÊäÈë¿ò±ß½ç = null;
  308.    
  309.     for (var k = 0; k < inputKeywords.length; k++) {
  310.         var inputBoxIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
  311.         if (inputBoxIdx !== -1) {
  312.             var ÊäÈë¿ò¶Î = xmlStr.substring(inputBoxIdx);
  313.             ÊäÈë¿ò±ß½ç = ÊäÈë¿ò¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  314.             if (ÊäÈë¿ò±ß½ç) break;
  315.         }
  316.     }
  317.    
  318.     if (!ÊäÈë¿ò±ß½ç) {
  319.         var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
  320.         if (editTextIdx !== -1) {
  321.             var ¶Î = xmlStr.substring(editTextIdx);
  322.             ÊäÈë¿ò±ß½ç = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  323.         }
  324.     }
  325.    
  326.     if (ÊäÈë¿ò±ß½ç) {
  327.         var ÊäÈë¿òX2 = parseInt(ÊäÈë¿ò±ß½ç[3]);
  328.         var ÊäÈë¿òY = parseInt(ÊäÈë¿ò±ß½ç[2]);
  329.         var ÊäÈë¿òµ×²¿Y = parseInt(ÊäÈë¿ò±ß½ç[4]);
  330.         var ÊäÈë¿òÖÐÐÄY = (ÊäÈë¿òY + ÊäÈë¿òµ×²¿Y) / 2;
  331.         
  332.         var plusPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  333.         var plusMatch;
  334.         var ºòÑ¡°´Å¥ = [];
  335.         
  336.         while ((plusMatch = plusPattern.exec(xmlStr)) !== null) {
  337.             var bx1 = parseInt(plusMatch[1]);
  338.             var by1 = parseInt(plusMatch[2]);
  339.             var bx2 = parseInt(plusMatch[3]);
  340.             var by2 = parseInt(plusMatch[4]);
  341.             
  342.             if (by1 >= ÊäÈë¿òÖÐÐÄY - 100 && by2 <= ÊäÈë¿òÖÐÐÄY + 200 && bx1 > ÊäÈë¿òX2 - 50) {
  343.                 ºòÑ¡°´Å¥.push({ x: (bx1 + bx2) / 2, y: (by1 + by2) / 2 });
  344.             }
  345.         }
  346.         
  347.         if (ºòÑ¡°´Å¥.length > 0) {
  348.             ºòÑ¡°´Å¥.sort(function(a, b) { return a.x - b.x; });
  349.             print.log("✓ ¼ÓºÅ°´Å¥¶¨Î»£ºÊäÈë¿òÓÒ²àclickableÔªËØ£¬×ø±ê(" + Math.round(ºòÑ¡°´Å¥[0].x) + "," + Math.round(ºòÑ¡°´Å¥[0].y) + ")");
  350.             return ºòÑ¡°´Å¥[0];
  351.         }
  352.     }

  353.     print.log("⚠ ¼ÓºÅ°´Å¥Ê¹Óöµµ××ø±ê£¨ÊäÈë¿òÓҲࣩ");
  354.     var ÊäÈë¿ò = ²éÕÒÊäÈë¿òÖÐÐÄ(xml);
  355.     return {
  356.         x: ÆÁÄ»¿í * 0.9,
  357.         y: ÊäÈë¿ò.y
  358.     };
  359. }

  360. function Õ³ÌùÎı¾(Îı¾) {
  361.     try {
  362.         Clipboard.copy("" + Îı¾);
  363.     } catch (e) {
  364.         print.log("⚠ Clipboard.copy ʧ°Ü£º" + e.message);
  365.     }
  366.     sleep.millisecond(ºÁÃë = 300);

  367.     try {
  368.         agent.shell("service call clipboard 3 i32 1 s16 '" + Îı¾ + "' i32 0");
  369.     } catch (e2) {
  370.         // ºöÂÔ´íÎó
  371.     }
  372.     sleep.millisecond(ºÁÃë = 300);

  373.     agent.shell("input keyevent 279");
  374.     sleep.second(Ãë = 1);
  375.     print.log("✓ ÒÑÕ³ÌùÎı¾£º" + Îı¾);
  376. }

  377. function ²éÕÒÏà²áÑ¡Ïî(xml) {
  378.     var xmlStr = "" + xml;
  379.    
  380.     var text¹Ø¼ü´Ê = ["Ïà²á", "ͼƬ", "ÕÕÆ¬", "ËùÓÐÕÕÆ¬", "´ÓÏà²áÑ¡Ôñ", "Ñ¡ÔñͼƬ"];
  381.     for (var i = 0; i < text¹Ø¼ü´Ê.length; i++) {
  382.         var kw = text¹Ø¼ü´Ê[i];
  383.         var idx = xmlStr.indexOf('text="' + kw + '"');
  384.         if (idx !== -1) {
  385.             var ¶Î = xmlStr.substring(idx);
  386.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  387.             if (m) {
  388.                 print.log("✓ Ïà²áÑ¡Ïλ£ºtext=" + kw);
  389.                 return {
  390.                     x: (parseInt(m[1]) + parseInt(m[3])) / 2,
  391.                     y: (parseInt(m[2]) + parseInt(m[4])) / 2
  392.                 };
  393.             }
  394.         }
  395.     }

  396.     var desc¹Ø¼ü´Ê = ["Ïà²á", "ͼƬ", "ÕÕÆ¬"];
  397.     for (var j = 0; j < desc¹Ø¼ü´Ê.length; j++) {
  398.         var kw2 = desc¹Ø¼ü´Ê[j];
  399.         var idx2 = xmlStr.indexOf('content-desc="' + kw2 + '"');
  400.         if (idx2 !== -1) {
  401.             var ¶Î2 = xmlStr.substring(idx2);
  402.             var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  403.             if (m2) {
  404.                 print.log("✓ Ïà²áÑ¡Ïλ£ºcontent-desc=" + kw2);
  405.                 return {
  406.                     x: (parseInt(m2[1]) + parseInt(m2[3])) / 2,
  407.                     y: (parseInt(m2[2]) + parseInt(m2[4])) / 2
  408.                 };
  409.             }
  410.         }
  411.     }

  412.     return null;
  413. }

  414. function ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml) {
  415.     var xmlStr = "" + xml;
  416.    
  417.     var packageMatch = xmlStr.match(/package="([^"]+)"/);
  418.     var µ±Ç°°üÃû = packageMatch ? packageMatch[1] : "";
  419.    
  420.     if (µ±Ç°°üÃû && µ±Ç°°üÃû !== ÎÄÐİüÃû) {
  421.         print.log("✓ ¼ì²âµ½ÏµÍ³Ïà²áÒ³Ãæ£¬°üÃû£º" + µ±Ç°°üÃû);
  422.         return true;
  423.     }
  424.    
  425.     if (µ±Ç°°üÃû === ÎÄÐİüÃû) {
  426.         var ÓÐÅÄÕչؼü´Ê = xmlStr.indexOf('text="ÅÄÕÕ"') !== -1;
  427.         var Óб¾µØÎļþ¹Ø¼ü´Ê = xmlStr.indexOf('text="±¾µØÎļþ"') !== -1;
  428.         var ÓÐ΢ÐÅÎļþ¹Ø¼ü´Ê = xmlStr.indexOf('text="΢ÐÅÎļþ"') !== -1;
  429.         
  430.         if (ÓÐÅÄÕչؼü´Ê || Óб¾µØÎļþ¹Ø¼ü´Ê || ÓÐ΢ÐÅÎļþ¹Ø¼ü´Ê) {
  431.             var ÓÐÍ¼Æ¬Íø¸ñ = xmlStr.indexOf('ugc_item_gridview') !== -1;
  432.             var ÓÐËùÓÐͼƬ = xmlStr.indexOf('text="ËùÓÐͼƬ"') !== -1;
  433.             var ÓÐÈ¡Ïû°´Å¥ = xmlStr.indexOf('text="È¡Ïû"') !== -1;
  434.             
  435.             if (ÓÐÍ¼Æ¬Íø¸ñ || ÓÐËùÓÐͼƬ || ÓÐÈ¡Ïû°´Å¥) {
  436.                 print.log("✓ ¼ì²âµ½ÎÄÐÄÖúÊÖÄÚ²¿Í¼Æ¬Ñ¡ÔñÒ³Ãæ");
  437.                 return true;
  438.             }
  439.             
  440.             print.log("⚠ ÎÄÐÄÖúÊÖÄÚ²¿¸½¼þ²Ëµ¥£¬²»ÊÇϵͳÏà²á");
  441.             return false;
  442.         }
  443.     }
  444.    
  445.     var gallery¹Ø¼ü´Ê = ["×î½ü", "ͼ¿â", "Camera", "ËùÓÐͼƬ", "ÕÕÆ¬", "Ïà²á", "All photos", "Photos"];
  446.     for (var i = 0; i < gallery¹Ø¼ü´Ê.length; i++) {
  447.         if (xmlStr.indexOf('text="' + gallery¹Ø¼ü´Ê[i] + '"') !== -1 ||
  448.             xmlStr.indexOf('content-desc="' + gallery¹Ø¼ü´Ê[i] + '"') !== -1) {
  449.             var ÓÐÁÄÌìÊäÈë = xmlStr.indexOf("½Ó×ÅÎÊ") !== -1 || xmlStr.indexOf("ÔÚÕâÀïÌáÎÊ") !== -1 || xmlStr.indexOf("·¢ÏûÏ¢»ò°´×¡Ëµ»°") !== -1;
  450.             if (!ÓÐÁÄÌìÊäÈë) {
  451.                 print.log("✓ ¼ì²âµ½Ïà²áÒ³Ãæ£¨¹Ø¼ü´Ê£º" + gallery¹Ø¼ü´Ê[i] + "£©");
  452.                 return true;
  453.             }
  454.         }
  455.     }
  456.    
  457.     var ÓÐͼƬÎļþ = xmlStr.indexOf('.png"') !== -1 || xmlStr.indexOf('.jpg"') !== -1 ||
  458.                      xmlStr.indexOf('.jpeg"') !== -1 || xmlStr.indexOf('.gif"') !== -1;
  459.     var ÓÐÑ¡Ôñ°´Å¥ = xmlStr.indexOf('text="Ñ¡Ôñ"') !== -1;
  460.     var ÓÐÁÄÌìÊäÈë2 = xmlStr.indexOf("½Ó×ÅÎÊ") !== -1 || xmlStr.indexOf("ÔÚÕâÀïÌáÎÊ") !== -1 || xmlStr.indexOf("·¢ÏûÏ¢»ò°´×¡Ëµ»°") !== -1;
  461.    
  462.     if (ÓÐͼƬÎļþ && ÓÐÑ¡Ôñ°´Å¥ && !ÓÐÁÄÌìÊäÈë2) {
  463.         print.log("✓ ¼ì²âµ½Ïà²áÒ³Ãæ£¨ÓÐͼƬÎļþºÍÑ¡Ôñ°´Å¥£©");
  464.         return true;
  465.     }
  466.    
  467.     return false;
  468. }

  469. function ÊÇ·ñÔÚͼƬԤÀÀÒ³Ãæ(xml) {
  470.     var xmlStr = "" + xml;
  471.     if (xmlStr.indexOf('text="Íê³É"') !== -1 || xmlStr.indexOf('text="·¢ËÍ"') !== -1) {
  472.         return true;
  473.     }
  474.     if (xmlStr.indexOf('content-desc="Íê³É"') !== -1 || xmlStr.indexOf('content-desc="·¢ËÍ"') !== -1) {
  475.         return true;
  476.     }
  477.     return false;
  478. }

  479. function ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml) {
  480.     var xmlStr = "" + xml;
  481.    
  482.     var ¹Ø¼ü´Ê = ["Íê³É", "·¢ËÍ", "È·ÈÏ"];
  483.     for (var i = 0; i < ¹Ø¼ü´Ê.length; i++) {
  484.         var kw = ¹Ø¼ü´Ê[i];
  485.         var textIdx = xmlStr.indexOf('text="' + kw + '"');
  486.         if (textIdx !== -1) {
  487.             var ¶Î = xmlStr.substring(textIdx);
  488.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  489.             if (m) {
  490.                 var x = (parseInt(m[1]) + parseInt(m[3])) / 2;
  491.                 var y = (parseInt(m[2]) + parseInt(m[4])) / 2;
  492.                 print.log("✓ ͼƬԤÀÀÈ·Èϰ´Å¥¶¨Î»£ºtext=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  493.                 return { x: x, y: y };
  494.             }
  495.         }
  496.     }
  497.    
  498.     for (var j = 0; j < ¹Ø¼ü´Ê.length; j++) {
  499.         var kw2 = ¹Ø¼ü´Ê[j];
  500.         var descIdx = xmlStr.indexOf('content-desc="' + kw2 + '"');
  501.         if (descIdx !== -1) {
  502.             var ¶Î2 = xmlStr.substring(descIdx);
  503.             var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  504.             if (m2) {
  505.                 var x = (parseInt(m2[1]) + parseInt(m2[3])) / 2;
  506.                 var y = (parseInt(m2[2]) + parseInt(m2[4])) / 2;
  507.                 print.log("✓ ͼƬԤÀÀÈ·Èϰ´Å¥¶¨Î»£ºcontent-desc=" + kw2 + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  508.                 return { x: x, y: y };
  509.             }
  510.         }
  511.     }
  512.    
  513.     print.log("⚠ ͼƬԤÀÀÈ·Èϰ´Å¥Ê¹Óöµµ××ø±ê£¨µ×²¿Öм䣩");
  514.     return { x: ÆÁÄ»¿í * 0.5, y: ÆÁÄ»¸ß * 0.92 };
  515. }

  516. function ²éÕÒÏà²áÑ¡Ôñ°´Å¥(xml) {
  517.     var xmlStr = "" + xml;
  518.    
  519.     var ¹Ø¼ü´ÊÁбí = ["Ñ¡Ôñ", "Íê³É", "È·ÈÏ", "·¢ËÍ", "È·¶¨"];
  520.     for (var i = 0; i < ¹Ø¼ü´ÊÁбí.length; i++) {
  521.         var kw = ¹Ø¼ü´ÊÁбí[i];
  522.         
  523.         var textPattern = new RegExp('text="' + kw + '[^"]*"[^>]*?bounds="\\[(\\d+),(\\d+)\\]\\[(\\d+),(\\d+)\\]"', 'gi');
  524.         var textMatch = textPattern.exec(xmlStr);
  525.         if (textMatch) {
  526.             var x = (parseInt(textMatch[1]) + parseInt(textMatch[3])) / 2;
  527.             var y = (parseInt(textMatch[2]) + parseInt(textMatch[4])) / 2;
  528.             print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºtext=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  529.             return { x: x, y: y };
  530.         }
  531.         
  532.         var descIdx = xmlStr.indexOf('content-desc="' + kw + '"');
  533.         if (descIdx !== -1) {
  534.             var ¶Î2 = xmlStr.substring(descIdx);
  535.             var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  536.             if (m2) {
  537.                 var x = (parseInt(m2[1]) + parseInt(m2[3])) / 2;
  538.                 var y = (parseInt(m2[2]) + parseInt(m2[4])) / 2;
  539.                 print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºcontent-desc=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  540.                 return { x: x, y: y };
  541.             }
  542.         }
  543.     }
  544.    
  545.     var bottomButtonPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  546.     var bottomMatch;
  547.     var µ×²¿°´Å¥Áбí = [];
  548.     while ((bottomMatch = bottomButtonPattern.exec(xmlStr)) !== null) {
  549.         var bx1 = parseInt(bottomMatch[1]);
  550.         var by1 = parseInt(bottomMatch[2]);
  551.         var bx2 = parseInt(bottomMatch[3]);
  552.         var by2 = parseInt(bottomMatch[4]);
  553.         if (by1 >= ÆÁÄ»¸ß * 0.85) {
  554.             µ×²¿°´Å¥Áбí.push({ x: (bx1 + bx2) / 2, y: (by1 + by2) / 2 });
  555.         }
  556.     }
  557.    
  558.     if (µ×²¿°´Å¥Áбí.length > 0) {
  559.         µ×²¿°´Å¥Áбí.sort(function(a, b) { return b.x - a.x; });
  560.         var ×îÓұ߰´Å¥ = µ×²¿°´Å¥Áбí[0];
  561.         print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºµ×²¿×îÓұ߰´Å¥£¬×ø±ê(" + Math.round(×îÓұ߰´Å¥.x) + "," + Math.round(×îÓұ߰´Å¥.y) + ")");
  562.         return { x: ×îÓұ߰´Å¥.x, y: ×îÓұ߰´Å¥.y };
  563.     }
  564.    
  565.     print.log("⚠ Ïà²áÑ¡Ôñ°´Å¥Ê¹Óöµµ××ø±ê£¨µ×²¿£©");
  566.     return { x: ÆÁÄ»¿í * 0.78, y: ÆÁÄ»¸ß * 0.92 };
  567. }

  568. function ²éÕÒµÚÒ»ÕÅͼƬ(xml) {
  569.     var xmlStr = "" + xml;
  570.    
  571.     if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xmlStr)) {
  572.         agent.shell("echo '" + xmlStr.substring(0, 5000) + "' > /sdcard/Ïà²áUI_dump.xml");
  573.         print.log("✓ Òѱ£´æÏà²áUI XMLµ½/sdcard/Ïà²áUI_dump.xml");
  574.         
  575.         var packageMatch = xmlStr.match(/package="([^"]+)"/);
  576.         var µ±Ç°°üÃû = packageMatch ? packageMatch[1] : "";
  577.         
  578.         if (µ±Ç°°üÃû === ÎÄÐİüÃû) {
  579.             var ugcPattern = /<node[^>]*?resource-id="[^"]*?ugc_img"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  580.             var ugcMatch;
  581.             var ugcͼƬÁбí = [];
  582.             
  583.             while ((ugcMatch = ugcPattern.exec(xmlStr)) !== null) {
  584.                 var ix1 = parseInt(ugcMatch[1]);
  585.                 var iy1 = parseInt(ugcMatch[2]);
  586.                 var ix2 = parseInt(ugcMatch[3]);
  587.                 var iy2 = parseInt(ugcMatch[4]);
  588.                 var iw = ix2 - ix1;
  589.                 var ih = iy2 - iy1;
  590.                
  591.                 if (iw >= 100 && ih >= 100) {
  592.                     ugcͼƬÁбí.push({ x1: ix1, y1: iy1, x2: ix2, y2: iy2, x: (ix1 + ix2) / 2, y: (iy1 + iy2) / 2 });
  593.                 }
  594.             }
  595.             
  596.             if (ugcͼƬÁбí.length > 0) {
  597.                 ugcͼƬÁбí.sort(function(a, b) {
  598.                     if (a.y1 !== b.y1) return a.y1 - b.y1;
  599.                     return a.x1 - b.x1;
  600.                 });
  601.                 var µÚÒ»ÕÅͼƬ = ugcͼƬÁбí[0];
  602.                 print.log("✓ ÎÄÐÄÖúÊÖÄÚ²¿Ïà²áÕÒµ½µÚÒ»ÕÅͼƬ£º×ø±ê(" + Math.round(µÚÒ»ÕÅͼƬ.x) + "," + Math.round(µÚÒ»ÕÅͼƬ.y) + ")£¬bounds=[" + µÚÒ»ÕÅͼƬ.x1 + "," + µÚÒ»ÕÅͼƬ.y1 + "][" + µÚÒ»ÕÅͼƬ.x2 + "," + µÚÒ»ÕÅͼƬ.y2 + "]");
  603.                 return { x: µÚÒ»ÕÅͼƬ.x, y: µÚÒ»ÕÅͼƬ.y };
  604.             }
  605.         }
  606.         
  607.         var nafPattern = /<node[^>]*?NAF="true"[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  608.         var nafMatch;
  609.         var NAFСԲµãÁбí = [];
  610.         
  611.         while ((nafMatch = nafPattern.exec(xmlStr)) !== null) {
  612.             var nx1 = parseInt(nafMatch[1]);
  613.             var ny1 = parseInt(nafMatch[2]);
  614.             var nx2 = parseInt(nafMatch[3]);
  615.             var ny2 = parseInt(nafMatch[4]);
  616.             var nw = nx2 - nx1;
  617.             var nh = ny2 - ny1;
  618.             
  619.             if (nw >= 50 && nw <= 300 && nh >= 50 && nh <= 300) {
  620.                 if (ny1 >= 400 && ny2 <= ÆÁÄ»¸ß - 400) {
  621.                     NAFСԲµãÁбí.push({ x1: nx1, y1: ny1, x2: nx2, y2: ny2, x: (nx1 + nx2) / 2, y: (ny1 + ny2) / 2 });
  622.                 }
  623.             }
  624.         }
  625.         
  626.         if (NAFСԲµãÁбí.length > 0) {
  627.             NAFСԲµãÁбí.sort(function(a, b) {
  628.                 if (a.y1 !== b.y1) return a.y1 - b.y1;
  629.                 return a.x1 - b.x1;
  630.             });
  631.             var Ñ¡ÖÐСԲµã = NAFСԲµãÁбí[0];
  632.             print.log("✓ ComposeViewÕÒµ½NAFСԲµãÑ¡Ôñ¿ò£º×ø±ê(" + Math.round(Ñ¡ÖÐСԲµã.x) + "," + Math.round(Ñ¡ÖÐСԲµã.y) + ")£¬bounds=[" + Ñ¡ÖÐСԲµã.x1 + "," + Ñ¡ÖÐСԲµã.y1 + "][" + Ñ¡ÖÐСԲµã.x2 + "," + Ñ¡ÖÐСԲµã.y2 + "]");
  633.             return { x: Ñ¡ÖÐСԲµã.x, y: Ñ¡ÖÐСԲµã.y };
  634.         }
  635.         
  636.         var imageDescPattern = /<node[^>]*?content-desc="([^"]+\.(png|jpg|jpeg|gif))"[^>]*?class="android\.view\.View"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/gi;
  637.         var imgMatch;
  638.         var ͼƬ½ÚµãÁбí = [];
  639.         
  640.         while ((imgMatch = imageDescPattern.exec(xmlStr)) !== null) {
  641.             var ÎļþÃû = imgMatch[1];
  642.             var ix1 = parseInt(imgMatch[3]);
  643.             var iy1 = parseInt(imgMatch[4]);
  644.             var ix2 = parseInt(imgMatch[5]);
  645.             var iy2 = parseInt(imgMatch[6]);
  646.             var iw = ix2 - ix1;
  647.             var ih = iy2 - iy1;
  648.             
  649.             if (iw >= 100 && ih >= 100) {
  650.                 ͼƬ½ÚµãÁбí.push({ ÎļþÃû: ÎļþÃû, x1: ix1, y1: iy1, x2: ix2, y2: iy2, w: iw, h: ih });
  651.             }
  652.         }
  653.         
  654.         if (ͼƬ½ÚµãÁбí.length > 0) {
  655.             Í¼Æ¬½ÚµãÁбí.sort(function(a, b) {
  656.                 if (a.y1 !== b.y1) return a.y1 - b.y1;
  657.                 return a.x1 - b.x1;
  658.             });
  659.             var µÚÒ»ÕÅͼƬ = ͼƬ½ÚµãÁбí[0];
  660.             print.log("✓ ÕÒµ½Í¼Æ¬£º" + µÚÒ»ÕÅͼƬ.ÎļþÃû + "£¬bounds=[" + µÚÒ»ÕÅͼƬ.x1 + "," + µÚÒ»ÕÅͼƬ.y1 + "][" + µÚÒ»ÕÅͼƬ.x2 + "," + µÚÒ»ÕÅͼƬ.y2 + "]");
  661.             
  662.             var Ñ¡Ôñ¿òX = µÚÒ»ÕÅͼƬ.x1 + µÚÒ»ÕÅͼƬ.w * 0.77;
  663.             var Ñ¡Ôñ¿òY = µÚÒ»ÕÅͼƬ.y1 + µÚÒ»ÕÅͼƬ.h * 0.24;
  664.             print.log("✓ ¼ÆËãСԲµãÑ¡Ôñ¿ò×ø±ê£º(" + Math.round(Ñ¡Ôñ¿òX) + "," + Math.round(Ñ¡Ôñ¿òY) + ")");
  665.             return { x: Ñ¡Ôñ¿òX, y: Ñ¡Ôñ¿òY };
  666.         }
  667.         
  668.         var clickableViewPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  669.         var clickMatch;
  670.         var ¿Éµã»÷ÇøÓò = [];
  671.         while ((clickMatch = clickableViewPattern.exec(xmlStr)) !== null) {
  672.             var cx1 = parseInt(clickMatch[1]);
  673.             var cy1 = parseInt(clickMatch[2]);
  674.             var cx2 = parseInt(clickMatch[3]);
  675.             var cy2 = parseInt(clickMatch[4]);
  676.             var cw = cx2 - cx1;
  677.             var ch = cy2 - cy1;
  678.             ¿Éµã»÷ÇøÓò.push({ x1: cx1, y1: cy1, x2: cx2, y2: cy2, w: cw, h: ch, x: (cx1 + cx2) / 2, y: (cy1 + cy2) / 2 });
  679.         }
  680.         
  681.         var Í¼Æ¬ÇøÓòÄڿɵã»÷ = [];
  682.         for (var k = 0; k < ¿Éµã»÷ÇøÓò.length; k++) {
  683.             var item = ¿Éµã»÷ÇøÓò[k];
  684.             if (item.y >= 400 && item.y <= ÆÁÄ»¸ß - 400) {
  685.                 Í¼Æ¬ÇøÓòÄڿɵã»÷.push(item);
  686.             }
  687.         }
  688.         
  689.         if (Í¼Æ¬ÇøÓòÄڿɵã»÷.length > 0) {
  690.             Í¼Æ¬ÇøÓòÄڿɵã»÷.sort(function(a, b) {
  691.                 if (a.y !== b.y) return a.y - b.y;
  692.                 return a.x - b.x;
  693.             });
  694.             var µÚÒ»¸ö¿Éµã»÷ = Í¼Æ¬ÇøÓòÄڿɵã»÷[0];
  695.             print.log("✓ ComposeViewÍ¼Æ¬ÇøÓòÄÚµÚÒ»¸ö¿Éµã»÷ÔªËØ£º×ø±ê(" + Math.round(µÚÒ»¸ö¿Éµã»÷.x) + "," + Math.round(µÚÒ»¸ö¿Éµã»÷.y) + ")");
  696.             return { x: µÚÒ»¸ö¿Éµã»÷.x, y: µÚÒ»¸ö¿Éµã»÷.y };
  697.         }

  698.         print.log("⚠ ϵͳÏà²áδÕÒµ½Í¼Æ¬£¬Êä³öµ÷ÊÔÐÅÏ¢£º");
  699.         print.log("  µ±Ç°°üÃû£º" + xmlStr.match(/package="([^"]+)"/)[1]);
  700.         print.log("  XMLǰ1000×Ö·û£º" + xmlStr.substring(0, 1000));
  701.         print.log("  NAFСԲµãÊýÁ¿£º" + NAFСԲµãÁбí.length);
  702.         print.log("  Í¼Æ¬½ÚµãÊýÁ¿£º" + ͼƬ½ÚµãÁбí.length);
  703.         
  704.         var allImgViews = xmlStr.match(/class="android\.widget\.ImageView"/g);
  705.         print.log("  È«²¿ImageViewÊýÁ¿£º" + (allImgViews ? allImgViews.length : 0));
  706.         
  707.         return { x: ÆÁÄ»¿í * 0.25, y: ÆÁÄ»¸ß * 0.3 };
  708.     }

  709.     var rvPattern = /<node[^>]*?class="androidx\.recyclerview\.widget\.RecyclerView"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  710.     var rvMatch;
  711.     var ͼƬÁбíÇøÓò = null;

  712.     while ((rvMatch = rvPattern.exec(xmlStr)) !== null) {
  713.         var rx1 = parseInt(rvMatch[1]);
  714.         var ry1 = parseInt(rvMatch[2]);
  715.         var rx2 = parseInt(rvMatch[3]);
  716.         var ry2 = parseInt(rvMatch[4]);
  717.         var ¸ß¶È = ry2 - ry1;

  718.         if (ry1 > ÆÁÄ»¸ß * 0.7 && ¸ß¶È > 300) {
  719.             Í¼Æ¬ÁбíÇøÓò = {x1: rx1, y1: ry1, x2: rx2, y2: ry2};
  720.             print.log("✓ ÕÒµ½µ×²¿Í¼Æ¬ÁбíRecyclerView£º[" + rx1 + "," + ry1 + "][" + rx2 + "," + ry2 + "]");
  721.             break;
  722.         }
  723.     }

  724.     if (ͼƬÁбíÇøÓò) {
  725.         var imgPattern = /<node[^>]*?class="android\.widget\.ImageView"[^>]*?\/?>/g;
  726.         var imgMatch;
  727.         var ºòÑ¡ = [];
  728.         while ((imgMatch = imgPattern.exec(xmlStr)) !== null) {
  729.             var imgNode = imgMatch[0];
  730.             var boundsMatch = imgNode.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  731.             if (!boundsMatch) continue;
  732.             var ix1 = parseInt(boundsMatch[1]);
  733.             var iy1 = parseInt(boundsMatch[2]);
  734.             var ix2 = parseInt(boundsMatch[3]);
  735.             var iy2 = parseInt(boundsMatch[4]);
  736.             var iw = ix2 - ix1;
  737.             var ih = iy2 - iy1;

  738.             var ÔÚÇøÓòÄÚ = (ix1 >= ͼƬÁбíÇøÓò.x1 && ix2 <= ͼƬÁбíÇøÓò.x2 &&
  739.                             iy1 >= ͼƬÁбíÇøÓò.y1 && iy2 <= ͼƬÁбíÇøÓò.y2);
  740.             var ÊÇ´óͼ = (iw > 100 && ih > 100);

  741.             if (ÔÚÇøÓòÄÚ && ÊÇ´óͼ) {
  742.                 ºòÑ¡.push({
  743.                     x: (ix1 + ix2) / 2,
  744.                     y: (iy1 + iy2) / 2,
  745.                     y1: iy1,
  746.                     x1: ix1
  747.                 });
  748.             }
  749.         }

  750.         if (ºòÑ¡.length > 0) {
  751.             ºòÑ¡.sort(function(a, b) {
  752.                 if (a.y1 !== b.y1) return a.y1 - b.y1;
  753.                 return a.x1 - b.x1;
  754.             });
  755.             var Ñ¡ÖÐ = ºòÑ¡[0];
  756.             print.log("✓ µÚÒ»ÕÅͼƬ¶¨Î»£ºµ×²¿Í¼Æ¬ÁбíÄÚµÄImageView£¬×ø±ê(" + Math.round(Ñ¡ÖÐ.x) + "," + Math.round(Ñ¡ÖÐ.y) + ")");
  757.             return { x: Ñ¡ÖÐ.x, y: Ñ¡ÖÐ.y };
  758.         }
  759.     }

  760.     var imgPattern2 = /<node[^>]*?class="android\.widget\.ImageView"[^>]*?\/?>/g;
  761.     var imgMatch2;
  762.     var ºòÑ¡2 = [];
  763.     while ((imgMatch2 = imgPattern2.exec(xmlStr)) !== null) {
  764.         var imgNode = imgMatch2[0];
  765.         var boundsMatch = imgNode.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  766.         if (!boundsMatch) continue;
  767.         var ix1 = parseInt(boundsMatch[1]);
  768.         var iy1 = parseInt(boundsMatch[2]);
  769.         var ix2 = parseInt(boundsMatch[3]);
  770.         var iy2 = parseInt(boundsMatch[4]);
  771.         var iw = ix2 - ix1;
  772.         var ih = iy2 - iy1;

  773.         if (iy1 > ÆÁÄ»¸ß * 0.7 && iw > 100 && ih > 100) {
  774.             ºòÑ¡2.push({
  775.                 x: (ix1 + ix2) / 2,
  776.                 y: (iy1 + iy2) / 2,
  777.                 y1: iy1,
  778.                 x1: ix1
  779.             });
  780.         }
  781.     }

  782.     if (ºòÑ¡2.length > 0) {
  783.         ºòÑ¡2.sort(function(a, b) {
  784.             if (a.y1 !== b.y1) return a.y1 - b.y1;
  785.             return a.x1 - b.x1;
  786.         });
  787.         var Ñ¡ÖÐ2 = ºòÑ¡2[0];
  788.         print.log("✓ µÚÒ»ÕÅͼƬ¶¨Î»£ºµ×²¿ÇøÓòImageView£¬×ø±ê(" + Math.round(Ñ¡ÖÐ2.x) + "," + Math.round(Ñ¡ÖÐ2.y) + ")");
  789.         return { x: Ñ¡ÖÐ2.x, y: Ñ¡ÖÐ2.y };
  790.     }

  791.     print.log("⚠ δÕÒµ½Í¼Æ¬£¬Ê¹Óöµµ××ø±ê£¨µ×²¿µÚÒ»ÐеÚÒ»ÁУ©");
  792.     return { x: ÆÁÄ»¿í * 0.15, y: ÆÁÄ»¸ß * 0.85 };
  793. }

  794. function ²éÕÒ·¢ËͰ´Å¥ÖÐÐÄ(xml) {
  795.     var xmlStr = "" + xml;

  796.     try {
  797.         var detects = opencv.findImagesEx('ͼɫ168638.cv');
  798.         if (detects != null && detects.length > 0) {
  799.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÍ¼É«Æ¥Åä");
  800.             var dStr = "" + detects[0];
  801.             print.log("ͼɫƥÅä½á¹û£º" + dStr);
  802.             var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  803.             if (m) {
  804.                 var left = parseFloat(m[1]);
  805.                 var top = parseFloat(m[2]);
  806.                 var right = parseFloat(m[3]);
  807.                 var bottom = parseFloat(m[4]);
  808.                 var centerX = (left + right) / 2;
  809.                 var centerY = (top + bottom) / 2;
  810.                 print.log("ͼɫƥÅä°Ù·Ö±È×ø±ê£ºleft=" + left + ", top=" + top + ", right=" + right + ", bottom=" + bottom);
  811.                 print.log("¼ÆËãµã»÷°Ù·Ö±È£º(" + centerX + "," + centerY + ")");
  812.                 agent.clickPercent(centerX, centerY);
  813.                 print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Í¼É«£©");
  814.                 return null;
  815.             }
  816.             print.log("⚠ ͼɫƥÅä½á¹û¸ñʽ½âÎöʧ°Ü");
  817.         }
  818.     } catch (e) {
  819.         print.log("⚠ ͼɫƥÅäʧ°Ü£º" + e.message);
  820.     }

  821.     var sendImgPattern = /class="android\.widget\.ImageView"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  822.     var imgMatches = [];
  823.     var imgMatch;
  824.    
  825.     while ((imgMatch = sendImgPattern.exec(xmlStr)) !== null) {
  826.         var ix1 = parseInt(imgMatch[1]);
  827.         var iy1 = parseInt(imgMatch[2]);
  828.         var ix2 = parseInt(imgMatch[3]);
  829.         var iy2 = parseInt(imgMatch[4]);
  830.         var iw = ix2 - ix1;
  831.         var ih = iy2 - iy1;
  832.         
  833.         if (iw > 50 && ih > 50 && ix1 > ÆÁÄ»¿í * 0.7 && iy1 > ÆÁÄ»¸ß * 0.7) {
  834.             imgMatches.push({
  835.                 x1: ix1, y1: iy1, x2: ix2, y2: iy2,
  836.                 x: (ix1 + ix2) / 2,
  837.                 y: (iy1 + iy2) / 2
  838.             });
  839.         }
  840.     }
  841.    
  842.     if (imgMatches.length > 0) {
  843.         imgMatches.sort(function(a, b) {
  844.             return b.y1 - a.y1;
  845.         });
  846.         var ·¢ËͰ´Å¥ = imgMatches[0];
  847.         print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÊäÈë¿òÏ·½ImageView£¬×ø±ê(" + Math.round(·¢ËͰ´Å¥.x) + "," + Math.round(·¢ËͰ´Å¥.y) + ")");
  848.         return ·¢ËͰ´Å¥;
  849.     }

  850.     var sendTextIdx = xmlStr.indexOf('text="·¢ËÍ"');
  851.     if (sendTextIdx !== -1) {
  852.         var ¶Î = xmlStr.substring(sendTextIdx);
  853.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  854.         if (m) {
  855.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÎı¾Æ¥Åä");
  856.             return {
  857.                 x: (parseInt(m[1]) + parseInt(m[3])) / 2,
  858.                 y: (parseInt(m[2]) + parseInt(m[4])) / 2
  859.             };
  860.         }
  861.     }

  862.     var sendDescIdx = xmlStr.indexOf('content-desc="·¢ËÍ"');
  863.     if (sendDescIdx !== -1) {
  864.         var ¶Î2 = xmlStr.substring(sendDescIdx);
  865.         var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  866.         if (m2) {
  867.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºcontent-descÆ¥Åä");
  868.             return {
  869.                 x: (parseInt(m2[1]) + parseInt(m2[3])) / 2,
  870.                 y: (parseInt(m2[2]) + parseInt(m2[4])) / 2
  871.             };
  872.         }
  873.     }

  874.     var inputKeywords = ["·¢ÏûÏ¢»ò°´×¡Ëµ»°", "ÔÚÕâÀïÌáÎÊ", "½Ó×ÅÎÊ", "·ÖÎöͼƬÄÚÈÝ"];
  875.     var ÊäÈë¿ò±ß½ç = null;
  876.    
  877.     for (var k = 0; k < inputKeywords.length; k++) {
  878.         var inputIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
  879.         if (inputIdx !== -1) {
  880.             var ÊäÈë¿ò¶Î = xmlStr.substring(inputIdx);
  881.             ÊäÈë¿ò±ß½ç = ÊäÈë¿ò¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  882.             if (ÊäÈë¿ò±ß½ç) break;
  883.         }
  884.     }
  885.    
  886.     if (!ÊäÈë¿ò±ß½ç) {
  887.         var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
  888.         if (editTextIdx !== -1) {
  889.             var ¶Î = xmlStr.substring(editTextIdx);
  890.             ÊäÈë¿ò±ß½ç = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  891.         }
  892.     }
  893.    
  894.     if (ÊäÈë¿ò±ß½ç) {
  895.         var ÊäÈë¿òÐÅÏ¢ = {
  896.             x1: parseInt(ÊäÈë¿ò±ß½ç[1]),
  897.             y1: parseInt(ÊäÈë¿ò±ß½ç[2]),
  898.             x2: parseInt(ÊäÈë¿ò±ß½ç[3]),
  899.             y2: parseInt(ÊäÈë¿ò±ß½ç[4]),
  900.             centerY: (parseInt(ÊäÈë¿ò±ß½ç[2]) + parseInt(ÊäÈë¿ò±ß½ç[4])) / 2
  901.         };

  902.         var toolbarKeywords = ["ħ·¨ÐÞͼ", "ÊÓÆµÍ¨»°", "·ÅÐÄд", "ħ·¨Âþ»­"];
  903.         var ¹¤¾ßÀ¸Y·¶Î§ = null;
  904.         for (var t = 0; t < toolbarKeywords.length; t++) {
  905.             var tbIdx = xmlStr.indexOf('text="' + toolbarKeywords[t] + '"');
  906.             if (tbIdx !== -1) {
  907.                 var tb¶Î = xmlStr.substring(tbIdx);
  908.                 var tbMatch = tb¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  909.                 if (tbMatch) {
  910.                     ¹¤¾ßÀ¸Y·¶Î§ = {
  911.                         y1: parseInt(tbMatch[2]),
  912.                         y2: parseInt(tbMatch[4])
  913.                     };
  914.                     break;
  915.                 }
  916.             }
  917.         }

  918.         var clickablePattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"[^>]*?\/?>/g;
  919.         var clickMatch;
  920.         var candidates = [];

  921.         while ((clickMatch = clickablePattern.exec(xmlStr)) !== null) {
  922.             var cx1 = parseInt(clickMatch[1]);
  923.             var cy1 = parseInt(clickMatch[2]);
  924.             var cx2 = parseInt(clickMatch[3]);
  925.             var cy2 = parseInt(clickMatch[4]);
  926.             var cw = cx2 - cx1;
  927.             var ch = cy2 - cy1;

  928.             var ÊÇС°´Å¥ = (cw < 300 && ch < 300);
  929.             var ÔÚÊäÈë¿òÓÒ²à = (cx1 > ÊäÈë¿òÐÅÏ¢.x2 - 100);
  930.             var ÔÚÊäÈë¿òˮƽÐÐ = (cy1 >= ÊäÈë¿òÐÅÏ¢.y1 - 100 && cy1 <= ÊäÈë¿òÐÅÏ¢.y2 + 100);
  931.             
  932.             var ÔÚ¹¤¾ßÀ¸ÇøÓò = false;
  933.             if (¹¤¾ßÀ¸Y·¶Î§ && cy1 >= ¹¤¾ßÀ¸Y·¶Î§.y1 && cy2 <= ¹¤¾ßÀ¸Y·¶Î§.y2 + 100) {
  934.                 ÔÚ¹¤¾ßÀ¸ÇøÓò = true;
  935.             }

  936.             if (ÊÇС°´Å¥ && ÔÚÊäÈë¿òÓÒ²à && ÔÚÊäÈë¿òˮƽÐÐ && !ÔÚ¹¤¾ßÀ¸ÇøÓò) {
  937.                 candidates.push({
  938.                     x1: cx1, y1: cy1, x2: cx2, y2: cy2,
  939.                     x: (cx1 + cx2) / 2,
  940.                     y: (cy1 + cy2) / 2
  941.                 });
  942.             }
  943.         }

  944.         if (candidates.length > 0) {
  945.             candidates.sort(function(a, b) {
  946.                 return b.x1 - a.x1;
  947.             });
  948.             var Ñ¡ÖÐ = candidates[0];
  949.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÊäÈë¿òÓÒ²àclickableÔªËØ£¬×ø±ê(" + Math.round(Ñ¡ÖÐ.x) + "," + Math.round(Ñ¡ÖÐ.y) + ")");
  950.             return { x: Ñ¡ÖÐ.x, y: Ñ¡ÖÐ.y };
  951.         }

  952.         var Ô¤¹ÀX = ÊäÈë¿òÐÅÏ¢.x2 + 100;
  953.         var Ô¤¹ÀY = ÊäÈë¿òÐÅÏ¢.centerY;
  954.         print.log("⚠ ·¢ËͰ´Å¥Ê¹ÓÃÊäÈë¿òÓҲඵµ××ø±ê(" + Math.round(Ô¤¹ÀX) + "," + Math.round(Ô¤¹ÀY) + ")");
  955.         return { x: Ô¤¹ÀX, y: Ô¤¹ÀY };
  956.     }

  957.     print.log("⚠ ·¢ËͰ´Å¥Ê¹ÓÃÆÁÄ»ÓҲඵµ×²ßÂÔ");
  958.     agent.clickPercent(0.9, 0.91);
  959.     print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Ó²±àÂë¶µµ×£©");
  960.     return null;
  961. }

  962. function µÈ´ýAI»Ø´ðÍê³É(·¢ËÍǰµÄ×îºóÎı¾, ·¢ËÍǰ»Ø´ðÊýÁ¿) {
  963.     var ÒѺÄʱ = 0;
  964.     var ¼ì²é¼ä¸ôÃë = 1;

  965.     print.log("·¢ËÍǰ×îºóAI»Ø´ð£º'" + ·¢ËÍǰµÄ×îºóÎı¾ + "'£¬·¢ËÍǰ»Ø´ðÊýÁ¿£º" + ·¢ËÍǰ»Ø´ðÊýÁ¿);

  966.     var ¹¤¾ßÀ¸¹Ø¼ü´Ê = ["ħ·¨ÐÞͼ", "ÊÓÆµÍ¨»°", "·ÅÐÄд", "ħ·¨Âþ»­"];
  967.     var ·¢ËÍǰÊǹ¤¾ßÀ¸ = ¹¤¾ßÀ¸¹Ø¼ü´Ê.indexOf(·¢ËÍǰµÄ×îºóÎı¾) !== -1;

  968.     var ¼ì²é¼ä¸ôÃë = 3;
  969.     var Á¬ÐøÏàͬ´ÎÊý = 0;
  970.     var Éϴι淶»¯Îı¾ = "";

  971.     sleep.second(Ãë = 5);
  972.     ÒѺÄʱ += 5;

  973.     while (ÒѺÄʱ < µÈ´ý»Ø´ð³¬Ê±Ãë) {
  974.         var xml = »ñÈ¡UI();
  975.         var »Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
  976.         
  977.         if (»Ø´ðÁбí.length > 0) {
  978.             var µ±Ç°×îºó»Ø´ð = »Ø´ðÁбí[»Ø´ðÁбí.length - 1];
  979.             var µ±Ç°ÌáÈ¡Êý×Ö = ÌáÈ¡Êý×Ö(µ±Ç°×îºó»Ø´ð);
  980.             var µ±Ç°¹æ·¶»¯Îı¾ = µ±Ç°×îºó»Ø´ð.trim().replace(/\s+/g, " ");
  981.             
  982.             var ÓÐлشð = false;
  983.             var »Ø´ðÊýÁ¿Ôö¼Ó = (»Ø´ðÁбí.length > ·¢ËÍǰ»Ø´ðÊýÁ¿);
  984.             
  985.             if (·¢ËÍǰÊǹ¤¾ßÀ¸) {
  986.                 var µ±Ç°²»Êǹ¤¾ßÀ¸ = ¹¤¾ßÀ¸¹Ø¼ü´Ê.indexOf(µ±Ç°×îºó»Ø´ð) === -1;
  987.                 var ÓÐOCRÄÚÈÝ = µ±Ç°×îºó»Ø´ð.length > 10;
  988.                 ÓÐлشð = µ±Ç°²»Êǹ¤¾ßÀ¸ || ÓÐOCRÄÚÈÝ || µ±Ç°ÌáÈ¡Êý×Ö !== "";
  989.             } else {
  990.                 var ·¢ËÍǰ¹æ·¶»¯ = ·¢ËÍǰµÄ×îºóÎı¾.trim().replace(/\s+/g, " ");
  991.                 ÓÐлشð = (µ±Ç°¹æ·¶»¯Îı¾ !== ·¢ËÍǰ¹æ·¶»¯) || (µ±Ç°ÌáÈ¡Êý×Ö !== "");
  992.             }
  993.             
  994.             if (ÓÐлشð || »Ø´ðÊýÁ¿Ôö¼Ó) {
  995.                 print.log("✓ ¼ì²âµ½Ð»شð£¨" + ÒѺÄʱ + "Ã룩£º'" + µ±Ç°×îºó»Ø´ð + "'£¬ÌáÈ¡Êý×Ö£º'" + µ±Ç°ÌáÈ¡Êý×Ö + "'");
  996.                
  997.                 if (µ±Ç°ÌáÈ¡Êý×Ö !== "") {
  998.                     print.log("✓ ÌáÈ¡µ½Êý×Ö£¬Ö±½Ó·µ»Ø£º" + µ±Ç°ÌáÈ¡Êý×Ö);
  999.                     return µ±Ç°ÌáÈ¡Êý×Ö;
  1000.                 }
  1001.                
  1002.                 if (µ±Ç°¹æ·¶»¯Îı¾ === Éϴι淶»¯Îı¾) {
  1003.                     Á¬ÐøÏàͬ´ÎÊý++;
  1004.                     if (Á¬ÐøÏàͬ´ÎÊý >= 2) {
  1005.                         print.log("✓ Îı¾Á¬Ðø2´ÎÏàͬ£¬»Ø´ðÍê³É");
  1006.                         var ×îÖÕÊý×Ö = ÌáÈ¡Êý×Ö(µ±Ç°×îºó»Ø´ð);
  1007.                         if (×îÖÕÊý×Ö !== "") {
  1008.                             return ×îÖÕÊý×Ö;
  1009.                         }
  1010.                         return µ±Ç°×îºó»Ø´ð;
  1011.                     }
  1012.                 } else {
  1013.                     Á¬ÐøÏàͬ´ÎÊý = 0;
  1014.                     Éϴι淶»¯Îı¾ = µ±Ç°¹æ·¶»¯Îı¾;
  1015.                 }
  1016.             }
  1017.         }
  1018.         
  1019.         sleep.second(Ãë = ¼ì²é¼ä¸ôÃë);
  1020.         ÒѺÄʱ += ¼ì²é¼ä¸ôÃë;
  1021.     }

  1022.     print.log("⚠ µÈ´ýAI»Ø´ð³¬Ê±£¨" + µÈ´ý»Ø´ð³¬Ê±Ãë + "Ã룩£¬³¢ÊÔ·µ»Øµ±Ç°ÄÚÈÝ");
  1023.     var xml = »ñÈ¡UI();
  1024.     var ¶µµ×Áбí = ²É¼¯AI»Ø´ðÁбí(xml);
  1025.     if (¶µµ×Áбí.length > 0) {
  1026.         var ¶µµ×Îı¾ = ¶µµ×Áбí[¶µµ×Áбí.length - 1];
  1027.         print.log("✓ ³¬Ê±¶µµ×£º·µ»Øµ±Ç°²É¼¯µ½µÄ»Ø´ð£º" + ¶µµ×Îı¾);
  1028.         return ¶µµ×Îı¾;
  1029.     }
  1030.     return null;
  1031. }

  1032. // ========== Ö÷Á÷³Ì¿ªÊ¼ ==========

  1033. function Ö÷Á÷³Ì() {
  1034.     // ²½Öè1£ºÈ«ÆÁ½ØÍ¼£¨BÕ¾ÑéÖ¤ÂëÒ³Ãæ£©
  1035.     print.log("\n========== ²½Öè1£ºÈ«ÆÁ½ØÍ¼BÕ¾ÑéÖ¤Âë ==========");
  1036.     var ½ØÍ¼³É¹¦ = È«ÆÁ½ØÍ¼(½ØÍ¼±£´æÂ·¾¶);
  1037.     if (!½ØÍ¼³É¹¦) {
  1038.         print.log("✗ ½ØÍ¼Ê§°Ü£¬Í˳öÁ÷³Ì");
  1039.         print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
  1040.         return;
  1041.     }

  1042.     // ²½Öè2£ºÆô¶¯ÎÄÐÄÖúÊÖAPP
  1043.     print.log("\n========== ²½Öè2£ºÆô¶¯ÎÄÐÄÖúÊÖAPP ==========");
  1044.     try {
  1045.         app.openApp(ÎÄÐİüÃû);
  1046.         print.log("✓ ÒÑÆô¶¯ÎÄÐÄÖúÊÖ");
  1047.     } catch (e) {
  1048.         print.log("⚠ Æô¶¯Ê§°Ü£º" + e.message);
  1049.     }
  1050.     sleep.second(Ãë = 5);

  1051.     // ²½Öè3£ºÈ·ÈϽøÈë¶Ô»°Ò³Ã棨֧³ÖÁ½ÖÖ´ò¿ªÐÎʽ£©
  1052.     print.log("\n========== ²½Öè3£ºÈ·ÈϽøÈë¶Ô»°Ò³Ãæ ==========");
  1053.     var xml = »ñÈ¡UI();
  1054.     var ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
  1055.     var ½øÈë¶Ô»°³É¹¦ = false;
  1056.    
  1057.     if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
  1058.         print.log("✓ ÎÄÐÄAPPÖ±½Ó´ò¿ªµ½¶Ô»°Ò³Ã棬ÎÞÐè¶îÍâ²Ù×÷");
  1059.         ½øÈë¶Ô»°³É¹¦ = true;
  1060.     } else if (´ò¿ªÐÎʽ === "ÁбíÒ³") {
  1061.         print.log("✓ ÎÄÐÄAPP´ò¿ªµ½¶Ô»°ÁбíÒ³Ãæ£¬ÐèÒªµã»÷½øÈë¶Ô»°");
  1062.         var wenxinIdx = xml.indexOf('text="ÎÄÐÄ"');
  1063.         if (wenxinIdx !== -1) {
  1064.             var ÎÄÐĶΠ= xml.substring(wenxinIdx);
  1065.             var wxBounds = ÎÄÐĶÎ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  1066.             if (wxBounds) {
  1067.                 var wxX = (parseInt(wxBounds[1]) + parseInt(wxBounds[3])) / 2;
  1068.                 var wxY = (parseInt(wxBounds[2]) + parseInt(wxBounds[4])) / 2;
  1069.                 agent.click(wxX, wxY);
  1070.                 print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¬×ø±ê(" + Math.round(wxX) + "," + Math.round(wxY) + ")");
  1071.                 sleep.second(Ãë = 3);
  1072.             } else {
  1073.                 agent.clickPercent(0.3, 0.15);
  1074.                 print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¨¶µµ××ø±ê£©");
  1075.                 sleep.second(Ãë = 3);
  1076.             }
  1077.         } else {
  1078.             agent.clickPercent(0.3, 0.15);
  1079.             print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¨¶µµ××ø±ê£©");
  1080.             sleep.second(Ãë = 3);
  1081.         }
  1082.         
  1083.         xml = »ñÈ¡UI();
  1084.         ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
  1085.         if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
  1086.             print.log("✓ ³É¹¦½øÈë¶Ô»°Ò³Ãæ");
  1087.             ½øÈë¶Ô»°³É¹¦ = true;
  1088.         } else {
  1089.             print.log("⚠ µã»÷ºóÈÔδ½øÈë¶Ô»°Ò³Ã棬Ôٴγ¢ÊÔ");
  1090.             agent.clickPercent(0.3, 0.15);
  1091.             sleep.second(Ãë = 3);
  1092.             xml = »ñÈ¡UI();
  1093.             ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
  1094.             if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
  1095.                 print.log("✓ µÚ¶þ´Î³¢ÊԳɹ¦½øÈë¶Ô»°Ò³Ãæ");
  1096.                 ½øÈë¶Ô»°³É¹¦ = true;
  1097.             }
  1098.         }
  1099.     } else {
  1100.         print.log("⚠ ÎÄÐÄAPP´ò¿ªµ½Î´ÖªÒ³Ã棬µÈ´ý3ÃëºóÖØÊÔ");
  1101.         sleep.second(Ãë = 3);
  1102.         xml = »ñÈ¡UI();
  1103.         ´ò¿ªÐÎʽ = ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml);
  1104.         
  1105.         if (´ò¿ªÐÎʽ === "¶Ô»°Ò³") {
  1106.             print.log("✓ µÈ´ýºó×Ô¶¯½øÈë¶Ô»°Ò³Ãæ");
  1107.             ½øÈë¶Ô»°³É¹¦ = true;
  1108.         } else if (´ò¿ªÐÎʽ === "ÁбíÒ³") {
  1109.             print.log("✓ µÈ´ýºó½øÈë¶Ô»°ÁбíÒ³Ãæ£¬µã»÷½øÈë¶Ô»°");
  1110.             agent.clickPercent(0.3, 0.15);
  1111.             print.log("✓ Òѵã»÷ÎÄÐĶԻ°£¨¶µµ××ø±ê£©");
  1112.             sleep.second(Ãë = 3);
  1113.             xml = »ñÈ¡UI();
  1114.             if (ÅжÏÎÄÐÄ´ò¿ªÐÎʽ(xml) === "¶Ô»°Ò³") {
  1115.                 print.log("✓ µã»÷ºó³É¹¦½øÈë¶Ô»°Ò³Ãæ");
  1116.                 ½øÈë¶Ô»°³É¹¦ = true;
  1117.             }
  1118.         }
  1119.     }
  1120.    
  1121.     if (½øÈë¶Ô»°³É¹¦) {
  1122.         print.log("✓ Òѳɹ¦½øÈëÎÄÐĶԻ°Ò³Ãæ");
  1123.     } else {
  1124.         print.log("⚠ ¶à´Î³¢ÊÔÈÔδ½øÈë¶Ô»°Ò³Ã棬¼ÌÐøºóÐø²½Öè");
  1125.     }

  1126.     // ²½Öè4£º¼Ç¼·¢ËÍǰµÄ×îºóÒ»ÌõAI»Ø´ðºÍÊýÁ¿
  1127.     var ·¢ËÍǰ»Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
  1128.     var ·¢ËÍǰ»Ø´ðÊýÁ¿ = ·¢ËÍǰ»Ø´ðÁбí.length;
  1129.     var ·¢ËÍǰ×îºóÎı¾ = "";
  1130.     if (·¢ËÍǰ»Ø´ðÁбí.length > 0) {
  1131.         ·¢ËÍǰ×îºóÎı¾ = ·¢ËÍǰ»Ø´ðÁбí[·¢ËÍǰ»Ø´ðÁбí.length - 1];
  1132.     }
  1133.     print.log("✓ ·¢ËÍǰ»Ø´ðÊýÁ¿£º" + ·¢ËÍǰ»Ø´ðÊýÁ¿ + "£¬×îºóÎı¾£º'" + ·¢ËÍǰ×îºóÎı¾ + "'");

  1134.     // ²½Öè5£ºµã»÷¼ÓºÅ°´Å¥´ò¿ª¸½¼þ²Ëµ¥
  1135.     print.log("\n========== ²½Öè5£ºµã»÷¼ÓºÅ°´Å¥´ò¿ª¸½¼þ²Ëµ¥ ==========");
  1136.     var ¼ÓºÅ°´Å¥ = ²éÕҼӺŰ´Å¥(xml);
  1137.     agent.click(¼ÓºÅ°´Å¥.x, ¼ÓºÅ°´Å¥.y);
  1138.     print.log("✓ Òѵã»÷¼ÓºÅ°´Å¥£¬×ø±ê(" + Math.round(¼ÓºÅ°´Å¥.x) + "," + Math.round(¼ÓºÅ°´Å¥.y) + ")");
  1139.     sleep.second(Ãë = 2);

  1140.     // ²½Öè6£ºÑ¡ÔñÏà²á»òͼƬ
  1141.     print.log("\n========== ²½Öè6£ºÑ¡ÔñÏà²á»òͼƬ ==========");
  1142.     var Ïà²áÑ¡Ôñ³É¹¦ = false;
  1143.     var ³¢ÊÔ´ÎÊý = 0;
  1144.     while (!Ïà²áÑ¡Ôñ³É¹¦ && ³¢ÊÔ´ÎÊý < 5) {
  1145.         ³¢ÊÔ´ÎÊý++;
  1146.         xml = »ñÈ¡UI();
  1147.         
  1148.         if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
  1149.             print.log("✓ ÒѽøÈëϵͳÏà²áÒ³Ãæ");
  1150.             Ïà²áÑ¡Ôñ³É¹¦ = true;
  1151.             break;
  1152.         }
  1153.         
  1154.         var Ïà²áÑ¡Ïî = ²éÕÒÏà²áÑ¡Ïî(xml);
  1155.         if (Ïà²áÑ¡Ïî) {
  1156.             agent.click(Ïà²áÑ¡Ïî.x, Ïà²áÑ¡Ïî.y);
  1157.             print.log("✓ Òѵã»÷Ïà²áÑ¡Ïî£¬×ø±ê(" + Math.round(Ïà²áÑ¡Ïî.x) + "," + Math.round(Ïà²áÑ¡Ïî.y) + ")");
  1158.             sleep.second(Ãë = 2);
  1159.             Ïà²áÑ¡Ôñ³É¹¦ = true;
  1160.             break;
  1161.         }
  1162.         
  1163.         var imgCount = (xml.match(/class="android\.widget\.ImageView"/g) || []).length;
  1164.         if (imgCount >= 4) {
  1165.             print.log("✓ ¼ÓºÅ²Ëµ¥µ×²¿ÒÑÏÔʾͼƬÁÐ±í£¨¼ì²âµ½" + imgCount + "¸öͼƬ£©");
  1166.             Ïà²áÑ¡Ôñ³É¹¦ = true;
  1167.             break;
  1168.         }
  1169.         
  1170.         print.log("⚠ µÚ" + ³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÎ´ÕÒµ½Ïà²áÑ¡ÏµÈ´ýÖØÊÔ");
  1171.         sleep.second(Ãë = 1);
  1172.     }

  1173.     // ²½Öè7£ºÑ¡ÔñµÚÒ»ÕÅͼƬ£¨´¦ÀíϵͳÏà²áºÍͼƬԤÀÀÒ³Ãæ£©
  1174.     print.log("\n========== ²½Öè7£ºÑ¡ÔñµÚÒ»ÕÅͼƬ ==========");
  1175.     var ͼƬѡÔñ³É¹¦ = false;
  1176.     var ͼƬ³¢ÊÔ´ÎÊý = 0;
  1177.     while (!ͼƬѡÔñ³É¹¦ && ͼƬ³¢ÊÔ´ÎÊý < 10) {
  1178.         Í¼Æ¬³¢ÊÔ´ÎÊý++;
  1179.         xml = »ñÈ¡UI();
  1180.         
  1181.         if (ͼƬ³¢ÊÔ´ÎÊý === 1) {
  1182.             var pkgMatch = xml.match(/package="([^"]+)"/);
  1183.             print.log("µ÷ÊÔ£ºµ±Ç°°üÃû=" + (pkgMatch ? pkgMatch[1] : "δ֪"));
  1184.             print.log("µ÷ÊÔ£ºXMLǰ300×Ö·û=" + xml.substring(0, 300));
  1185.             print.log("µ÷ÊÔ£ºÊÇ·ñÓнÓ×ÅÎÊ=" + (xml.indexOf("½Ó×ÅÎÊ") !== -1));
  1186.             var dbgImgCount = (xml.match(/class="android\.widget\.ImageView"/g) || []).length;
  1187.             print.log("µ÷ÊÔ£ºImageViewÊýÁ¿=" + dbgImgCount);
  1188.         }
  1189.         
  1190.         if (ÊÇ·ñÔÚͼƬԤÀÀÒ³Ãæ(xml)) {
  1191.             var È·Èϰ´Å¥ = ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml);
  1192.             agent.click(È·Èϰ´Å¥.x, È·Èϰ´Å¥.y);
  1193.             print.log("✓ Òѵã»÷ͼƬԤÀÀÈ·Èϰ´Å¥£¬×ø±ê(" + Math.round(È·Èϰ´Å¥.x) + "," + Math.round(È·Èϰ´Å¥.y) + ")");
  1194.             Í¼Æ¬Ñ¡Ôñ³É¹¦ = true;
  1195.             sleep.second(Ãë = 3);
  1196.             break;
  1197.         }
  1198.         
  1199.         if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
  1200.             var µÚÒ»ÕÅͼƬ = ²éÕÒµÚÒ»ÕÅͼƬ(xml);
  1201.             if (µÚÒ»ÕÅͼƬ) {
  1202.                 agent.click(µÚÒ»ÕÅͼƬ.x, µÚÒ»ÕÅͼƬ.y);
  1203.                 print.log("✓ Òѵã»÷µÚÒ»ÕÅͼƬ£¬×ø±ê(" + Math.round(µÚÒ»ÕÅͼƬ.x) + "," + Math.round(µÚÒ»ÕÅͼƬ.y) + ")");
  1204.                 sleep.second(Ãë = 2);
  1205.                
  1206.                 var pkgMatch = xml.match(/package="([^"]+)"/);
  1207.                 var µ±Ç°°üÃû = pkgMatch ? pkgMatch[1] : "";
  1208.                
  1209.                 if (µ±Ç°°üÃû === ÎÄÐİüÃû) {
  1210.                     xml = »ñÈ¡UI();
  1211.                     
  1212.                     var È·Èϰ´Å¥ = ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml);
  1213.                     if (È·Èϰ´Å¥) {
  1214.                         agent.click(È·Èϰ´Å¥.x, È·Èϰ´Å¥.y);
  1215.                         print.log("✓ ÎÄÐÄÖúÊÖÄÚ²¿Ïà²á£ºµã»÷È·Èϰ´Å¥£¬×ø±ê(" + Math.round(È·Èϰ´Å¥.x) + "," + Math.round(È·Èϰ´Å¥.y) + ")");
  1216.                     } else {
  1217.                         var Íê³É°´Å¥Idx = xml.indexOf('text="Íê³É"');
  1218.                         if (Íê³É°´Å¥Idx !== -1) {
  1219.                             var Íê³É¶Î = xml.substring(Íê³É°´Å¥Idx);
  1220.                             var Íê³ÉÆ¥Åä = Íê³É¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  1221.                             if (Íê³ÉÆ¥Åä) {
  1222.                                 var Íê³ÉX = (parseInt(Íê³ÉÆ¥Åä[1]) + parseInt(Íê³ÉÆ¥Åä[3])) / 2;
  1223.                                 var Íê³ÉY = (parseInt(Íê³ÉÆ¥Åä[2]) + parseInt(Íê³ÉÆ¥Åä[4])) / 2;
  1224.                                 agent.click(Íê³ÉX, Íê³ÉY);
  1225.                                 print.log("✓ ÎÄÐÄÖúÊÖÄÚ²¿Ïà²á£ºµã»÷Íê³É°´Å¥£¬×ø±ê(" + Math.round(Íê³ÉX) + "," + Math.round(Íê³ÉY) + ")");
  1226.                             }
  1227.                         }
  1228.                     }
  1229.                     
  1230.                     Í¼Æ¬Ñ¡Ôñ³É¹¦ = true;
  1231.                     sleep.second(Ãë = 3);
  1232.                     break;
  1233.                 }
  1234.                
  1235.                 xml = »ñÈ¡UI();
  1236.                 var Ñ¡Ôñ°´Å¥ = ²éÕÒÏà²áÑ¡Ôñ°´Å¥(xml);
  1237.                 if (Ñ¡Ôñ°´Å¥) {
  1238.                     agent.click(Ñ¡Ôñ°´Å¥.x, Ñ¡Ôñ°´Å¥.y);
  1239.                     print.log("✓ Òѵã»÷Ñ¡Ôñ°´Å¥£¬×ø±ê(" + Math.round(Ñ¡Ôñ°´Å¥.x) + "," + Math.round(Ñ¡Ôñ°´Å¥.y) + ")");
  1240.                     Í¼Æ¬Ñ¡Ôñ³É¹¦ = true;
  1241.                     sleep.second(Ãë = 3);
  1242.                     break;
  1243.                 } else {
  1244.                     print.log("⚠ µÚ" + ͼƬ³¢ÊÔ´ÎÊý + "´Î£ºÎ´ÕÒµ½Ñ¡Ôñ°´Å¥£¬ÖØÐ»ñÈ¡XMLÖØÊÔ");
  1245.                     sleep.second(Ãë = 1);
  1246.                     continue;
  1247.                 }
  1248.             } else {
  1249.                 print.log("⚠ ϵͳÏà²áδÕÒµ½Í¼Æ¬");
  1250.                 sleep.second(Ãë = 1);
  1251.                 continue;
  1252.             }
  1253.         }
  1254.         
  1255.         print.log("⚠ µÚ" + ͼƬ³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÎ´¼ì²âµ½Ïà²áÒ³Ãæ£¬µÈ´ýÖØÊÔ");
  1256.         sleep.second(Ãë = 1);
  1257.     }

  1258.     // ²½Öè8£ºµÈ´ýͼƬÌí¼Óµ½ÊäÈëÇøÓò£¨µÈ´ý»Øµ½ÎÄÐĶԻ°Ò³Ã棩
  1259.     print.log("\n========== ²½Öè8£ºµÈ´ýͼƬÌí¼Óµ½ÊäÈëÇøÓò ==========");
  1260.     var ͼƬÌí¼Ó³É¹¦ = false;
  1261.     var µÈ´ý³¢ÊÔ´ÎÊý = 0;
  1262.     while (!ͼƬÌí¼Ó³É¹¦ && µÈ´ý³¢ÊÔ´ÎÊý < 10) {
  1263.         µÈ´ý³¢ÊÔ´ÎÊý++;
  1264.         xml = »ñÈ¡UI();
  1265.         
  1266.         var packageMatch = xml.match(/package="([^"]+)"/);
  1267.         if (packageMatch && packageMatch[1] === ÎÄÐİüÃû) {
  1268.             print.log("✓ Òѻص½ÎÄÐĶԻ°Ò³Ãæ");
  1269.             
  1270.             var hasInput = xml.indexOf('text="ÔÚÕâÀïÌáÎÊ"') !== -1 ||
  1271.                           xml.indexOf('text="½Ó×ÅÎÊ"') !== -1 ||
  1272.                           xml.indexOf('text="·ÖÎöͼƬÄÚÈÝ"') !== -1;
  1273.             
  1274.             var hasImagePreview = xml.indexOf('class="android.widget.HorizontalScrollView"') !== -1 &&
  1275.                                 xml.indexOf('class="android.widget.FrameLayout"') !== -1;
  1276.             
  1277.             if (hasInput || hasImagePreview) {
  1278.                 print.log("✓ ͼƬÒÑÌí¼Óµ½ÊäÈëÇøÓò");
  1279.                 ͼƬÌí¼Ó³É¹¦ = true;
  1280.                 break;
  1281.             }
  1282.         }
  1283.         
  1284.         print.log("⚠ µÚ" + µÈ´ý³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÍ¼Æ¬ÉÐδÌí¼Ó£¬µÈ´ýÖØÊÔ");
  1285.         sleep.second(Ãë = 1);
  1286.     }
  1287.    
  1288.     if (!ͼƬÌí¼Ó³É¹¦) {
  1289.         print.log("⚠ ¶à´ÎµÈ´ýͼƬδÌí¼Ó£¬¼ÌÐøºóÐø²½Öè");
  1290.     }

  1291.     // ²½Öè9£ºÕ³ÌùÎÄ×ÖѯÎÊÍ϶¯¾àÀë
  1292.     print.log("\n========== ²½Öè9£ºÕ³ÌùÎÄ×ÖѯÎÊÍ϶¯¾àÀë ==========");
  1293.     xml = »ñÈ¡UI();
  1294.     var ÊäÈë¿ò = ²éÕÒÊäÈë¿òÖÐÐÄ(xml);
  1295.     var AI»Ø´ð = null;
  1296.     if (ÊäÈë¿ò) {
  1297.         agent.click(ÊäÈë¿ò.x, ÊäÈë¿ò.y);
  1298.         sleep.second(Ãë = 1);
  1299.         
  1300.         var hasDefaultText = xml.indexOf('text="·ÖÎöͼƬÄÚÈÝ"') !== -1;
  1301.         if (hasDefaultText) {
  1302.             agent.shell("input keyevent 112");
  1303.             sleep.millisecond(ºÁÃë = 500);
  1304.             agent.shell("input keyevent 112");
  1305.             sleep.millisecond(ºÁÃë = 500);
  1306.             agent.shell("input keyevent 112");
  1307.             sleep.millisecond(ºÁÃë = 500);
  1308.             agent.shell("input keyevent 67");
  1309.             sleep.millisecond(ºÁÃë = 300);
  1310.             agent.shell("input keyevent 67");
  1311.             sleep.millisecond(ºÁÃë = 300);
  1312.             agent.shell("input keyevent 67");
  1313.             sleep.millisecond(ºÁÃë = 300);
  1314.             agent.shell("input keyevent 67");
  1315.             sleep.millisecond(ºÁÃë = 300);
  1316.             agent.shell("input keyevent 67");
  1317.             sleep.millisecond(ºÁÃë = 300);
  1318.             print.log("✓ ÒÑÇå³ýĬÈÏÎı¾'·ÖÎöͼƬÄÚÈÝ'");
  1319.         }
  1320.         
  1321.         Õ³ÌùÎı¾(ÌáÎÊ»°Êõ);
  1322.         print.log("✓ ÒÑÕ³ÌùÎı¾£º" + ÌáÎÊ»°Êõ);
  1323.         sleep.second(Ãë = 2);

  1324.         // ²½Öè10£º·¢ËÍͼƬºÍÎÄ×Ö
  1325.         print.log("\n========== ²½Öè10£º·¢ËÍͼƬºÍÎÄ×Ö ==========");
  1326.         xml = »ñÈ¡UI();
  1327.         var ·¢ËͰ´Å¥ = ²éÕÒ·¢ËͰ´Å¥ÖÐÐÄ(xml);
  1328.         if (·¢ËͰ´Å¥) {
  1329.             agent.click(·¢ËͰ´Å¥.x, ·¢ËͰ´Å¥.y);
  1330.             print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¬×ø±ê(" + Math.round(·¢ËͰ´Å¥.x) + "," + Math.round(·¢ËͰ´Å¥.y) + ")");
  1331.             agent.shell("input keyevent 66");
  1332.             print.log("✓ ÒѰ´»Ø³µ¼ü·¢ËÍ");
  1333.         }
  1334.         if (!·¢ËͰ´Å¥) {
  1335.             agent.shell("input keyevent 66");
  1336.             print.log("✓ ÒѰ´»Ø³µ¼ü·¢ËÍ");
  1337.         }
  1338.         sleep.second(Ãë = 25);

  1339.         // ²½Öè11£ºµÈ´ýÎÄÐÄAI»Ø´ð
  1340.         print.log("\n========== ²½Öè11£ºµÈ´ýÎÄÐÄAI»Ø´ð ==========");
  1341.         xml = »ñÈ¡UI();
  1342.         var ·¢ËÍǰʵ¼Ê»Ø´ð = »ñÈ¡µ±Ç°×îºóAI»Ø´ð(xml);
  1343.         var ·¢ËÍǰʵ¼ÊÊýÁ¿ = ²É¼¯AI»Ø´ðÁбí(xml).length;
  1344.         print.log("·¢ËÍÇ°ÖØÐ¼ì²â£º×îºó»Ø´ð='" + ·¢ËÍǰʵ¼Ê»Ø´ð + "'£¬ÊýÁ¿=" + ·¢ËÍǰʵ¼ÊÊýÁ¿);
  1345.         AI»Ø´ð = µÈ´ýAI»Ø´ðÍê³É(·¢ËÍǰʵ¼Ê»Ø´ð, ·¢ËÍǰʵ¼ÊÊýÁ¿);
  1346.     } else {
  1347.         print.log("⚠ δÕÒµ½ÊäÈë¿ò");
  1348.     }
  1349.    
  1350.     if (!AI»Ø´ð) {
  1351.         print.log("✗ δ»ñÈ¡µ½AI»Ø´ð");
  1352.         print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
  1353.         return;
  1354.     }

  1355.     print.log("\n✓ ²É¼¯µ½AI»Ø´ð");
  1356.     print.log("--- ²É¼¯ÄÚÈÝ¿ªÊ¼ ---");
  1357.     print.log(AI»Ø´ð);
  1358.     print.log("--- ²É¼¯ÄÚÈݽáÊø ---");

  1359.     // ²½Öè12£º½âÎöÍ϶¯¾àÀë×ø±ê
  1360.     print.log("\n========== ²½Öè12£º½âÎöÍ϶¯¾àÀë×ø±ê ==========");
  1361.     print.log("✓ AIԭʼ»Ø´ð£º'" + AI»Ø´ð + "'");
  1362.    
  1363.     var ËùÓÐÊý×Ö = AI»Ø´ð.match(/\d+/g);
  1364.     var Í϶¯¾àÀëÏñËØ = null;
  1365.     var AIͼÏñ¿í¶È = null;
  1366.    
  1367.     if (ËùÓÐÊý×Ö && ËùÓÐÊý×Ö.length >= 2) {
  1368.         var Êý×ÖÁбí = [];
  1369.         for (var i = 0; i < ËùÓÐÊý×Ö.length; i++) {
  1370.             Êý×ÖÁбí.push(parseInt(ËùÓÐÊý×Ö[i]));
  1371.         }
  1372.         print.log("✓ ÌáÈ¡µ½ËùÓÐÊý×Ö£º" + Êý×ÖÁбí.join(", "));
  1373.         
  1374.         if (Êý×ÖÁбí.length >= 5) {
  1375.             var x1 = Êý×ÖÁбí[0];
  1376.             var y1 = Êý×ÖÁбí[1];
  1377.             var x2 = Êý×ÖÁбí[2];
  1378.             var y2 = Êý×ÖÁбí[3];
  1379.             AIͼÏñ¿í¶È = Êý×ÖÁбí[4];
  1380.             Í϶¯¾àÀëÏñËØ = Math.abs(x2 - x1);
  1381.             print.log("✓ ʶ±ðµ½Á½×é×ø±ê+ͼÏñ¿í¶È£º(" + x1 + "," + y1 + ") ºÍ (" + x2 + "," + y2 + ")£¬Í¼Ïñ¿í¶È=" + AIͼÏñ¿í¶È);
  1382.             print.log("✓ ¼ÆËãÍ϶¯¾àÀ룺|x2 - x1| = |" + x2 + " - " + x1 + "| = " + Í϶¯¾àÀëÏñËØ);
  1383.         } else if (Êý×ÖÁбí.length >= 4) {
  1384.             var x1 = Êý×ÖÁбí[0];
  1385.             var y1 = Êý×ÖÁбí[1];
  1386.             var x2 = Êý×ÖÁбí[2];
  1387.             var y2 = Êý×ÖÁбí[3];
  1388.             Í϶¯¾àÀëÏñËØ = Math.abs(x2 - x1);
  1389.             AIͼÏñ¿í¶È = Math.max(x1, x2) + 100;
  1390.             print.log("✓ ʶ±ðµ½Á½×é×ø±ê¸ñʽ£º(" + x1 + "," + y1 + ") ºÍ (" + x2 + "," + y2 + ")");
  1391.             print.log("✓ ¼ÆËãÍ϶¯¾àÀ룺|x2 - x1| = |" + x2 + " - " + x1 + "| = " + Í϶¯¾àÀëÏñËØ);
  1392.             print.log("✓ ¹ÀËãͼÏñ¿í¶È£ºmax(x1,x2)+100 = " + AIͼÏñ¿í¶È);
  1393.         } else if (Êý×ÖÁбí.length >= 2) {
  1394.             var ×ø±êÆ¥Åä = AI»Ø´ð.match(/(\d+)\s*[,£¬]\s*(\d+)/);
  1395.             if (×ø±êÆ¥Åä) {
  1396.                 var cx1 = parseInt(×ø±êÆ¥Åä[1]);
  1397.                 var cx2 = parseInt(×ø±êÆ¥Åä[2]);
  1398.                 Í϶¯¾àÀëÏñËØ = Math.abs(cx2 - cx1);
  1399.                 AIͼÏñ¿í¶È = Math.max(cx1, cx2) + 100;
  1400.                 print.log("✓ ʶ±ðµ½×ø±ê¸ñʽ£º(" + cx1 + "," + cx2 + ")£¬¼ÆËã¾àÀ룺" + Í϶¯¾àÀëÏñËØ);
  1401.             } else {
  1402.                 Í϶¯¾àÀëÏñËØ = Êý×ÖÁбí[0];
  1403.                 print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
  1404.             }
  1405.         } else {
  1406.             Í϶¯¾àÀëÏñËØ = Êý×ÖÁбí[0];
  1407.             print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
  1408.         }
  1409.     } else if (ËùÓÐÊý×Ö && ËùÓÐÊý×Ö.length === 1) {
  1410.         Í϶¯¾àÀëÏñËØ = parseInt(ËùÓÐÊý×Ö[0]);
  1411.         print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
  1412.     } else {
  1413.         print.log("✗ δÕÒµ½ÓÐЧµÄÍ϶¯¾àÀë");
  1414.         print.log("===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
  1415.         return;
  1416.     }
  1417.    
  1418.     var ͼÏñËõ·ÅϵÊý = 1.0;
  1419.     if (Í϶¯¾àÀëÏñËØ < 30) {
  1420.         print.log("⚠ ÌáÈ¡µ½µÄÍ϶¯¾àÀë¹ýС(" + Í϶¯¾àÀëÏñËØ + ")£¬¿ÉÄÜÊÇOCRʶ±ð´íÎó£¬Ìø¹ýËõ·Å²¹³¥");
  1421.     } else if (AIͼÏñ¿í¶È && AIͼÏñ¿í¶È > 0 && AIͼÏñ¿í¶È < ÆÁÄ»¿í) {
  1422.         Í¼ÏñËõ·ÅϵÊý = ÆÁÄ»¿í / AIͼÏñ¿í¶È;
  1423.         if (ͼÏñËõ·ÅϵÊý > 5) {
  1424.             Í¼ÏñËõ·ÅϵÊý = 1.0;
  1425.         } else {
  1426.             Í϶¯¾àÀëÏñËØ = Math.round(Í϶¯¾àÀëÏñËØ * ͼÏñËõ·ÅϵÊý);
  1427.             print.log("✓ ͼÏñËõ·Å²¹³¥£ºAIͼÏñ¿í¶È=" + AIͼÏñ¿í¶È + "£¬ÆÁÄ»¿í=" + ÆÁÄ»¿í);
  1428.             print.log("✓ Ëõ·ÅϵÊý=" + ͼÏñËõ·ÅϵÊý.toFixed(2) + "£¬²¹³¥ºóÍ϶¯¾àÀë=" + Í϶¯¾àÀëÏñËØ);
  1429.         }
  1430.     } else {
  1431.         Í¼ÏñËõ·ÅϵÊý = ÆÁÄ»¿í / 750;
  1432.         Í϶¯¾àÀëÏñËØ = Math.round(Í϶¯¾àÀëÏñËØ * ͼÏñËõ·ÅϵÊý);
  1433.         print.log("✓ µ¥Êý×Öģʽ²¹³¥£º¼ÙÉèAIͼÏñ¿í¶È¡Ö750£¬Ëõ·ÅϵÊý=" + ͼÏñËõ·ÅϵÊý.toFixed(2));
  1434.         print.log("✓ ²¹³¥ºóÍ϶¯¾àÀë=" + Í϶¯¾àÀëÏñËØ);
  1435.     }
  1436.    
  1437.     ÑéÖ¤Â뻬¿é¾àÀë = {
  1438.         x: Í϶¯¾àÀëÏñËØ,
  1439.         y: 0
  1440.     };

  1441.     // ²½Öè13£ºÇл»»ØBÕ¾²¢Í϶¯»¬¿é
  1442.     print.log("\n========== ²½Öè13£ºÇл»»ØBÕ¾²¢Í϶¯»¬¿é ==========");
  1443.    
  1444.     agent.shell("input keyevent 187");
  1445.     print.log("✓ ÒѰ´ºǫ́¼ü´ò¿ªÈÎÎñÁбí");
  1446.     sleep.second(Ãë = 2);
  1447.    
  1448.     xml = »ñÈ¡UI();
  1449.     var biliIdx = xml.indexOf('ßÙÁ¨ßÙÁ¨');
  1450.     if (biliIdx === -1) {
  1451.         biliIdx = xml.indexOf('bilibili');
  1452.     }
  1453.     if (biliIdx === -1) {
  1454.         biliIdx = xml.indexOf('BÕ¾');
  1455.     }
  1456.    
  1457.     if (biliIdx !== -1) {
  1458.         var ¶Î = xml.substring(biliIdx);
  1459.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  1460.         if (m) {
  1461.             var clickX = (parseInt(m[1]) + parseInt(m[3])) / 2;
  1462.             var clickY = (parseInt(m[2]) + parseInt(m[4])) / 2;
  1463.             agent.click(clickX, clickY);
  1464.             print.log("✓ Òѵã»÷BÕ¾ÈÎÎñ¿¨Æ¬£¬×ø±ê(" + Math.round(clickX) + "," + Math.round(clickY) + ")");
  1465.         }
  1466.     } else {
  1467.         print.log("⚠ δÕÒµ½BÕ¾ÈÎÎñ¿¨Æ¬£¬³¢ÊÔÖ±½Ó´ò¿ª");
  1468.         try {
  1469.             app.openApp(BÕ¾°üÃû);
  1470.             print.log("✓ ÒÑ´ò¿ªBÕ¾");
  1471.         } catch (e) {
  1472.             print.log("⚠ ´ò¿ªBվʧ°Ü£º" + e.message);
  1473.         }
  1474.     }
  1475.     sleep.second(Ãë = 3);

  1476.     xml = »ñÈ¡UI();
  1477.     var ÑéÖ¤ÂëÇøÓò×ó±ß½ç = ÆÁÄ»¿í * 0.15;
  1478.    
  1479.     var »¬¿é¹ìµÀÆ¥Åä = xml.match(/<node[^>]*?text="Í϶¯»¬¿éÍê³Éƴͼ"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  1480.     if (»¬¿é¹ìµÀÆ¥Åä) {
  1481.         ÑéÖ¤ÂëÇøÓò×ó±ß½ç = parseInt(»¬¿é¹ìµÀÆ¥Åä[1]);
  1482.     }

  1483.     var Í϶¯¾àÀë = ÑéÖ¤Â뻬¿é¾àÀë.x * »¬¿éУ׼ϵÊý;

  1484.     var startX = ÑéÖ¤ÂëÇøÓò×ó±ß½ç + 50;
  1485.     var startY = ÆÁÄ»¸ß * 0.42;
  1486.     var endX = startX + Í϶¯¾àÀë;
  1487.     var endY = startY;

  1488.     print.log("✓ ÑéÖ¤ÂëÇøÓò×ó±ß½ç: " + ÑéÖ¤ÂëÇøÓò×ó±ß½ç + ", Í϶¯¾àÀë: " + Í϶¯¾àÀë);
  1489.     agent.swip(startX, startY, endX, endY, 2000);
  1490.     print.log("✓ ÒÑÍ϶¯»¬¿é£¬Æðµã(" + Math.round(startX) + "," + Math.round(startY) + ")£¬ÖÕµã(" + Math.round(endX) + "," + Math.round(endY) + ")");
  1491. }

  1492. Ö÷Á÷³Ì();

  1493. print.log("\n===== ÎÄÐÄʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-7-17 07:56 , Processed in 0.225035 second(s), 33 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí