|
|
Æô¶¯¼«ËÙ°æÈÎÎñÒ³¿´Ð¡Ëµ×¬Ç®×Ô¶¯ÔĶÁ
- // AIWROK ÍêÕû×Ô¶¯»¯Á÷³Ì£ºÆô¶¯¼«ËÙ°æÈÎÎñÒ³¿´Ð¡Ëµ×¬Ç®×Ô¶¯ÔĶÁ
- // È«³ÌʹÓà agent ·½Ê½²Ù×÷£¬²»ÒÀÀµÎÞÕϰȨÏÞ
- print.log("===== ¼«Ëٰ濴С˵×öÈÎÎñÁ÷³ÌÆô¶¯ =====");
- print.time();
- // ========== ¹¤¾ßº¯Êý ==========
- function Ö´ÐÐShell(ÃüÁî) {
- var ½á¹û = agent.shell(ÃüÁî);
- if (!½á¹û) return "";
-
- var ½á¹û×Ö·û´® = "";
- if (typeof ½á¹û === "string") {
- ½á¹û×Ö·û´® = ½á¹û;
- } else if (½á¹û.toString) {
- ½á¹û×Ö·û´® = ½á¹û.toString();
- } else {
- ½á¹û×Ö·û´® = "" + ½á¹û;
- }
-
- var startIdx = -1;
- if (typeof ½á¹û×Ö·û´®.indexOf === "function") {
- startIdx = ½á¹û×Ö·û´®.indexOf("successMsg:");
- }
-
- if (startIdx !== -1) {
- var afterSuccess = ½á¹û×Ö·û´®.substring(startIdx + 11);
- var errorIdx = afterSuccess.indexOf(",errorMsg:");
- if (errorIdx !== -1) {
- var content = afterSuccess.substring(0, errorIdx);
- var endMarker = content.indexOf("UI hierchary dumped to:");
- if (endMarker !== -1) {
- content = content.substring(0, endMarker);
- }
- return "" + content.trim();
- }
- return "" + afterSuccess.trim();
- }
-
- return "" + ½á¹û×Ö·û´®;
- }
- function »ñÈ¡UI() {
- var ÁÙʱÎļþ = "/sdcard/ui_dump.xml";
- agent.shell("uiautomator dump --compressed " + ÁÙʱÎļþ + " 2>/dev/null");
- var ½á¹û = agent.shell("cat " + ÁÙʱÎļþ);
-
- if (!½á¹û) return "";
-
- var ½á¹û×Ö·û´® = "";
- if (typeof ½á¹û === "string") {
- ½á¹û×Ö·û´® = ½á¹û;
- } else if (½á¹û.toString) {
- ½á¹û×Ö·û´® = ½á¹û.toString();
- } else {
- ½á¹û×Ö·û´® = "" + ½á¹û;
- }
-
- var startIdx = -1;
- if (typeof ½á¹û×Ö·û´®.indexOf === "function") {
- startIdx = ½á¹û×Ö·û´®.indexOf("successMsg:");
- }
-
- var content = "";
- if (startIdx !== -1) {
- var afterSuccess = ½á¹û×Ö·û´®.substring(startIdx + 11);
- var errorIdx = afterSuccess.indexOf(",errorMsg:");
- if (errorIdx !== -1) {
- content = afterSuccess.substring(0, errorIdx);
- var endMarker = content.indexOf("UI hierchary dumped to:");
- if (endMarker !== -1) {
- content = content.substring(0, endMarker);
- }
- } else {
- content = afterSuccess;
- }
- content = content.trim();
- } else {
- content = ½á¹û×Ö·û´®;
- }
-
- return "" + content;
- }
- function ×Ö·û´®³¤¶È(str) {
- if (typeof str.length === "function") {
- return str.length();
- }
- return str.length || 0;
- }
- function »ñÈ¡µ±Ç°°üÃû() {
- var uiXml = »ñÈ¡UI();
- var m = uiXml.match(/package="([^"]+)"/);
- if (m) {
- return "" + m[1];
- }
- return "";
- }
- function ²éÕÒ°üº¬ÎÄ×ֵĽڵã(xml, ¹Ø¼ü´Ê) {
- var ½ÚµãÁбí = [];
- for (var i = 0; i < ¹Ø¼ü´Ê.length; i++) {
- var ´Ê = ¹Ø¼ü´Ê[i];
- var pos = 0;
- while (true) {
- pos = xml.indexOf('text="' + ´Ê + '"', pos);
- if (pos < 0) break;
- var boundsStart = xml.indexOf('bounds="', pos);
- if (boundsStart >= 0) {
- var boundsEnd = xml.indexOf('"', boundsStart + 8);
- if (boundsEnd >= 0) {
- var boundsStr = xml.substring(boundsStart + 8, boundsEnd);
- var m = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
- if (m) {
- var node = {
- text: ´Ê,
- x1: parseInt(m[1]),
- y1: parseInt(m[2]),
- x2: parseInt(m[3]),
- y2: parseInt(m[4]),
- cx: (parseInt(m[1]) + parseInt(m[3])) / 2,
- cy: (parseInt(m[2]) + parseInt(m[4])) / 2
- };
- ½ÚµãÁбí.push(node);
- }
- }
- }
- pos += ×Ö·û´®³¤¶È(´Ê);
- }
- }
- return ½ÚµãÁбí;
- }
- function Ä£ÄâÔĶÁ(³ÖÐøÊ±¼äÃë) {
- print.log("¿ªÊ¼Ä£ÄâÔĶÁ£¬³ÖÐø " + ³ÖÐøÊ±¼äÃë + " Ãë");
- var Ê£Óàʱ¼ä = ³ÖÐøÊ±¼äÃë;
- while (Ê£Óàʱ¼ä > 0) {
- agent.swip(Math.floor(ÆÁÄ»¿í * 0.8), Math.floor(ÆÁÄ»¸ß * 0.5), Math.floor(ÆÁÄ»¿í * 0.2), Math.floor(ÆÁÄ»¸ß * 0.5), 300);
- sleep.second(Ãë = 1);
- Ê£Óàʱ¼ä -= 1;
- print.log("Ê£ÓàÔĶÁʱ¼ä£º" + Ê£Óàʱ¼ä + " Ãë");
- }
- print.log("Ä£ÄâÔĶÁ½áÊø");
- }
- // ========== ÅäÖÃÇø ==========
- var APP°üÃû = "com.ss.android.article.lite";
- var Ñ»·´ÎÊý = 5;
- var µ±Ç°Ñ»· = 0;
- var ÈÎÎñTabX = 0.5;
- var ÈÎÎñTabY = 0.9656;
- // ========== »ñÈ¡É豸ÐÅÏ¢ (agentģʽ) ==========
- var wm½á¹û = Ö´ÐÐShell("wm size");
- var m = wm½á¹û.match(/(\d+)x(\d+)/);
- var ÆÁÄ»¿í = m ? parseInt(m[1]) : 1080;
- var ÆÁÄ»¸ß = m ? parseInt(m[2]) : 2400;
- print.log("ÆÁÄ»³ß´ç£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);
- print.log("´úÀí״̬£º" + (agent.isOpen() ? "ÒÑ¿ªÆô" : "먦Æô"));
- print.log("Ä¿±êAPP£º" + APP°üÃû + " (½ñÈÕÍ·Ìõ¼«ËÙ°æ)");
- // ========================================
- // Ö÷Ñ»·¿ªÊ¼
- // ========================================
- for (µ±Ç°Ñ»· = 1; Ñ»·´ÎÊý == 0 || µ±Ç°Ñ»· <= Ñ»·´ÎÊý; µ±Ç°Ñ»·++) {
- if (Ñ»·´ÎÊý > 0) {
- print.log("\n======================================");
- print.log("===== µÚ " + µ±Ç°Ñ»· + " / " + Ñ»·´ÎÊý + " ´ÎÑ»· =====");
- print.log("======================================");
- } else {
- print.log("\n======================================");
- print.log("===== µÚ " + µ±Ç°Ñ»· + " ´ÎÑ»·£¨ÎÞÏÞģʽ£©=====");
- print.log("======================================");
- }
- // ========================================
- // ²½Öè1£ºÆô¶¯½ñÈÕÍ·Ìõ¼«ËÙ°æ
- // ========================================
- print.log("\n========== ²½Öè1£ºÆô¶¯½ñÈÕÍ·Ìõ¼«ËÙ°æ ==========");
-
- var Æô¶¯³É¹¦ = false;
- var Æô¶¯³¢ÊÔ´ÎÊý = 0;
- var ×î´óÆô¶¯³¢ÊÔ = 3;
-
- while (!Æô¶¯³É¹¦ && Æô¶¯³¢ÊÔ´ÎÊý < ×î´óÆô¶¯³¢ÊÔ) {
- Æô¶¯³¢ÊÔ´ÎÊý++;
- try {
- agent.shell("monkey -p " + APP°üÃû + " -c android.intent.category.LAUNCHER 1");
- print.log("✓ µÚ" + Æô¶¯³¢ÊÔ´ÎÊý + "´Î³¢ÊÔÆô¶¯½ñÈÕÍ·Ìõ¼«ËÙ°æ");
- } catch (e) {
- print.log("⚠ µÚ" + Æô¶¯³¢ÊÔ´ÎÊý + "´ÎÆô¶¯Ê§°Ü£º" + e.message);
- }
-
- sleep.second(Ãë = 5);
-
- var µ±Ç°Ò³Ãæ°üÃû = »ñÈ¡µ±Ç°°üÃû();
- print.log("µ±Ç°Ò³Ãæ°üÃû£º" + µ±Ç°Ò³Ãæ°üÃû);
-
- if (µ±Ç°Ò³Ãæ°üÃû === APP°üÃû) {
- Æô¶¯³É¹¦ = true;
- print.log("✓ APPÆô¶¯³É¹¦");
- } else {
- print.log("⚠ µ±Ç°Ò³Ãæ²»ÊǽñÈÕÍ·Ìõ¼«Ëٰ棬׼±¸ÖØÐÂÆô¶¯");
- }
- }
-
- if (!Æô¶¯³É¹¦) {
- print.log("✗ ¶à´Î³¢ÊÔÆô¶¯Ê§°Ü£¬Ìø¹ý±¾´ÎÑ»·");
- continue;
- }
- // ========================================
- // ²½Öè2£ºÍ¨¹ýUI½âÎöµã»÷µ×²¿¡¸ÈÎÎñ¡¹Tab
- // ========================================
- print.log("\n========== ²½Öè2£ºµã»÷ÈÎÎñTab ==========");
-
- var ÕÒµ½ÈÎÎñTab = false;
- var ³¢ÊÔ´ÎÊý2 = 0;
- var ×î´ó³¢ÊÔ´ÎÊý2 = 3;
-
- while (!ÕÒµ½ÈÎÎñTab && ³¢ÊÔ´ÎÊý2 < ×î´ó³¢ÊÔ´ÎÊý2) {
- ³¢ÊÔ´ÎÊý2++;
- var Ê×Ò³UI = »ñÈ¡UI();
- var xml³¤¶È2 = ×Ö·û´®³¤¶È(Ê×Ò³UI);
-
- print.log("µÚ " + ³¢ÊÔ´ÎÊý2 + " ´Î³¢ÊÔ»ñÈ¡Ê×Ò³UI£¬³¤¶È£º" + xml³¤¶È2);
-
- if (xml³¤¶È2 < 100) {
- print.log("UIÊý¾Ý¹ý¶Ì£¬ÖØÊÔ");
- sleep.second(Ãë = 1);
- continue;
- }
-
- var ÈÎÎñTab½Úµã = ²éÕÒ°üº¬ÎÄ×ֵĽڵã(Ê×Ò³UI, ["ÈÎÎñ"]);
-
- if (ÈÎÎñTab½Úµã.length > 0) {
- var ÈÎÎñTab = ÈÎÎñTab½Úµã[0];
- var ÈÎÎñX = (ÈÎÎñTab.x1 + ÈÎÎñTab.x2) / 2 / ÆÁÄ»¿í;
- var ÈÎÎñY = (ÈÎÎñTab.y1 + ÈÎÎñTab.y2) / 2 / ÆÁÄ»¸ß;
- agent.clickPercent(ÈÎÎñX, ÈÎÎñY);
- print.log("✓ Òѵã»÷ÈÎÎñTab£¬°Ù·Ö±È×ø±ê£º(" + ÈÎÎñX.toFixed(4) + ", " + ÈÎÎñY.toFixed(4) + ")");
- ÕÒµ½ÈÎÎñTab = true;
- } else {
- print.log("⚠ δÕÒµ½ÈÎÎñTab£¬³¢ÊÔʹÓÃĬÈÏ×ø±ê");
- agent.clickPercent(0.5, 0.9656);
- print.log("✓ ʹÓÃĬÈÏ×ø±êµã»÷ÈÎÎñTab");
- ÕÒµ½ÈÎÎñTab = true;
- }
- }
- sleep.second(Ãë = 3);
- // ========================================
- // ²½Öè3£ºÊ¹ÓÃopencvÕÒͼµã»÷¡¸¿´Ð¡Ëµ×¬Ç®¡¹
- // ========================================
- print.log("\n========== ²½Öè3£ºÊ¹ÓÃopencvÕÒͼʶ±ð¡¸¿´Ð¡Ëµ×¬Ç®¡¹Èë¿Ú ==========");
-
- var ÕÒµ½¿´Ð¡ËµÈë¿Ú = false;
- var ³¢ÊÔ´ÎÊý = 0;
- var ×î´ó³¢ÊÔ´ÎÊý = 3;
-
- while (!ÕÒµ½¿´Ð¡ËµÈë¿Ú && ³¢ÊÔ´ÎÊý < ×î´ó³¢ÊÔ´ÎÊý) {
- ³¢ÊÔ´ÎÊý++;
- print.log("µÚ " + ³¢ÊÔ´ÎÊý + " ´Î³¢ÊÔÕÒͼʶ±ð");
-
- try {
- var detects = opencv.findImagesEx('ͼɫ577630.cv');
-
- if (detects != null && detects.length > 0) {
- var Ä¿±ê×Ö·û´® = "" + detects[0];
- print.log("✓ ÕÒͼ³É¹¦£¬ÕÒµ½Ä¿±ê£º" + Ä¿±ê×Ö·û´®);
-
- var rectMatch = Ä¿±ê×Ö·û´®.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
- if (rectMatch) {
- var x1 = parseFloat(rectMatch[1]);
- var y1 = parseFloat(rectMatch[2]);
- var x2 = parseFloat(rectMatch[3]);
- var y2 = parseFloat(rectMatch[4]);
- var cx = (x1 + x2) / 2;
- var cy = (y1 + y2) / 2;
- agent.clickPercent(cx, cy);
- print.log("✓ Òѵã»÷¡¸¿´Ð¡Ëµ×¬Ç®¡¹£¬°Ù·Ö±È×ø±ê£º(" + cx.toFixed(4) + ", " + cy.toFixed(4) + ")");
- ÕÒµ½¿´Ð¡ËµÈë¿Ú = true;
- } else {
- print.log("⚠ ÎÞ·¨½âÎö¾ØÐÎÇøÓò×ø±ê");
- }
- } else {
- print.log("⚠ δÕÒµ½Ä¿±êͼƬ£¬³¢ÊÔÏòÉÏ»¬¶¯");
- agent.swip(Math.floor(ÆÁÄ»¿í * 0.5), Math.floor(ÆÁÄ»¸ß * 0.8), Math.floor(ÆÁÄ»¿í * 0.5), Math.floor(ÆÁÄ»¸ß * 0.2), 500);
- sleep.second(Ãë = 2);
- }
- } catch (e) {
- print.log("⚠ ÕÒͼʧ°Ü£º" + e.message);
- sleep.second(Ãë = 1);
- }
- }
-
- if (!ÕÒµ½¿´Ð¡ËµÈë¿Ú) {
- print.log("✗ ¶à´Î³¢ÊÔδÕÒµ½¡¸¿´Ð¡Ëµ×¬Ç®¡¹Èë¿Ú£¬Ìø¹ý±¾´ÎÑ»·");
- continue;
- }
-
- sleep.second(Ãë = 3);
- // ========================================
- // ²½Öè4£º½øÈëÐ¡ËµÒ³Ãæºó£¬Í¨¹ýUI½âÎöµã»÷µÚÒ»±¾Ð¡Ëµ
- // ========================================
- print.log("\n========== ²½Öè4£ºÑ¡ÔñС˵¿ªÊ¼ÔĶÁ ==========");
-
- var ÕÒµ½Ð¡Ëµ = false;
- var ³¢ÊÔ´ÎÊý4 = 0;
- var ×î´ó³¢ÊÔ´ÎÊý4 = 3;
-
- while (!ÕÒµ½Ð¡Ëµ && ³¢ÊÔ´ÎÊý4 < ×î´ó³¢ÊÔ´ÎÊý4) {
- ³¢ÊÔ´ÎÊý4++;
- var Ð¡ËµÒ³ÃæUI = »ñÈ¡UI();
- var xml³¤¶È4 = ×Ö·û´®³¤¶È(Ð¡ËµÒ³ÃæUI);
-
- print.log("µÚ " + ³¢ÊÔ´ÎÊý4 + " ´Î³¢ÊÔ»ñÈ¡Ð¡ËµÒ³ÃæUI£¬³¤¶È£º" + xml³¤¶È4);
-
- if (xml³¤¶È4 < 100) {
- print.log("UIÊý¾Ý¹ý¶Ì£¬ÖØÊÔ");
- sleep.second(Ãë = 1);
- continue;
- }
-
- var ÅÅÐаñ½Úµã = ²éÕÒ°üº¬ÎÄ×ֵĽڵã(Ð¡ËµÒ³ÃæUI, ["ÅÅÐаñ", "Ãâ·ÑС˵"]);
-
- if (ÅÅÐаñ½Úµã.length > 0) {
- print.log("✓ ¼ì²âµ½Ð¡ËµÒ³Ã棬²éÕÒµÚÒ»±¾Ð¡Ëµ");
- var С˵Áбí = ²éÕÒ°üº¬ÎÄ×ֵĽڵã(Ð¡ËµÒ³ÃæUI, ["ÈȶÈ", "ÔĶÁ", "1.", "1 "]);
-
- if (С˵Áбí.length > 0) {
- var µÚÒ»±¾Ð¡Ëµ = С˵Áбí[0];
- var С˵X = (µÚÒ»±¾Ð¡Ëµ.x1 + µÚÒ»±¾Ð¡Ëµ.x2) / 2 / ÆÁÄ»¿í;
- var С˵Y = (µÚÒ»±¾Ð¡Ëµ.y1 + µÚÒ»±¾Ð¡Ëµ.y2) / 2 / ÆÁÄ»¸ß;
- agent.clickPercent(С˵X, С˵Y);
- print.log("✓ Òѵã»÷µÚÒ»±¾Ð¡Ëµ£¬°Ù·Ö±È×ø±ê£º(" + С˵X.toFixed(4) + ", " + С˵Y.toFixed(4) + ")");
- ÕÒµ½Ð¡Ëµ = true;
- } else {
- agent.clickPercent(0.25, 0.45);
- print.log("✓ δÕÒµ½¾ßÌåС˵½Úµã£¬Ê¹ÓÃĬÈÏ×ø±êµã»÷");
- ÕÒµ½Ð¡Ëµ = true;
- }
- } else {
- agent.clickPercent(0.25, 0.45);
- print.log("✓ δ¼ì²âµ½ÅÅÐаñ£¬Ê¹ÓÃĬÈÏ×ø±êµã»÷");
- ÕÒµ½Ð¡Ëµ = true;
- }
- }
-
- sleep.second(Ãë = 3);
- // ========================================
- // ²½Öè5£º60Ãëµ¹¼ÆÊ±ÔĶÁ£¨×Ô¶¯·Ò³£©
- // ========================================
- print.log("\n========== ²½Öè5£º60Ãëµ¹¼ÆÊ±ÔĶÁ ==========");
- Ä£ÄâÔĶÁ(60);
- // ========================================
- // ²½Öè6£º¹Ø±ÕAPP£¬×¼±¸ÖØÐÂÆô¶¯
- // ========================================
- print.log("\n========== ²½Öè6£º¹Ø±ÕAPP ==========");
- try {
- agent.shell("am force-stop " + APP°üÃû);
- print.log("✓ ÒѹرսñÈÕÍ·Ìõ¼«ËÙ°æ");
- } catch (e) {
- print.log("⚠ ¹Ø±ÕAPPʧ°Ü£º" + e.message);
- }
- sleep.second(Ãë = 2);
- print.log("±¾´ÎÑ»·Íê³É");
- // ========================================
- // Ñ»·¼ä¸ô
- // ========================================
- if (Ñ»·´ÎÊý == 0 || µ±Ç°Ñ»· < Ñ»·´ÎÊý) {
- print.log("\n========== µÈ´ýÏÂÒ»´ÎÑ»· ==========");
- sleep.second(Ãë = 5);
- }
- }
- // ========================================
- // ½á¹û»ã×Ü
- // ========================================
- print.timeEnd();
- print.log("\n======================================");
- print.log("===== ËùÓÐÑ»·Ö´ÐÐÍê³É =====");
- if (Ñ»·´ÎÊý > 0) {
- print.log("×ܼÆÖ´ÐУº" + Ñ»·´ÎÊý + " ´Î");
- } else {
- print.log("ÎÞÏÞÑ»·Ä£Ê½£¬ÒÑÖ´ÐУº" + (µ±Ç°Ñ»· - 1) + " ´Î");
- }
- print.log("======================================");
¸´ÖÆ´úÂë
|
|