B2BÍøÂçÈí¼þ

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

´úÀíģʽ¼òÊé×Ô¶¯Á÷³Ì

[¸´ÖÆÁ´½Ó]

1128

Ö÷Ìâ

1133

Ìû×Ó

7789

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7789
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷

´úÀíģʽ¼òÊé×Ô¶¯Á÷³Ì


´úÀíģʽ¼òÊé×Ô¶¯Á÷³Ì B2BÍøÂçÈí¼þ

  1. // AIWROK ÍêÕû×Ô¶¯»¯Á÷³Ì£ºÆô¶¯¼òÊé ¡ú ÎÒµÄ ¡ú дÎÄÕ ¡ú ÊäÈëÄÚÈÝ ¡ú ·¢²¼
  2. // ´úÀíģʽ¼òÊé×Ô¶¯Á÷³Ì





  3. print.log("===== ¼òÊéдÎÄÕÂÁ÷³ÌÆô¶¯ =====");
  4. print.time();

  5. // ========== ¹¤¾ßº¯Êý ==========
  6. function Ö´ÐÐShell(ÃüÁî) {
  7.     var ½á¹û = agent.shell(ÃüÁî);
  8.     if (!½á¹û) return "";
  9.    
  10.     var ½á¹û×Ö·û´® = "";
  11.     if (typeof ½á¹û === "string") {
  12.         ½á¹û×Ö·û´® = ½á¹û;
  13.     } else if (½á¹û.toString) {
  14.         ½á¹û×Ö·û´® = ½á¹û.toString();
  15.     } else {
  16.         ½á¹û×Ö·û´® = "" + ½á¹û;
  17.     }
  18.    
  19.     var startIdx = -1;
  20.     if (typeof ½á¹û×Ö·û´®.indexOf === "function") {
  21.         startIdx = ½á¹û×Ö·û´®.indexOf("successMsg:");
  22.     }
  23.    
  24.     if (startIdx !== -1) {
  25.         var afterSuccess = ½á¹û×Ö·û´®.substring(startIdx + 11);
  26.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  27.         if (errorIdx !== -1) {
  28.             var content = afterSuccess.substring(0, errorIdx);
  29.             var endMarker = content.indexOf("UI hierchary dumped to:");
  30.             if (endMarker !== -1) {
  31.                 content = content.substring(0, endMarker);
  32.             }
  33.             return "" + content.trim();
  34.         }
  35.         return "" + afterSuccess.trim();
  36.     }
  37.    
  38.     return "" + ½á¹û×Ö·û´®;
  39. }

  40. function »ñÈ¡UI() {
  41.     var ÁÙʱÎļþ = "/sdcard/ui_dump.xml";
  42.     agent.shell("uiautomator dump --compressed " + ÁÙʱÎļþ + " 2>/dev/null");
  43.     var ½á¹û = agent.shell("cat " + ÁÙʱÎļþ);
  44.    
  45.     if (!½á¹û) return "";
  46.    
  47.     var ½á¹û×Ö·û´® = "";
  48.     if (typeof ½á¹û === "string") {
  49.         ½á¹û×Ö·û´® = ½á¹û;
  50.     } else if (½á¹û.toString) {
  51.         ½á¹û×Ö·û´® = ½á¹û.toString();
  52.     } else {
  53.         ½á¹û×Ö·û´® = "" + ½á¹û;
  54.     }
  55.    
  56.     var startIdx = -1;
  57.     if (typeof ½á¹û×Ö·û´®.indexOf === "function") {
  58.         startIdx = ½á¹û×Ö·û´®.indexOf("successMsg:");
  59.     }
  60.    
  61.     var content = "";
  62.     if (startIdx !== -1) {
  63.         var afterSuccess = ½á¹û×Ö·û´®.substring(startIdx + 11);
  64.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  65.         if (errorIdx !== -1) {
  66.             content = afterSuccess.substring(0, errorIdx);
  67.             var endMarker = content.indexOf("UI hierchary dumped to:");
  68.             if (endMarker !== -1) {
  69.                 content = content.substring(0, endMarker);
  70.             }
  71.         } else {
  72.             content = afterSuccess;
  73.         }
  74.         content = content.trim();
  75.     } else {
  76.         content = ½á¹û×Ö·û´®;
  77.     }
  78.    
  79.     return "" + content;
  80. }

  81. function ×Ö·û´®³¤¶È(str) {
  82.     if (typeof str.length === "function") {
  83.         return str.length();
  84.     }
  85.     return str.length || 0;
  86. }

  87. function »ñÈ¡µ±Ç°°üÃû() {
  88.     var uiXml = »ñÈ¡UI();
  89.     var m = uiXml.match(/package="([^"]+)"/);
  90.     if (m) {
  91.         return "" + m[1];
  92.     }
  93.     return "";
  94. }

  95. function ²éÕÒ°üº¬ÎÄ×ֵĽڵã(xml, ¹Ø¼ü´Ê) {
  96.     var ½ÚµãÁбí = [];
  97.     for (var i = 0; i < ¹Ø¼ü´Ê.length; i++) {
  98.         var ´Ê = ¹Ø¼ü´Ê[i];
  99.         var pos = 0;
  100.         while (true) {
  101.             pos = xml.indexOf('text="' + ´Ê + '"', pos);
  102.             if (pos < 0) break;
  103.             var boundsStart = xml.indexOf('bounds="', pos);
  104.             if (boundsStart >= 0) {
  105.                 var boundsEnd = xml.indexOf('"', boundsStart + 8);
  106.                 if (boundsEnd >= 0) {
  107.                     var boundsStr = xml.substring(boundsStart + 8, boundsEnd);
  108.                     var m = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
  109.                     if (m) {
  110.                         var node = {
  111.                             text: ´Ê,
  112.                             x1: parseInt(m[1]),
  113.                             y1: parseInt(m[2]),
  114.                             x2: parseInt(m[3]),
  115.                             y2: parseInt(m[4]),
  116.                             cx: (parseInt(m[1]) + parseInt(m[3])) / 2,
  117.                             cy: (parseInt(m[2]) + parseInt(m[4])) / 2
  118.                         };
  119.                         ½ÚµãÁбí.push(node);
  120.                     }
  121.                 }
  122.             }
  123.             pos += ×Ö·û´®³¤¶È(´Ê);
  124.         }
  125.     }
  126.     return ½ÚµãÁбí;
  127. }

  128. function ²éÕÒ°üº¬×ÊÔ´IDµÄ½Úµã(xml, ×ÊÔ´ID¹Ø¼ü´Ê) {
  129.     var ½ÚµãÁбí = [];
  130.     for (var i = 0; i < ×ÊÔ´ID¹Ø¼ü´Ê.length; i++) {
  131.         var ¹Ø¼ü´Ê = ×ÊÔ´ID¹Ø¼ü´Ê[i];
  132.         var pos = 0;
  133.         while (true) {
  134.             pos = xml.indexOf('resource-id="', pos);
  135.             if (pos < 0) break;
  136.             var idEnd = xml.indexOf('"', pos + 13);
  137.             if (idEnd >= 0) {
  138.                 var resourceId = xml.substring(pos + 13, idEnd);
  139.                 if (resourceId.indexOf(¹Ø¼ü´Ê) !== -1) {
  140.                     var boundsStart = xml.indexOf('bounds="', pos);
  141.                     if (boundsStart >= 0) {
  142.                         var boundsEnd = xml.indexOf('"', boundsStart + 8);
  143.                         if (boundsEnd >= 0) {
  144.                             var boundsStr = xml.substring(boundsStart + 8, boundsEnd);
  145.                             var m = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
  146.                             if (m) {
  147.                                 var node = {
  148.                                     resourceId: resourceId,
  149.                                     x1: parseInt(m[1]),
  150.                                     y1: parseInt(m[2]),
  151.                                     x2: parseInt(m[3]),
  152.                                     y2: parseInt(m[4]),
  153.                                     cx: (parseInt(m[1]) + parseInt(m[3])) / 2,
  154.                                     cy: (parseInt(m[2]) + parseInt(m[4])) / 2
  155.                                 };
  156.                                 ½ÚµãÁбí.push(node);
  157.                             }
  158.                         }
  159.                     }
  160.                 }
  161.             }
  162.             pos = idEnd + 1;
  163.         }
  164.     }
  165.     return ½ÚµãÁбí;
  166. }

  167. function ÊäÈëÎı¾(Îı¾, µã»÷X, µã»÷Y) {
  168.     if (!µã»÷X) µã»÷X = 0.2;
  169.     if (!µã»÷Y) µã»÷Y = 0.2;
  170.    
  171.     agent.clickPercent(µã»÷X, µã»÷Y);
  172.     sleep.millisecond(ºÁÃë = 500);
  173.    
  174.     agent.shell("service call clipboard 4 i32 1 s16 '" + Îı¾ + "' i32 0");
  175.     sleep.millisecond(ºÁÃë = 300);
  176.     agent.shell("service call clipboard 3 i32 1 s16 '" + Îı¾ + "' i32 0");
  177.     sleep.millisecond(ºÁÃë = 300);
  178.    
  179.     try {
  180.         Clipboard.copy(Îı¾);
  181.         sleep.millisecond(ºÁÃë = 300);
  182.     } catch (e) {}
  183.    
  184.     print.log("✓ ¼ôÌù°åÒÑÉèÖÃÄÚÈÝ");
  185.    
  186.     agent.shell("input keyevent 279");
  187.     sleep.second(Ãë = 1);
  188. }

  189. function ²éÕÒWebView½Úµã(xml) {
  190.     var ½ÚµãÁбí = [];
  191.     var pos = 0;
  192.     while (true) {
  193.         pos = xml.indexOf('class="android.webkit.WebView"', pos);
  194.         if (pos < 0) break;
  195.         var boundsStart = xml.indexOf('bounds="', pos);
  196.         if (boundsStart >= 0) {
  197.             var boundsEnd = xml.indexOf('"', boundsStart + 8);
  198.             if (boundsEnd >= 0) {
  199.                 var boundsStr = xml.substring(boundsStart + 8, boundsEnd);
  200.                 var m = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
  201.                 if (m) {
  202.                     var node = {
  203.                         x1: parseInt(m[1]),
  204.                         y1: parseInt(m[2]),
  205.                         x2: parseInt(m[3]),
  206.                         y2: parseInt(m[4]),
  207.                         cx: (parseInt(m[1]) + parseInt(m[3])) / 2,
  208.                         cy: (parseInt(m[2]) + parseInt(m[4])) / 2
  209.                     };
  210.                     ½ÚµãÁбí.push(node);
  211.                 }
  212.             }
  213.         }
  214.         pos += 25;
  215.     }
  216.     return ½ÚµãÁбí;
  217. }

  218. // ========== ÅäÖÃÇø ==========
  219. var APP°üÃû = "com.jianshu.haruki";

  220. var Ñ­»·´ÎÊý = 3;
  221. var µ±Ç°Ñ­»· = 0;

  222. var ÎÄÕ±êÌâ = "AI¼¼Êõ·¢Õ¹Ç÷ÊÆ";
  223. var ÎÄÕÂÕýÎÄ = "È˹¤ÖÇÄܼ¼ÊõÕýÔÚ·ÉËÙ·¢Õ¹£¬¸Ä±ä×ÅÎÒÃÇÉú»îµÄ·½·½ÃæÃæ¡£´Ó»úÆ÷ѧϰµ½Éî¶Èѧϰ£¬´Ó×ÔÈ»ÓïÑÔ´¦Àíµ½¼ÆËã»úÊÓ¾õ£¬AIµÄÓ¦Óó¡¾°Ô½À´Ô½¹ã·º¡£Î´À´£¬AI½«ÔÚ¸ü¶àÁìÓò·¢»ÓÖØÒª×÷Óã¬Íƶ¯Éç»á½ø²½ºÍ´´Ð·¢Õ¹¡£";

  224. // ========== »ñÈ¡É豸ÐÅÏ¢ (agentģʽ) ==========
  225. var wm½á¹û = Ö´ÐÐShell("wm size");
  226. var m = wm½á¹û.match(/(\d+)x(\d+)/);
  227. var ÆÁÄ»¿í = m ? parseInt(m[1]) : 1080;
  228. var ÆÁÄ»¸ß = m ? parseInt(m[2]) : 2400;
  229. print.log("ÆÁÄ»³ß´ç£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);
  230. print.log("´úÀí״̬£º" + (agent.isOpen() ? "ÒÑ¿ªÆô" : "먦Æô"));
  231. print.log("Ä¿±êAPP£º" + APP°üÃû + " (¼òÊé)");

  232. // ========================================
  233. // Ö÷Ñ­»·¿ªÊ¼
  234. // ========================================
  235. for (µ±Ç°Ñ­»· = 1; µ±Ç°Ñ­»· <= Ñ­»·´ÎÊý; µ±Ç°Ñ­»·++) {
  236.     print.log("\n======================================");
  237.     print.log("===== µÚ " + µ±Ç°Ñ­»· + " / " + Ñ­»·´ÎÊý + " ´ÎÑ­»· =====");
  238.     print.log("======================================");

  239. // ========================================
  240. // ²½Öè1£ºÆô¶¯¼òÊéAPP
  241. // ========================================
  242. print.log("\n========== ²½Öè1£ºÆô¶¯¼òÊéAPP ==========");

  243. var Æô¶¯³É¹¦ = false;
  244. var Æô¶¯³¢ÊÔ´ÎÊý = 0;
  245. var ×î´óÆô¶¯³¢ÊÔ = 3;

  246. while (!Æô¶¯³É¹¦ && Æô¶¯³¢ÊÔ´ÎÊý < ×î´óÆô¶¯³¢ÊÔ) {
  247.     Æô¶¯³¢ÊÔ´ÎÊý++;
  248.     try {
  249.         agent.shell("monkey -p " + APP°üÃû + " -c android.intent.category.LAUNCHER 1");
  250.         print.log("✓ µÚ" + Æô¶¯³¢ÊÔ´ÎÊý + "´Î³¢ÊÔÆô¶¯¼òÊé");
  251.     } catch (e) {
  252.         print.log("⚠ µÚ" + Æô¶¯³¢ÊÔ´ÎÊý + "´ÎÆô¶¯Ê§°Ü£º" + e.message);
  253.     }
  254.    
  255.     sleep.second(Ãë = 5);
  256.    
  257.     var µ±Ç°Ò³Ãæ°üÃû = »ñÈ¡µ±Ç°°üÃû();
  258.     print.log("µ±Ç°Ò³Ãæ°üÃû£º" + µ±Ç°Ò³Ãæ°üÃû);
  259.    
  260.     if (µ±Ç°Ò³Ãæ°üÃû === APP°üÃû) {
  261.         Æô¶¯³É¹¦ = true;
  262.         print.log("✓ APPÆô¶¯³É¹¦");
  263.     } else {
  264.         print.log("⚠ µ±Ç°Ò³Ãæ²»ÊǼòÊ飬׼±¸ÖØÐÂÆô¶¯");
  265.     }
  266. }

  267. if (!Æô¶¯³É¹¦) {
  268.     print.log("✗ ¶à´Î³¢ÊÔÆô¶¯Ê§°Ü£¬Ìø¹ý±¾´ÎÑ­»·");
  269.     continue;
  270. }

  271. // ========================================
  272. // ²½Öè2£ºÉèÖÃADBÊäÈë·¨£¨Ö§³ÖÖÐÎÄÊäÈ룩
  273. // ========================================
  274. print.log("\n========== ²½Öè2£ºÉèÖÃADBÊäÈë·¨ ==========");

  275. try {
  276.     var µ±Ç°ÊäÈë·¨ = Ö´ÐÐShell("settings get secure default_input_method");
  277.     print.log("µ±Ç°Ä¬ÈÏÊäÈë·¨£º" + µ±Ç°ÊäÈë·¨);
  278.    
  279.     var adbKeyboard = "com.android.adbkeyboard/.AdbIME";
  280.     if (µ±Ç°ÊäÈë·¨.indexOf("adbkeyboard") === -1) {
  281.         print.log("µ±Ç°²»ÊÇADBÊäÈë·¨£¬³¢ÊÔÇл»");
  282.         agent.shell("ime enable " + adbKeyboard);
  283.         sleep.millisecond(ºÁÃë = 300);
  284.         agent.shell("ime set " + adbKeyboard);
  285.         sleep.millisecond(ºÁÃë = 500);
  286.         print.log("✓ ÒÑÇл»µ½ADBÊäÈë·¨");
  287.     } else {
  288.         print.log("✓ µ±Ç°ÒÑÊÇADBÊäÈë·¨");
  289.     }
  290. } catch (e) {
  291.     print.log("⚠ ÉèÖÃADBÊäÈ뷨ʧ°Ü£º" + e.message);
  292.     print.log("Ìáʾ£ºÇëÊÖ¶¯°²×°ADB Keyboard²¢ÉèÖÃΪĬÈÏÊäÈë·¨");
  293. }

  294. // ========================================
  295. // ²½Öè3£º²éÕÒ²¢µã»÷дÎÄÕ°´Å¥£¨Ðü¸¡Ç¦±Ê°´Å¥£©
  296. // ========================================
  297. print.log("\n========== ²½Öè3£º²éÕÒдÎÄÕ°´Å¥£¨Ðü¸¡Ç¦±Ê°´Å¥£©==========");

  298. function ²éÕÒÐü¸¡°´Å¥(xml) {
  299.     var ½ÚµãÁбí = [];
  300.    
  301.     var fabClasses = [
  302.         'class="android.support.design.widget.FloatingActionButton"',
  303.         'class="com.google.android.material.floatingactionbutton.FloatingActionButton"',
  304.         'class="android.widget.ImageView"'
  305.     ];
  306.    
  307.     for (var c = 0; c < fabClasses.length; c++) {
  308.         var pos = 0;
  309.         while (true) {
  310.             pos = xml.indexOf(fabClasses[c], pos);
  311.             if (pos < 0) break;
  312.             var boundsStart = xml.indexOf('bounds="', pos);
  313.             if (boundsStart >= 0) {
  314.                 var boundsEnd = xml.indexOf('"', boundsStart + 8);
  315.                 if (boundsEnd >= 0) {
  316.                     var boundsStr = xml.substring(boundsStart + 8, boundsEnd);
  317.                     var m = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
  318.                     if (m) {
  319.                         var x1 = parseInt(m[1]);
  320.                         var y1 = parseInt(m[2]);
  321.                         var x2 = parseInt(m[3]);
  322.                         var y2 = parseInt(m[4]);
  323.                         var cx = (x1 + x2) / 2;
  324.                         var cy = (y1 + y2) / 2;
  325.                         var width = x2 - x1;
  326.                         var height = y2 - y1;
  327.                         if (cx > ÆÁÄ»¿í * 0.6 && cy > ÆÁÄ»¸ß * 0.75 && width > 50 && height > 50) {
  328.                             var node = {
  329.                                 x1: x1,
  330.                                 y1: y1,
  331.                                 x2: x2,
  332.                                 y2: y2,
  333.                                 cx: cx,
  334.                                 cy: cy
  335.                             };
  336.                             ½ÚµãÁбí.push(node);
  337.                         }
  338.                     }
  339.                 }
  340.             }
  341.             pos += fabClasses[c].length;
  342.         }
  343.     }
  344.    
  345.     return ½ÚµãÁбí;
  346. }

  347. var ÕÒµ½Ð´ÎÄÕ°´Å¥ = false;
  348. var ³¢ÊÔ´ÎÊý3 = 0;
  349. var ×î´ó³¢ÊÔ´ÎÊý3 = 3;

  350. while (!ÕÒµ½Ð´ÎÄÕ°´Å¥ && ³¢ÊÔ´ÎÊý3 < ×î´ó³¢ÊÔ´ÎÊý3) {
  351.     ³¢ÊÔ´ÎÊý3++;
  352.     var Ê×Ò³UI = »ñÈ¡UI();
  353.     var xml³¤¶È3 = ×Ö·û´®³¤¶È(Ê×Ò³UI);
  354.    
  355.     print.log("µÚ " + ³¢ÊÔ´ÎÊý3 + " ´Î³¢ÊÔ»ñÈ¡Ê×Ò³UI£¬³¤¶È£º" + xml³¤¶È3);
  356.    
  357.     if (xml³¤¶È3 < 100) {
  358.         print.log("UIÊý¾Ý¹ý¶Ì£¬ÖØÊÔ");
  359.         sleep.second(Ãë = 1);
  360.         continue;
  361.     }
  362.    
  363.     var Ðü¸¡°´Å¥Áбí = ²éÕÒÐü¸¡°´Å¥(Ê×Ò³UI);
  364.    
  365.     if (Ðü¸¡°´Å¥Áбí.length > 0) {
  366.         var дÎÄÕ°´Å¥ = Ðü¸¡°´Å¥Áбí[0];
  367.         var дÎÄÕÂX = дÎÄÕ°´Å¥.cx / ÆÁÄ»¿í;
  368.         var дÎÄÕÂY = дÎÄÕ°´Å¥.cy / ÆÁÄ»¸ß;
  369.         agent.clickPercent(дÎÄÕÂX, дÎÄÕÂY);
  370.         print.log("✓ Òѵã»÷Ðü¸¡Ç¦±Ê°´Å¥£¬°Ù·Ö±È×ø±ê£º(" + дÎÄÕÂX.toFixed(4) + ", " + дÎÄÕÂY.toFixed(4) + ")");
  371.         ÕÒµ½Ð´ÎÄÕ°´Å¥ = true;
  372.     } else {
  373.         var ±à¼­×ÊÔ´ID½Úµã = ²éÕÒ°üº¬×ÊÔ´IDµÄ½Úµã(Ê×Ò³UI, ["write", "create", "edit", "publish", "fab"]);
  374.         
  375.         if (±à¼­×ÊÔ´ID½Úµã.length > 0) {
  376.             var ±à¼­°´Å¥ = ±à¼­×ÊÔ´ID½Úµã[0];
  377.             var ±à¼­X = (±à¼­°´Å¥.x1 + ±à¼­°´Å¥.x2) / 2 / ÆÁÄ»¿í;
  378.             var ±à¼­Y = (±à¼­°´Å¥.y1 + ±à¼­°´Å¥.y2) / 2 / ÆÁÄ»¸ß;
  379.             agent.clickPercent(±à¼­X, ±à¼­Y);
  380.             print.log("✓ Òѵã»÷дÎÄÕ°´Å¥£¨Í¨¹ý×ÊÔ´ID£©£¬°Ù·Ö±È×ø±ê£º(" + ±à¼­X.toFixed(4) + ", " + ±à¼­Y.toFixed(4) + ")");
  381.             ÕÒµ½Ð´ÎÄÕ°´Å¥ = true;
  382.         } else {
  383.             var дÎÄÕ½ڵã = ²éÕÒ°üº¬ÎÄ×ֵĽڵã(Ê×Ò³UI, ["дÎÄÕÂ", "´´×÷", "±à¼­", "д", "·¢²¼"]);
  384.             
  385.             if (дÎÄÕ½ڵã.length > 0) {
  386.                 var дÎÄÕ°´Å¥ = дÎÄÕ½ڵã[0];
  387.                 var дÎÄÕÂX = (дÎÄÕ°´Å¥.x1 + дÎÄÕ°´Å¥.x2) / 2 / ÆÁÄ»¿í;
  388.                 var дÎÄÕÂY = (дÎÄÕ°´Å¥.y1 + дÎÄÕ°´Å¥.y2) / 2 / ÆÁÄ»¸ß;
  389.                 agent.clickPercent(дÎÄÕÂX, дÎÄÕÂY);
  390.                 print.log("✓ Òѵã»÷¡¸" + дÎÄÕ°´Å¥.text + "¡¹£¬°Ù·Ö±È×ø±ê£º(" + дÎÄÕÂX.toFixed(4) + ", " + дÎÄÕÂY.toFixed(4) + ")");
  391.                 ÕÒµ½Ð´ÎÄÕ°´Å¥ = true;
  392.             } else {
  393.                 print.log("✓ ʹÓÃĬÈÏ×ø±êµã»÷ÓÒϽÇÐü¸¡°´Å¥");
  394.                 agent.clickPercent(0.875, 0.91);
  395.                 ÕÒµ½Ð´ÎÄÕ°´Å¥ = true;
  396.             }
  397.         }
  398.     }
  399. }

  400. if (!ÕÒµ½Ð´ÎÄÕ°´Å¥) {
  401.     print.log("✗ ¶à´Î³¢ÊÔδÕÒµ½Ð´ÎÄÕ°´Å¥£¬Ìø¹ý±¾´ÎÑ­»·");
  402.     continue;
  403. }

  404. sleep.second(Ãë = 3);

  405. // ========================================
  406. // ²½Öè4£ºÊäÈëÎÄÕ±êÌ⣨WebView±à¼­Æ÷£©
  407. // ========================================
  408. print.log("\n========== ²½Öè4£ºÊäÈëÎÄÕ±êÌâ ==========");

  409. var ±êÌâÊäÈë³É¹¦ = false;
  410. var ³¢ÊÔ´ÎÊý4 = 0;
  411. var ×î´ó³¢ÊÔ´ÎÊý4 = 3;

  412. while (!±êÌâÊäÈë³É¹¦ && ³¢ÊÔ´ÎÊý4 < ×î´ó³¢ÊÔ´ÎÊý4) {
  413.     ³¢ÊÔ´ÎÊý4++;
  414.     var ±à¼­Ò³ÃæUI = »ñÈ¡UI();
  415.     var xml³¤¶È4 = ×Ö·û´®³¤¶È(±à¼­Ò³ÃæUI);
  416.    
  417.     print.log("µÚ " + ³¢ÊÔ´ÎÊý4 + " ´Î³¢ÊÔ»ñÈ¡±à¼­Ò³ÃæUI£¬³¤¶È£º" + xml³¤¶È4);
  418.    
  419.     if (xml³¤¶È4 < 100) {
  420.         print.log("UIÊý¾Ý¹ý¶Ì£¬ÖØÊÔ");
  421.         sleep.second(Ãë = 1);
  422.         continue;
  423.     }
  424.    
  425.     var webView½Úµã = ²éÕÒWebView½Úµã(±à¼­Ò³ÃæUI);
  426.    
  427.     if (webView½Úµã.length > 0) {
  428.         var webView = webView½Úµã[0];
  429.         var µã»÷X = (webView.x1 + webView.x2) / 2 / ÆÁÄ»¿í;
  430.         var µã»÷Y = (webView.y1 + 200) / ÆÁÄ»¸ß;
  431.         print.log("✓ ×¼±¸ÔÚWebView±à¼­ÇøÓòÊäÈë±êÌ⣬°Ù·Ö±È×ø±ê£º(" + µã»÷X.toFixed(4) + ", " + µã»÷Y.toFixed(4) + ")");
  432.         
  433.         ÊäÈëÎı¾(ÎÄÕ±êÌâ, µã»÷X, µã»÷Y);
  434.         sleep.millisecond(ºÁÃë = 500);
  435.         agent.shell("input keyevent 66");
  436.         sleep.millisecond(ºÁÃë = 300);
  437.         print.log("✓ ±êÌâÊäÈëÍê³É");
  438.         ±êÌâÊäÈë³É¹¦ = true;
  439.     } else {
  440.         print.log("⚠ δÕÒµ½WebView½Úµã£¬Ö±½Óµã»÷±à¼­ÇøÓò");
  441.         ÊäÈëÎı¾(ÎÄÕ±êÌâ, 0.2, 0.6);
  442.         sleep.millisecond(ºÁÃë = 500);
  443.         agent.shell("input keyevent 66");
  444.         sleep.millisecond(ºÁÃë = 300);
  445.         print.log("✓ ±êÌâÊäÈëÍê³É");
  446.         ±êÌâÊäÈë³É¹¦ = true;
  447.     }
  448. }
  449. sleep.second(Ãë = 2);

  450. // ========================================
  451. // ²½Öè5£ºÊäÈëÎÄÕÂÕýÎÄ£¨WebView±à¼­Æ÷£©
  452. // ========================================
  453. print.log("\n========== ²½Öè5£ºÊäÈëÎÄÕÂÕýÎÄ ==========");

  454. var ÕýÎÄÊäÈë³É¹¦ = false;
  455. var ³¢ÊÔ´ÎÊý5 = 0;
  456. var ×î´ó³¢ÊÔ´ÎÊý5 = 3;

  457. while (!ÕýÎÄÊäÈë³É¹¦ && ³¢ÊÔ´ÎÊý5 < ×î´ó³¢ÊÔ´ÎÊý5) {
  458.     ³¢ÊÔ´ÎÊý5++;
  459.     var ±à¼­Ò³ÃæUI2 = »ñÈ¡UI();
  460.     var xml³¤¶È5 = ×Ö·û´®³¤¶È(±à¼­Ò³ÃæUI2);
  461.    
  462.     print.log("µÚ " + ³¢ÊÔ´ÎÊý5 + " ´Î³¢ÊÔ»ñÈ¡±à¼­Ò³ÃæUI£¬³¤¶È£º" + xml³¤¶È5);
  463.    
  464.     if (xml³¤¶È5 < 100) {
  465.         print.log("UIÊý¾Ý¹ý¶Ì£¬ÖØÊÔ");
  466.         sleep.second(Ãë = 1);
  467.         continue;
  468.     }
  469.    
  470.     var webView½Úµã2 = ²éÕÒWebView½Úµã(±à¼­Ò³ÃæUI2);
  471.    
  472.     if (webView½Úµã2.length > 0) {
  473.         var webView2 = webView½Úµã2[0];
  474.         var µã»÷X2 = (webView2.x1 + webView2.x2) / 2 / ÆÁÄ»¿í;
  475.         var µã»÷Y2 = (webView2.y1 + webView2.y2) / 2 / ÆÁÄ»¸ß;
  476.         print.log("✓ ×¼±¸ÔÚWebViewÕýÎÄÇøÓòÊäÈ룬°Ù·Ö±È×ø±ê£º(" + µã»÷X2.toFixed(4) + ", " + µã»÷Y2.toFixed(4) + ")");
  477.         
  478.         ÊäÈëÎı¾(ÎÄÕÂÕýÎÄ, µã»÷X2, µã»÷Y2);
  479.         sleep.millisecond(ºÁÃë = 500);
  480.         print.log("✓ ÕýÎÄÊäÈëÍê³É");
  481.         ÕýÎÄÊäÈë³É¹¦ = true;
  482.     } else {
  483.         print.log("⚠ δÕÒµ½WebView½Úµã£¬³¢ÊÔµã»÷Ò³ÃæÖмäÇøÓò");
  484.         ÊäÈëÎı¾(ÎÄÕÂÕýÎÄ, 0.3, 0.4);
  485.         sleep.millisecond(ºÁÃë = 500);
  486.         print.log("✓ ÕýÎÄÊäÈëÍê³É");
  487.         ÕýÎÄÊäÈë³É¹¦ = true;
  488.     }
  489. }
  490. sleep.second(Ãë = 2);

  491. // ========================================
  492. // ²½Öè6£ºµã»÷·¢²¼°´Å¥
  493. // ========================================
  494. print.log("\n========== ²½Öè6£ºµã»÷·¢²¼°´Å¥ ==========");

  495. var ÕÒµ½·¢²¼°´Å¥ = false;
  496. var ³¢ÊÔ´ÎÊý6 = 0;
  497. var ×î´ó³¢ÊÔ´ÎÊý6 = 3;

  498. while (!ÕÒµ½·¢²¼°´Å¥ && ³¢ÊÔ´ÎÊý6 < ×î´ó³¢ÊÔ´ÎÊý6) {
  499.     ³¢ÊÔ´ÎÊý6++;
  500.     var ±à¼­Ò³ÃæUI3 = »ñÈ¡UI();
  501.     var xml³¤¶È6 = ×Ö·û´®³¤¶È(±à¼­Ò³ÃæUI3);
  502.    
  503.     print.log("µÚ " + ³¢ÊÔ´ÎÊý6 + " ´Î³¢ÊÔ»ñÈ¡±à¼­Ò³ÃæUI£¬³¤¶È£º" + xml³¤¶È6);
  504.    
  505.     if (xml³¤¶È6 < 100) {
  506.         print.log("UIÊý¾Ý¹ý¶Ì£¬ÖØÊÔ");
  507.         sleep.second(Ãë = 1);
  508.         continue;
  509.     }
  510.    
  511.     var ·¢²¼½Úµã = ²éÕÒ°üº¬ÎÄ×ֵĽڵã(±à¼­Ò³ÃæUI3, ["·¢²¼", "·¢²¼ÎÄÕÂ", "±£´æ", "Íê³É"]);
  512.    
  513.     if (·¢²¼½Úµã.length > 0) {
  514.         var ·¢²¼°´Å¥ = ·¢²¼½Úµã[0];
  515.         var ·¢²¼X = (·¢²¼°´Å¥.x1 + ·¢²¼°´Å¥.x2) / 2 / ÆÁÄ»¿í;
  516.         var ·¢²¼Y = (·¢²¼°´Å¥.y1 + ·¢²¼°´Å¥.y2) / 2 / ÆÁÄ»¸ß;
  517.         agent.clickPercent(·¢²¼X, ·¢²¼Y);
  518.         print.log("✓ Òѵã»÷¡¸" + ·¢²¼°´Å¥.text + "¡¹£¬°Ù·Ö±È×ø±ê£º(" + ·¢²¼X.toFixed(4) + ", " + ·¢²¼Y.toFixed(4) + ")");
  519.         ÕÒµ½·¢²¼°´Å¥ = true;
  520.     } else {
  521.         var ·¢²¼×ÊÔ´ID½Úµã = ²éÕÒ°üº¬×ÊÔ´IDµÄ½Úµã(±à¼­Ò³ÃæUI3, ["publish", "save", "done", "submit"]);
  522.         
  523.         if (·¢²¼×ÊÔ´ID½Úµã.length > 0) {
  524.             var ·¢²¼°´Å¥ = ·¢²¼×ÊÔ´ID½Úµã[0];
  525.             var ·¢²¼X = (·¢²¼°´Å¥.x1 + ·¢²¼°´Å¥.x2) / 2 / ÆÁÄ»¿í;
  526.             var ·¢²¼Y = (·¢²¼°´Å¥.y1 + ·¢²¼°´Å¥.y2) / 2 / ÆÁÄ»¸ß;
  527.             agent.clickPercent(·¢²¼X, ·¢²¼Y);
  528.             print.log("✓ Òѵã»÷·¢²¼°´Å¥£¨Í¨¹ý×ÊÔ´ID£©£¬°Ù·Ö±È×ø±ê£º(" + ·¢²¼X.toFixed(4) + ", " + ·¢²¼Y.toFixed(4) + ")");
  529.             ÕÒµ½·¢²¼°´Å¥ = true;
  530.         } else {
  531.             print.log("⚠ δÕÒµ½·¢²¼°´Å¥£¬³¢ÊÔµã»÷ÓÒÉϽÇ");
  532.             agent.clickPercent(0.9, 0.07);
  533.             print.log("✓ ʹÓÃĬÈÏ×ø±êµã»÷ÓÒÉϽÇ");
  534.             ÕÒµ½·¢²¼°´Å¥ = true;
  535.         }
  536.     }
  537. }

  538. if (!ÕÒµ½·¢²¼°´Å¥) {
  539.     print.log("✗ ¶à´Î³¢ÊÔδÕÒµ½·¢²¼°´Å¥");
  540. }

  541. sleep.second(Ãë = 3);

  542. // ========================================
  543. // ²½Öè7£º¹Ø±ÕAPP
  544. // ========================================
  545. print.log("\n========== ²½Öè7£º¹Ø±ÕAPP ==========");
  546. try {
  547.     agent.shell("am force-stop " + APP°üÃû);
  548.     print.log("✓ ÒѹرռòÊé");
  549. } catch (e) {
  550.     print.log("⚠ ¹Ø±ÕAPPʧ°Ü£º" + e.message);
  551. }
  552. sleep.second(Ãë = 10);

  553.     if (µ±Ç°Ñ­»· < Ñ­»·´ÎÊý) {
  554.         print.log("\n========== µÈ´ýÏÂÒ»´ÎÑ­»· ==========");
  555.         sleep.second(Ãë = 10);
  556.     }
  557. }

  558. // ========================================
  559. // ½á¹û»ã×Ü
  560. // ========================================
  561. print.timeEnd();
  562. print.log("\n======================================");
  563. print.log("===== ¼òÊéдÎÄÕÂÁ÷³ÌÖ´ÐÐÍê³É =====");
  564. print.log("ÎÄÕ±êÌ⣺" + ÎÄÕ±êÌâ);
  565. print.log("ÎÄÕÂÕýÎij¤¶È£º" + ÎÄÕÂÕýÎÄ.length + " ×Ö");
  566. print.log("======================================");
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

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

¹Ø±Õ

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

map2

GMT+8, 2026-7-8 13:24 , Processed in 5.370509 second(s), 35 queries .

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