B2BÍøÂçÈí¼þ

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

agent´úÀíģʽ¹¦ÄÜС½á

[¸´ÖÆÁ´½Ó]

1126

Ö÷Ìâ

1131

Ìû×Ó

7781

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7781
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
agent´úÀíģʽ¹¦ÄÜС½á


agent´úÀíģʽ¹¦ÄÜС½á B2BÍøÂçÈí¼þ
  1. // AIWROK agent ´úÀí API ÍêÕûʾÀý
  2. // չʾ³£ÓõĴúÀí²Ù×÷

  3. print.log("===== agent ´úÀí API ʾÀý =====");

  4. // ========== 1. ¾ø¶Ô×ø±êµã»÷ agent.click(x, y) ==========
  5. print.log("\n--- 1. ¾ø¶Ô×ø±êµã»÷ agent.click(x, y) ---");
  6. print.log("˵Ã÷£ºÊ¹ÓÃÆÁÄ»¾ø¶ÔÏñËØ×ø±ê½øÐеã»÷");
  7. print.log("ÊÊÓãºÒÑÖª¾«È·×ø±êµÄ³¡¾°");

  8. var ÆÁÄ»¿í = screen.getScreenWidth();
  9. var ÆÁÄ»¸ß = screen.getScreenHeight();
  10. print.log("µ±Ç°ÆÁÄ»£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);

  11. agent.click(100, 100);
  12. print.log("✓ Òѵã»÷×ø±ê (100, 100)");

  13. var ÖÐÐÄX = Math.floor(ÆÁÄ»¿í / 2);
  14. var ÖÐÐÄY = Math.floor(ÆÁÄ»¸ß / 2);
  15. agent.click(ÖÐÐÄX, ÖÐÐÄY);
  16. print.log("✓ Òѵã»÷ÆÁÄ»ÖÐÐÄ (" + ÖÐÐÄX + ", " + ÖÐÐÄY + ")");

  17. // ========== 2. °Ù·Ö±È×ø±êµã»÷ agent.clickPercent(px, py) ==========
  18. print.log("\n--- 2. °Ù·Ö±È×ø±êµã»÷ agent.clickPercent(px, py) ---");
  19. print.log("˵Ã÷£ºÊ¹ÓðٷֱÈ×ø±ê£¨0.0-1.0£©£¬×Ô¶¯ÊÊÅ䲻ͬÆÁÄ»");
  20. print.log("ÊÊÓãºÐèÒªÔÚ²»Í¬·Ö±æÂÊÉ豸ÉÏÔËÐеĽű¾");

  21. agent.clickPercent(0.5, 0.5);
  22. print.log("✓ Òѵã»÷ÆÁÄ»ÖÐÐÄ (50%, 50%)");

  23. agent.clickPercent(0.9, 0.9);
  24. print.log("✓ Òѵã»÷ÆÁÄ»ÓÒÏÂÇøÓò (90%, 90%)");

  25. agent.clickPercent(0.5, 0.1);
  26. print.log("✓ Òѵã»÷ÆÁÄ»¶¥²¿Öмä (50%, 10%)");

  27. // ========== 3. ²éÕÒÎÄ×Ö²¢µã»÷ ==========
  28. print.log("\n--- 3. ²éÕÒÎÄ×Ö²¢µã»÷ ---");
  29. print.log("˵Ã÷£ºÍ¨¹ý agent.shell() Ö´ÐÐ uiautomator dump »ñÈ¡ UI XML");
  30. print.log("×¢Ò⣺agent.getXml() ·µ»Ø¶ÔÏó¶ø·Ç×Ö·û´®£¬»ñÈ¡UI() ·µ»Ø×Ö·û´®");

  31. function Ö´ÐÐShell(ÃüÁî) {
  32.     var ½á¹û = agent.shell(ÃüÁî);
  33.     if (!½á¹û) return "";
  34.    
  35.     var ½á¹û×Ö·û´® = "";
  36.     if (typeof ½á¹û === "string") {
  37.         ½á¹û×Ö·û´® = ½á¹û;
  38.     } else if (½á¹û.toString) {
  39.         ½á¹û×Ö·û´® = ½á¹û.toString();
  40.     } else {
  41.         ½á¹û×Ö·û´® = "" + ½á¹û;
  42.     }
  43.    
  44.     var startIdx = -1;
  45.     if (typeof ½á¹û×Ö·û´®.indexOf === "function") {
  46.         startIdx = ½á¹û×Ö·û´®.indexOf("successMsg:");
  47.     }
  48.    
  49.     if (startIdx !== -1) {
  50.         var afterSuccess = ½á¹û×Ö·û´®.substring(startIdx + 11);
  51.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  52.         if (errorIdx !== -1) {
  53.             var content = afterSuccess.substring(0, errorIdx);
  54.             var endMarker = content.indexOf("UI hierchary dumped to:");
  55.             if (endMarker !== -1) {
  56.                 content = content.substring(0, endMarker);
  57.             }
  58.             return "" + content.trim();
  59.         }
  60.         return "" + afterSuccess.trim();
  61.     }
  62.    
  63.     return "" + ½á¹û×Ö·û´®;
  64. }

  65. function »ñÈ¡UI() {
  66.     var ÁÙʱÎļþ = "/sdcard/ui_dump.xml";
  67.     agent.shell("uiautomator dump --compressed " + ÁÙʱÎļþ + " 2>/dev/null");
  68.     var ½á¹û = agent.shell("cat " + ÁÙʱÎļþ);
  69.    
  70.     if (!½á¹û) return "";
  71.    
  72.     var ½á¹û×Ö·û´® = "";
  73.     if (typeof ½á¹û === "string") {
  74.         ½á¹û×Ö·û´® = ½á¹û;
  75.     } else if (½á¹û.toString) {
  76.         ½á¹û×Ö·û´® = ½á¹û.toString();
  77.     } else {
  78.         ½á¹û×Ö·û´® = "" + ½á¹û;
  79.     }
  80.    
  81.     var startIdx = -1;
  82.     if (typeof ½á¹û×Ö·û´®.indexOf === "function") {
  83.         startIdx = ½á¹û×Ö·û´®.indexOf("successMsg:");
  84.     }
  85.    
  86.     var content = "";
  87.     if (startIdx !== -1) {
  88.         var afterSuccess = ½á¹û×Ö·û´®.substring(startIdx + 11);
  89.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  90.         if (errorIdx !== -1) {
  91.             content = afterSuccess.substring(0, errorIdx);
  92.             var endMarker = content.indexOf("UI hierchary dumped to:");
  93.             if (endMarker !== -1) {
  94.                 content = content.substring(0, endMarker);
  95.             }
  96.         } else {
  97.             content = afterSuccess;
  98.         }
  99.         content = content.trim();
  100.     } else {
  101.         content = ½á¹û×Ö·û´®;
  102.     }
  103.    
  104.     return "" + content;
  105. }

  106. var xml = »ñÈ¡UI();
  107. if (xml.indexOf("ÍøÂçºÍ»¥ÁªÍø") !== -1) {
  108.     print.log("ÕÒµ½¡¾ÍøÂçºÍ»¥ÁªÍø¡¿½Úµã");

  109.     var ÎÄ×ÖË÷Òý = xml.indexOf("ÍøÂçºÍ»¥ÁªÍø");
  110.     var ºóÃæ = xml.substring(ÎÄ×ÖË÷Òý);
  111.     var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);

  112.     if (m) {
  113.         var left = parseInt(m[1]);
  114.         var top = parseInt(m[2]);
  115.         var right = parseInt(m[3]);
  116.         var bottom = parseInt(m[4]);
  117.         var centerX = (left + right) / 2;
  118.         var centerY = (top + bottom) / 2;

  119.         print.log("½Úµã·¶Î§£º[" + left + "," + top + "][" + right + "," + bottom + "]");
  120.         print.log("¼ÆËãÖÐÐĵ㣺(" + centerX + ", " + centerY + ")");

  121.         agent.click(centerX, centerY);
  122.         print.log("✓ Òѵã»÷¡¾ÍøÂçºÍ»¥ÁªÍø¡¿");
  123.     } else {
  124.         print.log("⚠ δÕÒµ½½Úµã×ø±ê");
  125.     }
  126. } else {
  127.     print.log("µ±Ç°Ò³ÃæÎ´ÕÒµ½¡¾ÍøÂçºÍ»¥ÁªÍø¡¿");
  128. }

  129. print.log("\n💡 µã»÷Ìáʾ£º");
  130. print.log("- agent.click(x,y) ÊʺϹ̶¨×ø±ê»ò´Ó½Úµã¼ÆËã³öµÄ×ø±ê");
  131. print.log("- agent.clickPercent(px,py) ÊʺϿçÉ豸¼æÈݵij¡¾°");
  132. print.log("- Á½Õß¿ÉÒÔÅäºÏ auto.findText() ʵÏÖÖÇÄܶ¨Î»µã»÷");

  133. // ========== 4. »¬¶¯²Ù×÷ ==========
  134. print.log("\n--- 4. »¬¶¯²Ù×÷ ---");
  135. agent.swip(540, 2800, 540, 800, 500);  // ´ÓÏÂÍùÉÏ»¬¶¯
  136. print.log("✓ »¬¶¯Íê³É");

  137. // ========== 5. AI Ëã·¨»¬¶¯£¨Ä£ÄâÊÖ¶¯£©==========
  138. print.log("\n--- 5. AI Ëã·¨»¬¶¯ ---");
  139. agent.swipAI(540, 2800, 540, 800);  // ¸ü×ÔÈ»µÄ»¬¶¯
  140. print.log("✓ AI »¬¶¯Íê³É");

  141. // ========== 6. °´¼ü²Ù×÷ ==========
  142. print.log("\n--- 6. °´¼ü²Ù×÷ ---");
  143. agent.back();      // ·µ»Ø¼ü
  144. print.log("✓ °´Ï·µ»Ø¼ü");

  145. agent.home();      // Home ¼ü
  146. print.log("✓ °´Ï Home ¼ü");

  147. agent.home2();     // Home ¼ü£¨ÁíÒ»ÖÖʵÏÖ·½Ê½£©
  148. print.log("✓ ·¢ËÍ Home °´¼ü£¨home2£©");

  149. agent.recents();   // ×î½üÈÎÎñ¼ü
  150. print.log("✓ °´ÏÂ×î½üÈÎÎñ¼ü");

  151. // agent.power();     // ¿ª»ú¼ü£¨ÒƵ½½Å±¾×îºó£¬±ÜÃâÌáǰ¹ØÆÁ£©
  152. // print.log("✓ °´Ï¿ª»ú¼ü");

  153. agent.keyPress(4); // ·¢ËͰ´¼üÂë 4£¨·µ»Ø¼ü£¬µÈͬÓÚ back()£©
  154. print.log("✓ ͨ¹ý keyPress ·¢ËÍ·µ»Ø¼ü");

  155. agent.keyPress(3); // ·¢ËͰ´¼üÂë 3£¨Home ¼ü£¬µÈͬÓÚ home()£©
  156. print.log("✓ ͨ¹ý keyPress ·¢ËÍ Home ¼ü");

  157. // ========== 7. ÊäÈëÎı¾ ==========
  158. print.log("\n--- 7. ÊäÈëÎı¾ ---");
  159. agent.input("Hello World");  // ÊäÈëÎÄ×Ö
  160. print.log("✓ ÒÑÊäÈëÎı¾");

  161. // ========== 8. »ñÈ¡½ÚµãÐÅÏ¢ ==========
  162. print.log("\n--- 8. »ñÈ¡½ÚµãÐÅÏ¢ ---");
  163. print.log("×¢Ò⣺agent.getXml() ·µ»Ø¶ÔÏ󣬻ñÈ¡UI() ·µ»Ø×Ö·û´®");

  164. var xml2 = »ñÈ¡UI();
  165. print.log("XML ³¤¶È£º" + xml2.length);

  166. function ²éÕÒËùÓаüº¬ÎÄ×ֵĽڵã(xml, ÎÄ×Ö) {
  167.     var ½á¹û = [];
  168.     var λÖà = 0;
  169.     while (true) {
  170.         var Ë÷Òý = xml.indexOf('text="' + ÎÄ×Ö + '"', λÖÃ);
  171.         if (Ë÷Òý === -1) break;

  172.         var ºóÃæ = xml.substring(Ë÷Òý);
  173.         var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  174.         if (m) {
  175.             ½á¹û.push({
  176.                 left: parseInt(m[1]),
  177.                 top: parseInt(m[2]),
  178.                 right: parseInt(m[3]),
  179.                 bottom: parseInt(m[4]),
  180.                 centerX: (parseInt(m[1]) + parseInt(m[3])) / 2,
  181.                 centerY: (parseInt(m[2]) + parseInt(m[4])) / 2
  182.             });
  183.         }
  184.         Î»Öà = Ë÷Òý + 10;
  185.     }
  186.     return ½á¹û;
  187. }

  188. var nodes = ²éÕÒËùÓаüº¬ÎÄ×ֵĽڵã(xml2, "ͬÒâ");
  189. print.log("ÕÒµ½°üº¬'ͬÒâ'µÄ½ÚµãÊý£º" + nodes.length);

  190. function ²éÕÒËùÓнڵãJSON(xml) {
  191.     var ½á¹û = [];
  192.     var ½ÚµãÁбí = [];
  193.     var classIndex = xml.indexOf('class="');

  194.     while (classIndex !== -1) {
  195.         var ºóÃæ = xml.substring(classIndex);
  196.         var boundsM = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  197.         var textM = ºóÃæ.match(/text="([^"]*)"/);
  198.         var idM = ºóÃæ.match(/resource-id="([^"]*)"/);

  199.         if (boundsM) {
  200.             var ½Úµã = {
  201.                 class: "",
  202.                 left: parseInt(boundsM[1]),
  203.                 top: parseInt(boundsM[2]),
  204.                 right: parseInt(boundsM[3]),
  205.                 bottom: parseInt(boundsM[4]),
  206.                 text: textM ? textM[1] : "",
  207.                 resourceId: idM ? idM[1] : ""
  208.             };
  209.             ½á¹û.push(½Úµã);
  210.         }
  211.         classIndex = xml.indexOf('class="', classIndex + 7);
  212.     }
  213.     return ½á¹û;
  214. }

  215. var jsonNodes = ²éÕÒËùÓнڵãJSON(xml2);
  216. print.log("JSON ½ÚµãÊý£º" + jsonNodes.length);

  217. print.log("\n💡 Ìáʾ£ºagent.findNodesByTextMatches/Contains/Json ÔÚʵ¼ÊÉ豸Éϲ»´æÔÚ");
  218. print.log("  ÇëʹÓà agent.shell('uiautomator dump ...') + ×Ô¶¨Ò庯Êý½âÎö");

  219. // ========== 9. ½ØÍ¼ ==========
  220. print.log("\n--- 9. ÆÁÄ»½ØÍ¼ ---");
  221. print.log("˵Ã÷£ºagent.screenShot() ÔÚ²¿·ÖÉ豸Éϲ»´æÔÚ£¬Ê¹Óà shell ÃüÁî½ØÍ¼");

  222. var ½ØÍ¼Â·¾¶ = "/sdcard/screenshot_" + Date.now() + ".png";
  223. agent.shell("screencap -p " + ½ØÍ¼Â·¾¶);
  224. print.log("✓ ½ØÍ¼Òѱ£´æµ½£º" + ½ØÍ¼Â·¾¶);

  225. var ¼ì²éÎļþ = Ö´ÐÐShell("ls -l " + ½ØÍ¼Â·¾¶);
  226. if (¼ì²éÎļþ) {
  227.     print.log("✓ ½ØÍ¼ÎļþÐÅÏ¢£º" + ¼ì²éÎļþ);
  228. }

  229. // ========== 10. Shell ÃüÁî ==========
  230. print.log("\n--- 10. Ö´ÐÐ Shell ÃüÁî ---");
  231. var result = Ö´ÐÐShell("uiautomator dump --compressed /proc/self/fd/1 2>/dev/null");
  232. print.log("✓ Shell ÃüÁîÖ´ÐÐÍê³É");

  233. // ========== 11. ´¥Ãþʼþ£¨¸ß¼¶£©==========
  234. print.log("\n--- 11. ´¥Ãþʼþ ---");
  235. print.log("˵Ã÷£ºtouchDown ¿ÉÓ㬵« touchMove/touchUp/touchUpUp ÔÚ²¿·ÖÉ豸Éϲ»´æÔÚ");
  236. print.log("×¢Ò⣺ʵ¼Ê²âÊÔÖУ¬½ö touchDown ¿Éµ÷Óã¬ÆäËû·½·¨±¨´í");

  237. agent.touchDown(540, 1800);   // °´Ï£¨x, y£©- ÒÑÑéÖ¤¿ÉÓÃ
  238. sleep.millisecond(ºÁÃë = 100);
  239. // agent.touchMove(540, 1900);   // ÒÆ¶¯ - ±¨´í£ºCan't find method
  240. // sleep.millisecond(ºÁÃë = 100);
  241. // agent.touchUp(540, 1900);     // ̧Æð - ±¨´í£ºCan't find method
  242. print.log("✓ touchDown Ö´ÐÐÍê³É£¨touchMove/touchUp/touchUpUp ÔÚµ±Ç°É豸Éϲ»¿ÉÓã©");

  243. // touchUpUp Óë touchUp ÀàËÆ£¬µ«Í¬ÑùÔÚµ±Ç°É豸Éϲ»¿ÉÓÃ
  244. // agent.touchUpUp(540, 1900);   // ´¥Ãþ̧Æð - ±¨´í£ºCan't find method
  245. print.log("✓ touchUpUp ÔÚµ±Ç°É豸Éϲ»¿ÉÓÃ");

  246. // ========== 12. ¼ì²é´úÀí״̬ ==========
  247. print.log("\n--- 12. ´úÀí״̬ ---");
  248. var isOpen = agent.isOpen();
  249. print.log("´úÀíÊÇ·ñ¿ªÆô£º" + isOpen);

  250. // ========== 13. ¿ªÆô´úÀíģʽ ==========
  251. print.log("\n--- 13. ¿ªÆô´úÀíģʽ agent.start() ---");
  252. print.log("˵Ã÷£º¿ªÆô´úÀíģʽ£¬ÊÖ»ú±ØÐë root »òʹÓà PC_IDE µÄ adb Á¬½Ó");
  253. print.log("·µ»ØÖµ£ºboolean£¬³É¹¦·µ»Ø true");

  254. var ¿ªÆô½á¹û = agent.start();
  255. print.log("¿ªÆô´úÀíģʽ½á¹û£º" + ¿ªÆô½á¹û);

  256. var Ôٴμì²é = agent.isOpen();
  257. print.log("¿ªÆôºó´úÀí״̬£º" + Ôٴμì²é);

  258. // ========== 14. Ëĸö·½Ïò»¬¶¯ ==========
  259. print.log("\n--- 14. Ëĸö·½Ïò»¬¶¯ ---");
  260. print.log("˵Ã÷£ºÍ¨¹ý½»»»ÆðÖ¹×ø±êʵÏÖÉÏ/ÏÂ/×ó/ÓÒËĸö·½ÏòµÄ»¬¶¯");

  261. var ÖÐX = Math.floor(ÆÁÄ»¿í / 2);
  262. var ÖÐY = Math.floor(ÆÁÄ»¸ß / 2);
  263. var Æ«ÒÆ = 800;

  264. // ÏòÉÏ»¬¶¯£¨ÄÚÈÝÏòÉϹö¶¯£¬¿´Ï·½ÄÚÈÝ£©
  265. agent.swip(ÖÐX, ÖÐY + Æ«ÒÆ, ÖÐX, ÖÐY - Æ«ÒÆ, 500);
  266. print.log("✓ ÏòÉÏ»¬¶¯Íê³É");

  267. // ÏòÏ»¬¶¯£¨ÄÚÈÝÏòϹö¶¯£¬¿´ÉÏ·½ÄÚÈÝ£©
  268. agent.swip(ÖÐX, ÖÐY - Æ«ÒÆ, ÖÐX, ÖÐY + Æ«ÒÆ, 500);
  269. print.log("✓ ÏòÏ»¬¶¯Íê³É");

  270. // Ïò×󻬶¯£¨²é¿´ÓÒ²àÄÚÈÝ£¬Èç·­Ò³£©
  271. agent.swip(ÖÐX + Æ«ÒÆ, ÖÐY, ÖÐX - Æ«ÒÆ, ÖÐY, 500);
  272. print.log("✓ Ïò×󻬶¯Íê³É");

  273. // ÏòÓÒ»¬¶¯£¨²é¿´×ó²àÄÚÈÝ£¬Èç·µ»ØÉÏÒ»Ò³£©
  274. agent.swip(ÖÐX - Æ«ÒÆ, ÖÐY, ÖÐX + Æ«ÒÆ, ÖÐY, 500);
  275. print.log("✓ ÏòÓÒ»¬¶¯Íê³É");

  276. // ========== 15. ³¤°´²Ù×÷ ==========
  277. print.log("\n--- 15. ³¤°´²Ù×÷ ---");
  278. print.log("˵Ã÷£ºÓÉÓÚ touchUp ÔÚµ±Ç°É豸Éϲ»¿ÉÓã¬Ê¹Óà swip ʵÏÖ³¤°´");

  279. // agent.touchDown(540, 1800);
  280. // sleep.second(Ãë = 2);
  281. // agent.touchUp(540, 1800);  // ±¨´í£ºCan't find method
  282. // print.log("✓ ³¤°´ (540, 1800) ³ÖÐø 2 ÃëÍê³É");

  283. // ³¤°´Óà swip ʵÏÖ£¨ÆðµãÖյ㼸ºõÏàͬ£¬Ê±¼ä³¤£©
  284. agent.swip(540, 1800, 541, 1801, 2000);
  285. print.log("✓ ͨ¹ý swip ʵÏÖ³¤°´Íê³É£¨³ÖÐø 2 Ã룩");

  286. // ========== 15. Ë«»÷²Ù×÷ ==========
  287. print.log("\n--- 15. Ë«»÷²Ù×÷ ---");
  288. print.log("˵Ã÷£ºÁ½´ÎÁ¬Ðø click£¬¼ä¸ô 100-200ms Ä£ÄâË«»÷");

  289. agent.click(540, 1800);
  290. sleep.millisecond(ºÁÃë = 150);
  291. agent.click(540, 1800);
  292. print.log("✓ Ë«»÷ (540, 1800) Íê³É");

  293. // ========== 16. ¼ôÌù°å²Ù×÷ÓëÕ³Ìù ==========
  294. print.log("\n--- 16. ¼ôÌù°å²Ù×÷ÓëÕ³Ìù ---");
  295. print.log("˵Ã÷£ºÏÈдÈë¼ôÌù°å£¬ÔÙͨ¹ý°´¼üÕ³Ìùµ½µ±Ç°ÊäÈë¿ò");

  296. var ´ýÊäÈëÎı¾ = "ÕâÊÇÒªÕ³ÌùµÄÖÐÎÄÄÚÈÝ";

  297. // ·½Ê½1£ºÍ¨¹ý Clipboard.copy() ÉèÖüôÌù°å
  298. Clipboard.copy(´ýÊäÈëÎı¾);
  299. sleep.millisecond(ºÁÃë = 300);

  300. // ·½Ê½2£ºÍ¨¹ý shell service call clipboard£¨Ë«±£ÏÕ£¬²¿·ÖÉ豸 Clipboard API ʧЧʱʹÓã©
  301. agent.shell("service call clipboard 3 i32 1 s16 '" + ´ýÊäÈëÎı¾ + "' i32 0");
  302. sleep.millisecond(ºÁÃë = 300);

  303. // ´¥·¢Õ³Ìù£ºKEYCODE_PASTE (279)
  304. agent.shell("input keyevent 279");
  305. sleep.second(Ãë = 1);
  306. print.log("✓ ÒÑͨ¹ý KEYCODE_PASTE Õ³ÌùÎı¾");

  307. // ±¸Ó÷½Ê½£ºCtrl+V ×éºÏ¼ü£¨KEYCODE_V=50 + META_CTRL_ON=0x1000£©
  308. // agent.shell("input keyevent 50 --meta 0x1000");

  309. // ========== 17. Æô¶¯Ó¦Óà ==========
  310. print.log("\n--- 17. Æô¶¯Ó¦Óà ---");
  311. print.log("˵Ã÷£ºÊ¹Óà app.openApp() Æô¶¯Ö¸¶¨°üÃûµÄÓ¦ÓÃ");

  312. var ¶¶Òô°üÃû = "com.ss.android.ugc.aweme";
  313. var СºìÊé°üÃû = "com.xingin.xhs";
  314. var ΢ÐŰüÃû = "com.tencent.mm";
  315. var Í·Ìõ¼«ËÙ°æ°üÃû = "com.ss.android.article.lite";
  316. var ÉèÖðüÃû = "com.android.settings";

  317. print.log("³£ÓÃÓ¦ÓðüÃû£º");
  318. print.log("- ¶¶Òô£º" + ¶¶Òô°üÃû);
  319. print.log("- СºìÊ飺" + СºìÊé°üÃû);
  320. print.log("- ΢ÐÅ£º" + ΢ÐŰüÃû);
  321. print.log("- Í·Ìõ¼«Ëٰ棺" + Í·Ìõ¼«ËÙ°æ°üÃû);
  322. print.log("- ÉèÖãº" + ÉèÖðüÃû);

  323. // Æô¶¯¶¶Òô£¨Ê¾Àý£¬×¢Ê͵ô±ÜÃâʵ¼ÊÖ´ÐУ©
  324. // app.openApp(¶¶Òô°üÃû);
  325. // sleep.second(Ãë = 5);
  326. // print.log("✓ ÒÑÆô¶¯¶¶Òô");

  327. print.log("💡 Ìáʾ£ºÆô¶¯ºó¿ÉÅäºÏ agent.clickPercent() ½øÐнçÃæ²Ù×÷");

  328. // ========== 18. ͨ¹ý resourceId ²éÕÒ½Úµã ==========
  329. print.log("\n--- 18. ͨ¹ý resourceId ²éÕÒ½Úµã ---");
  330. print.log("˵Ã÷£º´Ó XML ÖÐͨ¹ý resource-id ÊôÐÔ²éÕÒ½Úµã×ø±ê");

  331. function ͨ¹ýID²éÕÒ½Úµã(xml, resourceId) {
  332.     var Ë÷Òý = xml.indexOf('resource-id="' + resourceId + '"');
  333.     if (Ë÷Òý === -1) {
  334.         return null;
  335.     }
  336.     var ºóÃæ = xml.substring(Ë÷Òý);
  337.     var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  338.     if (!m) {
  339.         return null;
  340.     }
  341.     var left = parseInt(m[1]);
  342.     var top = parseInt(m[2]);
  343.     var right = parseInt(m[3]);
  344.     var bottom = parseInt(m[4]);
  345.     return {
  346.         left: left,
  347.         top: top,
  348.         right: right,
  349.         bottom: bottom,
  350.         centerX: (left + right) / 2,
  351.         centerY: (top + bottom) / 2,
  352.         width: right - left,
  353.         height: bottom - top
  354.     };
  355. }

  356. var xmlForId = »ñÈ¡UI();

  357. function »ñÈ¡µ±Ç°°üÃû(xml) {
  358.     var m = xml.match(/package="([^"]+)"/);
  359.     return m ? m[1] : "";
  360. }

  361. var µ±Ç°°üÃû = »ñÈ¡µ±Ç°°üÃû(xmlForId);
  362. print.log("µ±Ç°Ç°Ì¨Ó¦ÓðüÃû£º" + µ±Ç°°üÃû);

  363. var ½ÚµãById = ͨ¹ýID²éÕÒ½Úµã(xmlForId, "android:id/title");
  364. if (½ÚµãById) {
  365.     print.log("✓ ÕÒµ½±êÌâ½Úµã£¬ÖÐÐĵ㣺(" + ½ÚµãById.centerX + ", " + ½ÚµãById.centerY + ")");
  366.     print.log("  ³ß´ç£º" + ½ÚµãById.width + " x " + ½ÚµãById.height);
  367. } else {
  368.     var ËùÓÐIds = [];
  369.     var idIndex = xmlForId.indexOf('resource-id="');
  370.     while (idIndex !== -1) {
  371.         var endIndex = xmlForId.indexOf('"', idIndex + 13);
  372.         if (endIndex !== -1) {
  373.             var id = xmlForId.substring(idIndex + 13, endIndex);
  374.             if (id && !id.match(/^com\.android/) && !ËùÓÐIds[id]) {
  375.                 ËùÓÐIds.push(id);
  376.                 ËùÓÐIds[id] = true;
  377.             }
  378.         }
  379.         idIndex = xmlForId.indexOf('resource-id="', idIndex + 13);
  380.     }
  381.     print.log("⚠ δÕÒµ½Ö¸¶¨ resourceId£¬µ±Ç°½çÃæ¿ÉÓà resource-id ÁÐ±í£¨Ç°10¸ö£©£º");
  382.     for (var i = 0; i < Math.min(10, ËùÓÐIds.length); i++) {
  383.         print.log("  - " + ËùÓÐIds[i]);
  384.     }
  385. }

  386. // ========== 19. ͨ¹ý className ²éÕÒËùÓнڵã ==========
  387. print.log("\n--- 19. ͨ¹ý className ²éÕÒËùÓнڵã ---");
  388. print.log("˵Ã÷£º²éÕÒ½çÃæÉÏËùÓÐÖ¸¶¨ className µÄ½Úµã£¨ÈçËùÓа´Å¥/ÊäÈë¿ò£©");

  389. function ͨ¹ýClass²éÕÒËùÓнڵã(xml, className) {
  390.     var ½á¹û = [];
  391.     var ²éÕÒÖµ = 'class="' + className + '"';
  392.     var λÖà = 0;

  393.     while (true) {
  394.         var Ë÷Òý = xml.indexOf(²éÕÒÖµ, λÖÃ);
  395.         if (Ë÷Òý === -1) break;

  396.         var ºóÃæ = xml.substring(Ë÷Òý);
  397.         var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  398.         if (m) {
  399.             var left = parseInt(m[1]);
  400.             var top = parseInt(m[2]);
  401.             var right = parseInt(m[3]);
  402.             var bottom = parseInt(m[4]);
  403.             ½á¹û.push({
  404.                 left: left,
  405.                 top: top,
  406.                 right: right,
  407.                 bottom: bottom,
  408.                 centerX: (left + right) / 2,
  409.                 centerY: (top + bottom) / 2,
  410.                 width: right - left,
  411.                 height: bottom - top
  412.             });
  413.         }
  414.         Î»Öà = Ë÷Òý + ²éÕÒÖµ.length;
  415.     }
  416.     return ½á¹û;
  417. }

  418. var xmlForClass = »ñÈ¡UI();

  419. // ²éÕÒËùÓÐ EditText ÊäÈë¿ò
  420. var ÊäÈë¿òÁбí = ͨ¹ýClass²éÕÒËùÓнڵã(xmlForClass, "android.widget.EditText");
  421. print.log("ÕÒµ½ EditText ÊäÈë¿òÊýÁ¿£º" + ÊäÈë¿òÁбí.length);
  422. for (var i = 0; i < ÊäÈë¿òÁбí.length; i++) {
  423.     var ¿ò = ÊäÈë¿òÁбí[i];
  424.     print.log("  ÊäÈë¿ò[" + i + "] ÖÐÐÄ(" + ¿ò.centerX + ", " + ¿ò.centerY + ") ³ß´ç " + ¿ò.width + "x" + ¿ò.height);
  425. }

  426. // ²éÕÒËùÓÐ Button °´Å¥
  427. var °´Å¥Áбí = ͨ¹ýClass²éÕÒËùÓнڵã(xmlForClass, "android.widget.Button");
  428. print.log("ÕÒµ½ Button °´Å¥ÊýÁ¿£º" + °´Å¥Áбí.length);

  429. // ========== 20. ͨ¹ý content-desc ²éÕÒ½Úµã ==========
  430. print.log("\n--- 20. ͨ¹ý content-desc ²éÕÒ½Úµã ---");
  431. print.log("˵Ã÷£ºÍ¨¹ýÎÞÕϰ­ÃèÊö²éÕҽڵ㣨ÊʺÏͼ±ê°´Å¥£¬Èç·µ»Ø/¼ÓºÅ£©");

  432. function ͨ¹ýContentDesc²éÕÒ½Úµã(xml, desc) {
  433.     var Ë÷Òý = xml.indexOf('content-desc="' + desc + '"');
  434.     if (Ë÷Òý === -1) {
  435.         return null;
  436.     }
  437.     var ºóÃæ = xml.substring(Ë÷Òý);
  438.     var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  439.     if (!m) {
  440.         return null;
  441.     }
  442.     var left = parseInt(m[1]);
  443.     var top = parseInt(m[2]);
  444.     var right = parseInt(m[3]);
  445.     var bottom = parseInt(m[4]);
  446.     return {
  447.         left: left,
  448.         top: top,
  449.         right: right,
  450.         bottom: bottom,
  451.         centerX: (left + right) / 2,
  452.         centerY: (top + bottom) / 2
  453.     };
  454. }

  455. var xmlForDesc = »ñÈ¡UI();
  456. var ·µ»Ø½Úµã = ͨ¹ýContentDesc²éÕÒ½Úµã(xmlForDesc, "·µ»Ø");
  457. if (·µ»Ø½Úµã) {
  458.     print.log("✓ ÕÒµ½¡¾·µ»Ø¡¿°´Å¥£¬ÖÐÐĵ㣺(" + ·µ»Ø½Úµã.centerX + ", " + ·µ»Ø½Úµã.centerY + ")");
  459. } else {
  460.     print.log("⚠ µ±Ç°Ò³ÃæÎ´ÕÒµ½ content-desc=·µ»Ø µÄ½Úµã");
  461. }

  462. // ³£¼ûµÄ content-desc Öµ£º·µ»Ø¡¢·¢²¼¡¢¼ÓºÅ¡¢+¡¢ËÑË÷¡¢²Ëµ¥¡¢¸ü¶à

  463. // ========== 21. ͨ¹ý hint ²éÕÒÊäÈë¿ò ==========
  464. print.log("\n--- 21. ͨ¹ý hint ²éÕÒÊäÈë¿ò ---");
  465. print.log("˵Ã÷£ºÊäÈë¿òδÊäÈëÄÚÈÝʱͨ³£ÏÔʾ hint ÌáʾÎÄ×Ö£¨Èç±êÌâ/ÕýÎÄ£©");

  466. function ͨ¹ýHint²éÕÒÊäÈë¿ò(xml, hint) {
  467.     var Ë÷Òý = xml.indexOf('hint="' + hint + '"');
  468.     if (Ë÷Òý === -1) {
  469.         // ³¢ÊÔ±äÌå
  470.         var ±äÌå = [hint, "ÇëÊäÈë" + hint, "ÊäÈë" + hint, "д" + hint];
  471.         for (var i = 0; i < ±äÌå.length; i++) {
  472.             Ë÷Òý = xml.indexOf('hint="' + ±äÌå[i] + '"');
  473.             if (Ë÷Òý !== -1) {
  474.                 hint = ±äÌå[i];
  475.                 break;
  476.             }
  477.         }
  478.     }
  479.     if (Ë÷Òý === -1) {
  480.         return null;
  481.     }
  482.     var ºóÃæ = xml.substring(Ë÷Òý);
  483.     var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  484.     if (!m) {
  485.         return null;
  486.     }
  487.     return {
  488.         centerX: (parseInt(m[1]) + parseInt(m[3])) / 2,
  489.         centerY: (parseInt(m[2]) + parseInt(m[4])) / 2,
  490.         hint: hint
  491.     };
  492. }

  493. var xmlForHint = »ñÈ¡UI();
  494. var ±êÌâ¿ò = ͨ¹ýHint²éÕÒÊäÈë¿ò(xmlForHint, "±êÌâ");
  495. if (±êÌâ¿ò) {
  496.     print.log("✓ ÕÒµ½±êÌâÊäÈë¿ò£¨hint=" + ±êÌâ¿ò.hint + "£©ÖÐÐĵ㣺(" + ±êÌâ¿ò.centerX + ", " + ±êÌâ¿ò.centerY + ")");
  497. } else {
  498.     print.log("⚠ δÕÒµ½±êÌâÊäÈë¿ò");
  499. }

  500. // ========== 22. µÈ´ý½Úµã³öÏÖ ==========
  501. print.log("\n--- 22. µÈ´ý½Úµã³öÏÖ ---");
  502. print.log("˵Ã÷£ºÑ­»·¼ì²â XML£¬Ö±µ½³öÏÖÄ¿±êÎÄ×Ö»ò³¬Ê±£¨ÊʺÏÒ³Ãæ¼ÓÔØµÈ´ý£©");

  503. function µÈ´ýÎÄ×Ö³öÏÖ(Ä¿±êÎÄ×Ö, ³¬Ê±Ãë) {
  504.     var ¿ªÊ¼Ê±¼ä = Date.now();
  505.     var ³¬Ê±ºÁÃë = ³¬Ê±Ãë * 1000;

  506.     while (Date.now() - ¿ªÊ¼Ê±¼ä < ³¬Ê±ºÁÃë) {
  507.         try {
  508.             var xml = »ñÈ¡UI();
  509.             if (xml.indexOf(Ä¿±êÎÄ×Ö) !== -1) {
  510.                 var Òѵȴý = Math.floor((Date.now() - ¿ªÊ¼Ê±¼ä) / 1000);
  511.                 print.log("✓ ÔÚ " + Òѵȴý + " Ãëºó¼ì²âµ½¡¾" + Ä¿±êÎÄ×Ö + "¡¿");
  512.                 return true;
  513.             }
  514.         } catch (e) {
  515.             print.log("⚠ »ñÈ¡ XML ³ö´í£º" + e.message);
  516.         }
  517.         sleep.second(Ãë = 1);
  518.     }
  519.     print.log("✗ µÈ´ý " + ³¬Ê±Ãë + " Ãëºóδ³öÏÖ¡¾" + Ä¿±êÎÄ×Ö + "¡¿");
  520.     return false;
  521. }

  522. // ʾÀý£ºµÈ´ý"ÏÂÒ»²½"°´Å¥³öÏÖ£¨×î¶à 10 Ã룩
  523. // var ÕÒµ½ = µÈ´ýÎÄ×Ö³öÏÖ("ÏÂÒ»²½", 10);
  524. // if (ÕÒµ½) {
  525. //     agent.click(½Úµã.centerX, ½Úµã.centerY);
  526. // }
  527. print.log("&#128161; Ìáʾ£ºÑ­»·µÈ´ý + ½Úµã²éÕÒ + µã»÷ = Îȶ¨µÄ×Ô¶¯»¯Á÷³Ì");

  528. // ========== 23. ʵÓà Shell ÃüÁî´óÈ« ==========
  529. print.log("\n--- 23. ʵÓà Shell ÃüÁî´óÈ« ---");
  530. print.log("˵Ã÷£ºÍ¨¹ý agent.shell() Ö´Ðи÷ÖÖϵͳÃüÁî");

  531. // 1. »ñÈ¡µ±Ç°½çÃæ XML£¨×î³£Óã©
  532. var uiXml = Ö´ÐÐShell("uiautomator dump --compressed /proc/self/fd/1 2>/dev/null");
  533. print.log("✓ 1. »ñÈ¡ UI XML£¬³¤¶È£º" + uiXml.length);

  534. // 2. Ä£Äâ°´¼üʼþ£¨input keyevent£©
  535. agent.shell("input keyevent 4");      // KEYCODE_BACK ·µ»Ø¼ü
  536. agent.shell("input keyevent 3");       // KEYCODE_HOME Home¼ü
  537. agent.shell("input keyevent 24");     // KEYCODE_VOLUME_UP ÒôÁ¿¼Ó
  538. agent.shell("input keyevent 25");     // KEYCODE_VOLUME_DOWN ÒôÁ¿¼õ
  539. agent.shell("input keyevent 26");     // KEYCODE_POWER µçÔ´¼ü
  540. agent.shell("input keyevent 279");    // KEYCODE_PASTE Õ³Ìù
  541. print.log("✓ 2. Ä£Äâ°´¼üʼþÍê³É");

  542. // 3. Æô¶¯Ó¦Óã¨am start£©
  543. // agent.shell("am start -n com.xingin.xhs/.activity.SplashActivity");
  544. // agent.shell("monkey -p com.xingin.xhs 1");  // ͨ¹ý monkey Æô¶¯
  545. print.log("✓ 3. am start / monkey Æô¶¯Ó¦ÓÃ");

  546. // 4. Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ
  547. // agent.shell("am force-stop com.xingin.xhs");
  548. print.log("✓ 4. am force-stop Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ");

  549. // 5. ÉèÖüôÌù°å£¨service call clipboard£©
  550. agent.shell("service call clipboard 3 i32 1 s16 '¼ôÌù°åÄÚÈÝ' i32 0");
  551. print.log("✓ 5. service call clipboard ÉèÖüôÌù°å");

  552. // 6. ³¤°´»¬¶¯£¨input swipe£¬¿ÉÄ£Äⳤ°´£©
  553. // agent.shell("input swipe 540 1800 541 1801 2000");
  554. print.log("✓ 6. input swipe Ä£Äⳤ°´");

  555. // 7. ÊäÈëÎÄ×Ö£¨input text£¬½öÖ§³Ö ASCII£©
  556. agent.shell("input text 'Hello'");
  557. print.log("✓ 7. input text ÊäÈë ASCII ÎÄ×Ö");

  558. // 8. »ñȡϵͳÊôÐÔ
  559. var ÊôÐÔÖµ = Ö´ÐÐShell("getprop ro.product.model");
  560. print.log("✓ 8. É豸Ðͺţº" + ÊôÐÔÖµ);

  561. // ========== 24. ½ØÍ¼±£´æµ½Îļþ ==========
  562. print.log("\n--- 24. ½ØÍ¼±£´æµ½Îļþ ---");
  563. print.log("˵Ã÷£ºÊ¹Óà screencap ÃüÁî½ØÍ¼£¬agent.screenShot() ÔÚ²¿·ÖÉ豸Éϲ»´æÔÚ");

  564. var ½ØÍ¼Â·¾¶ = "/sdcard/screenshot_" + Date.now() + ".png";
  565. agent.shell("screencap -p " + ½ØÍ¼Â·¾¶);
  566. print.log("✓ ½ØÍ¼Òѱ£´æµ½£º" + ½ØÍ¼Â·¾¶);

  567. var Îļþ¼ì²é = Ö´ÐÐShell("ls -l " + ½ØÍ¼Â·¾¶);
  568. if (Îļþ¼ì²é) {
  569.     var ´óСÐÅÏ¢ = Îļþ¼ì²é;
  570.     print.log("✓ ½ØÍ¼ÎļþÐÅÏ¢£º" + ´óСÐÅÏ¢);
  571. }
  572. print.log("&#128161; ÅäºÏ file API ³Ö¾Ã»¯½ØÍ¼£¬±ãÓÚºóÐø OCR ÕÒ×Ö»òÉÏ´«");

  573. // ========== 25. ×ÛºÏʵս£ºÖÇÄܲéÕÒ²¢µã»÷Á÷³Ì ==========
  574. print.log("\n--- 25. ×ÛºÏʵս£ºÖÇÄܲéÕÒ²¢µã»÷Á÷³Ì ---");
  575. print.log("˵Ã÷£ºÑ­»·²éÕҽڵ㠡ú ¼ÆËã ¡ú µã»÷ ¡ú ÑéÖ¤ ¡ú ÖØÊÔ");

  576. function ÖÇÄܲéÕÒ²¢µã»÷(Ä¿±êÎÄ×Ö, ³¬Ê±Ãë) {
  577.     var ¿ªÊ¼Ê±¼ä = Date.now();
  578.     var ³¬Ê±ºÁÃë = ³¬Ê±Ãë * 1000;
  579.     var ³¢ÊÔ´ÎÊý = 0;

  580.     while (Date.now() - ¿ªÊ¼Ê±¼ä < ³¬Ê±ºÁÃë) {
  581.         ³¢ÊÔ´ÎÊý++;
  582.         try {
  583.             var xml = »ñÈ¡UI();

  584.             // ¼ì²éÄ¿±êÎÄ×ÖÊÇ·ñ´æÔÚ
  585.             if (xml.indexOf(Ä¿±êÎÄ×Ö) === -1) {
  586.                 sleep.second(Ãë = 1);
  587.                 continue;
  588.             }

  589.             // ͨ¹ý bounds ÕýÔòÌáÈ¡×ø±ê
  590.             var ÎÄ×ÖË÷Òý = xml.indexOf(Ä¿±êÎÄ×Ö);
  591.             var ºóÃæ = xml.substring(ÎÄ×ÖË÷Òý);
  592.             var m = ºóÃæ.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);

  593.             if (m) {
  594.                 var left = parseInt(m[1]);
  595.                 var top = parseInt(m[2]);
  596.                 var right = parseInt(m[3]);
  597.                 var bottom = parseInt(m[4]);
  598.                 var cx = (left + right) / 2;
  599.                 var cy = (top + bottom) / 2;

  600.                 agent.click(cx, cy);
  601.                 print.log("✓ µÚ " + ³¢ÊÔ´ÎÊý + " ´Î³¢ÊÔ£ºÒѵã»÷¡¾" + Ä¿±êÎÄ×Ö + "¡¿(" + cx + ", " + cy + ")");

  602.                 // µã»÷ºóµÈ´ý²¢ÑéÖ¤
  603.                 sleep.second(Ãë = 1);
  604.                 var xml2 = »ñÈ¡UI();
  605.                 if (xml2.indexOf(Ä¿±êÎÄ×Ö) === -1) {
  606.                     print.log("✓ ÑéÖ¤³É¹¦£ºÄ¿±êÒÑÏûʧ");
  607.                     return true;
  608.                 } else {
  609.                     print.log("⚠ Ä¿±êÈÔ´æÔÚ£¬¿ÉÄܵã»÷δÉúЧ£¬ÖØÊÔ...");
  610.                 }
  611.             }
  612.         } catch (e) {
  613.             print.log("⚠ µÚ " + ³¢ÊÔ´ÎÊý + " ´Î³¢ÊÔ³ö´í£º" + e.message);
  614.         }
  615.         sleep.second(Ãë = 1);
  616.     }

  617.     print.log("✗ ³¬Ê± " + ³¬Ê±Ãë + " Ã룬¹²³¢ÊÔ " + ³¢ÊÔ´ÎÊý + " ´Îδ³É¹¦");
  618.     return false;
  619. }

  620. // ʾÀýµ÷Óã¨×¢ÊͱÜÃâʵ¼ÊÖ´ÐУ©
  621. // ÖÇÄܲéÕÒ²¢µã»÷("ͬÒâ", 10);
  622. // ÖÇÄܲéÕÒ²¢µã»÷("ÏÂÒ»²½", 15);
  623. // ÖÇÄܲéÕÒ²¢µã»÷("·¢²¼", 10);
  624. print.log("&#128161; ´Ëº¯Êý·â×°ÁËÍêÕûµÄ²éÕÒ¡úµã»÷¡úÑéÖ¤¡úÖØÊÔÁ÷³Ì£¬¿ÉÖ±½Ó¸´ÓÃ");

  625. // ========== 26. ´íÎó´¦ÀíÓëÖØÊÔ»úÖÆ ==========
  626. print.log("\n--- 26. ´íÎó´¦ÀíÓëÖØÊÔ»úÖÆ ---");
  627. print.log("˵Ã÷£ºÊ¹Óà try-catch °ü¹ü¹Ø¼ü²Ù×÷£¬Ê§°Üʱ×Ô¶¯ÖØÊÔ");

  628. function ´øÖØÊԵIJÙ×÷(²Ù×÷º¯Êý, ²Ù×÷Ãû, ×î´óÖØÊÔ) {
  629.     ×î´óÖØÊÔ = ×î´óÖØÊÔ || 3;
  630.     for (var i = 1; i <= ×î´óÖØÊÔ; i++) {
  631.         try {
  632.             print.log("µÚ " + i + "/" + ×î´óÖØÊÔ + " ´Î³¢ÊÔ " + ²Ù×÷Ãû);
  633.             var ½á¹û = ²Ù×÷º¯Êý();
  634.             if (½á¹û) {
  635.                 print.log("✓ " + ²Ù×÷Ãû + " ³É¹¦");
  636.                 return true;
  637.             }
  638.         } catch (e) {
  639.             print.log("⚠ µÚ " + i + " ´Î³ö´í£º" + e.message);
  640.         }
  641.         if (i < ×î´óÖØÊÔ) {
  642.             sleep.second(Ãë = 1);
  643.         }
  644.     }
  645.     print.log("✗ " + ²Ù×÷Ãû + " ʧ°Ü£¬ÒÑÖØÊÔ " + ×î´óÖØÊÔ + " ´Î");
  646.     return false;
  647. }

  648. // ʾÀý£º´øÖØÊԵĵã»÷²Ù×÷
  649. // ´øÖØÊԵIJÙ×÷(function() {
  650. //     var xml = »ñÈ¡UI();
  651. //     if (xml.indexOf("ÏÂÒ»²½") === -1) return false;
  652. //     // ... ²éÕÒ²¢µã»÷
  653. //     return true;
  654. // }, "µã»÷ÏÂÒ»²½", 3);

  655. print.log("&#128161; try-catch + ÖØÊÔ»úÖÆ¿É´ó·ùÌáÉý½Å±¾Îȶ¨ÐÔ");

  656. // ========== 27. Ó¦ÓùÜÀíÓëÇл» ==========
  657. print.log("\n--- 27. Ó¦ÓùÜÀíÓëÇл» ---");
  658. print.log("˵Ã÷£ºÆô¶¯¡¢Çл»¡¢¹Ø±ÕÓ¦Óõij£Ó÷½·¨");

  659. // Æô¶¯Ó¦ÓÃ
  660. // app.openApp("com.xingin.xhs");
  661. // sleep.second(Ãë = 5);

  662. // ͨ¹ý shell Æô¶¯Ö¸¶¨ Activity£¨¸ü¾«È·£©
  663. // agent.shell("am start -n com.xingin.xhs/.activity.SplashActivity");

  664. // ͨ¹ý°üÃûÆô¶¯£¨monkey ·½Ê½£¬¸üͨÓã©
  665. // agent.shell("monkey -p com.xingin.xhs 1");

  666. // Ç¿ÖÆÍ£Ö¹Ó¦ÓÃ
  667. // agent.shell("am force-stop com.xingin.xhs");

  668. // Çл»µ½×î½üÈÎÎñ
  669. // agent.recents();
  670. // sleep.second(Ãë = 1);
  671. // agent.clickPercent(0.5, 0.5);  // µã»÷µÚÒ»¸öÈÎÎñ

  672. // ²é¿´µ±Ç°Ç°Ì¨Ó¦ÓÃ
  673. var µ±Ç°Ó¦Óà = Ö´ÐÐShell("dumpsys window | grep mCurrentFocus");
  674. var µ±Ç°Ó¦Óó¤¶È = typeof µ±Ç°Ó¦ÓÃ.length === "function" ? µ±Ç°Ó¦ÓÃ.length() : (µ±Ç°Ó¦ÓÃ.length || 0);
  675. var µ±Ç°Ó¦ÓÃÏÔʾ = µ±Ç°Ó¦ÓÃ.substring(0, Math.min(µ±Ç°Ó¦Óó¤¶È, 100));
  676. print.log("µ±Ç°Ç°Ì¨Ó¦ÓÃÐÅÏ¢£º" + µ±Ç°Ó¦ÓÃÏÔʾ);

  677. print.log("&#128161; Ó¦ÓùÜÀíÁ÷³Ì£ºÆô¶¯ ¡ú ²Ù×÷ ¡ú ÑéÖ¤ ¡ú ¹Ø±Õ");

  678. // ========== 28. µçÔ´¼ü²Ù×÷£¨×îºóÖ´ÐУ©==========
  679. print.log("\n--- 28. µçÔ´¼ü²Ù×÷ ---");
  680. print.log("˵Ã÷£ºÒƵ½×îºóÖ´ÐУ¬±ÜÃâÌáǰ¹ØÆÁÓ°ÏìºóÐø²Ù×÷");
  681. agent.power();     // ¿ª»ú¼ü
  682. print.log("✓ °´Ï¿ª»ú¼ü£¨¹ØÆÁ£©");

  683. print.log("\n===== ʾÀý½áÊø =====");
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

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

¹Ø±Õ

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

map2

GMT+8, 2026-7-6 07:38 , Processed in 0.177578 second(s), 35 queries .

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