|
|
AIWROKÈí¼þ×Ô¶¯ÕÒͼÀûÓÃagent´úÀíģʽɾ³ýÓ¦ÓðæÊ¾Àý
- //// AIWROKÈí¼þ×Ô¶¯ÕÒͼÀûÓÃagent´úÀíģʽɾ³ýÓ¦ÓðæÊ¾Àý
- // ʹÓÃͼɫ¹¦ÄÜʵÏÖ×ÀÃæÓ¦ÓÃɾ³ýÁ÷³Ì
- // ========== ÅäÖÃÇø£¨ÐÞ¸ÄÕâÀï¼´¿ÉÊÊÅ䲻ͬ³¡¾°£©==========
- var CV_FILE_APP_1 = 'ͼɫ1.cv';
- var CV_FILE_APP_2 = 'ͼɫ2.cv';
- var CV_FILE_TRASH = 'À¬»øÏä.cv';
- print.log("===== agent ´úÀí API ɾ³ýÓ¦ÓðæÊ¾Àý =====");
- print.log("📌 ÅäÖÃÐÅÏ¢£ºÓ¦ÓÃ1CV=" + CV_FILE_APP_1 + "£¬Ó¦ÓÃ2CV=" + CV_FILE_APP_2 + "£¬À¬»øÏäCV=" + CV_FILE_TRASH);
- print.log("📌 ÖØÒªÌáʾ£ºÇëÈ·±£ÊÖ»úÆÁÄ»µ±Ç°ÏÔʾ×ÀÃæ£¡");
- var ÆÁÄ»¿í = screen.getScreenWidth();
- var ÆÁÄ»¸ß = screen.getScreenHeight();
- print.log("µ±Ç°ÆÁÄ»£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);
- // ========== ºËÐÄÕÒͼº¯Êý ==========
- function µ÷ÓÃÕÒͼ(cvÎļþÃû) {
- var detects = null;
- try {
- detects = opencv.findImagesEx(cvÎļþÃû);
- if (detects != null) {
- var len = 0;
- try { len = detects.length; } catch (e) { len = 0; }
- if (len > 0) {
- print.log("✓ ʹÓà '" + cvÎļþÃû + "' ¸ñʽµ÷Óóɹ¦");
- return detects;
- }
- }
- } catch (e) {
- print.log("⚠ '" + cvÎļþÃû + "' ¸ñʽµ÷ÓÃÒì³££º" + e.message);
- }
- var ´¿Êý×ÖID = cvÎļþÃû.replace(/[^0-9]/g, "");
- if (´¿Êý×ÖID !== "" && ´¿Êý×ÖID !== cvÎļþÃû) {
- try {
- detects = opencv.findImagesEx(´¿Êý×ÖID);
- if (detects != null) {
- var len2 = 0;
- try { len2 = detects.length; } catch (e) { len2 = 0; }
- if (len2 > 0) {
- print.log("✓ ʹÓô¿Êý×ÖID '" + ´¿Êý×ÖID + "' ¸ñʽµ÷Óóɹ¦");
- return detects;
- }
- }
- } catch (e) {
- print.log("⚠ ´¿Êý×ÖID '" + ´¿Êý×ÖID + "' ¸ñʽµ÷ÓÃÒì³££º" + e.message);
- }
- }
- return null;
- }
- function ÕÒͼ»ñÈ¡×ø±ê(cvÎļþÃû) {
- var detects = µ÷ÓÃÕÒͼ(cvÎļþÃû);
- if (detects == null) return null;
- var ³¤¶È = 0;
- try {
- ³¤¶È = detects.length;
- } catch (e) {
- ³¤¶È = 0;
- }
- if (³¤¶È === 0) return null;
- var dStr = "";
- try {
- dStr = "" + detects[0];
- } catch (e) {
- return null;
- }
- if (dStr === "null" || dStr === "" || dStr === "undefined") return null;
- var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
- if (m) {
- var left = parseFloat(m[1]);
- var top = parseFloat(m[2]);
- var right = parseFloat(m[3]);
- var bottom = parseFloat(m[4]);
- return {
- left: left,
- top: top,
- right: right,
- bottom: bottom,
- centerX: (left + right) / 2,
- centerY: (top + bottom) / 2,
- width: right - left,
- height: bottom - top
- };
- }
- return null;
- }
- function ÕÒͼµã»÷(cvÎļþÃû, ÃèÊö) {
- var ×ø±ê = ÕÒͼ»ñÈ¡×ø±ê(cvÎļþÃû);
- if (!×ø±ê) {
- print.log("✗ δÕÒµ½¡¾" + ÃèÊö + "¡¿µÄͼɫƥÅä");
- return false;
- }
- agent.clickPercent(×ø±ê.centerX, ×ø±ê.centerY);
- print.log("✓ Òѵã»÷¡¾" + ÃèÊö + "¡¿£¨Í¼É«Æ¥Å䣩£¬°Ù·Ö±È×ø±ê(" + ×ø±ê.centerX.toFixed(4) + "," + ×ø±ê.centerY.toFixed(4) + ")");
- return true;
- }
- function µÈ´ýÕÒͼ³É¹¦(cvÎļþÃû, ÃèÊö, ³¬Ê±Ãë) {
- var ¿ªÊ¼Ê±¼ä = Date.now();
- var ³¬Ê±ºÁÃë = ³¬Ê±Ãë * 1000;
- while (Date.now() - ¿ªÊ¼Ê±¼ä < ³¬Ê±ºÁÃë) {
- var ×ø±ê = ÕÒͼ»ñÈ¡×ø±ê(cvÎļþÃû);
- if (×ø±ê) {
- var Òѵȴý = Math.floor((Date.now() - ¿ªÊ¼Ê±¼ä) / 1000);
- print.log("✓ ÔÚ " + Òѵȴý + " ÃëºóÕÒµ½¡¾" + ÃèÊö + "¡¿");
- return ×ø±ê;
- }
- sleep.second(Ãë = 1);
- }
- print.log("✗ µÈ´ý " + ³¬Ê±Ãë + " ÃëºóδÕÒµ½¡¾" + ÃèÊö + "¡¿");
- return null;
- }
- // ========== »ñÈ¡UIÔ´Â뺯Êý ==========
- 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;
- }
- // ========== ɾ³ýÓ¦Óú¯Êý£¨Ê¹ÓÃtouchDown/touchMove/touchUpÕýÈ·Ó÷¨£©==========
- function ɾ³ýÓ¦ÓÃ(appCvFile, trashCvFile, appName) {
- print.log("\n--- ¿ªÊ¼É¾³ý¡¾" + appName + "¡¿---");
-
- var app×ø±ê = ÕÒͼ»ñÈ¡×ø±ê(appCvFile);
- if (!app×ø±ê) {
- print.log("✗ δÕÒµ½¡¾" + appName + "¡¿Í¼±ê");
- return false;
- }
- print.log("✓ ÕÒµ½¡¾" + appName + "¡¿Í¼±ê£¬ÖÐÐÄ×ø±ê(" + app×ø±ê.centerX.toFixed(4) + ", " + app×ø±ê.centerY.toFixed(4) + ")");
-
- var appX = Math.floor(app×ø±ê.centerX * ÆÁÄ»¿í);
- var appY = Math.floor(app×ø±ê.centerY * ÆÁÄ»¸ß);
-
- var trashX = Math.floor(ÆÁÄ»¿í * 0.15);
- var trashY = 60;
- print.log("📌 ʹÓÃÀ¬»øÍ°ÖÐÐĵã×ø±ê£º(" + trashX + ", " + trashY + ")");
-
- var ´¥Ãþid = 0;
-
- print.log("🔄 touchDown(" + ´¥Ãþid + ", " + appX + ", " + appY + ")");
- agent.touchDown(´¥Ãþid, appX, appY);
-
- print.log("🔄 ³¤°´3Ãë´¥·¢±à¼Ä£Ê½...");
- for (var i = 0; i < 30; i++) {
- agent.touchMove(´¥Ãþid, appX, appY);
- sleep.millisecond(ºÁÃë = 100);
- }
-
- print.log("🔄 Ö±½ÓÍ϶¯µ½¶¥²¿Ð¶Ôذ´Å¥...");
- var stepX = (trashX - appX) / 30;
- var stepY = (trashY - appY) / 30;
- for (var i = 1; i <= 30; i++) {
- var currX = Math.floor(appX + stepX * i);
- var currY = Math.floor(appY + stepY * i);
- agent.touchMove(´¥Ãþid, currX, currY);
- sleep.millisecond(ºÁÃë = 50);
- }
-
- print.log("🔄 ÔÚÐ¶ÔØÇøÓòÍ£Áô2ÃëµÈ´ý±äºì...");
- for (var i = 0; i < 20; i++) {
- agent.touchMove(´¥Ãþid, trashX, trashY);
- sleep.millisecond(ºÁÃë = 100);
- }
-
- print.log("🔄 touchUp(" + ´¥Ãþid + ")");
- agent.touchUp(´¥Ãþid);
-
- sleep.second(Ãë = 3);
-
- print.log("✓ ¡¾" + appName + "¡¿É¾³ý²Ù×÷Íê³É");
- return true;
- }
- // ========== »ñÈ¡×ÀÃæÓÎÏ·°üÃû ==========
- print.log("\n--- ²½Öè1£º»ñÈ¡×ÀÃæUIÔ´Âë ---");
- var xml = »ñÈ¡UI();
- print.log("✓ »ñÈ¡UIÔ´Âë³É¹¦£¬³¤¶È£º" + xml.length);
- print.log("\n--- ²½Öè2£ºÌáÈ¡×ÀÃæÓ¦ÓðüÃû ---");
- var packageRegex = /package="([^"]+)"/g;
- var packages = [];
- var match;
- while ((match = packageRegex.exec(xml)) !== null) {
- var pkg = match[1];
- if (pkg.indexOf("launcher") === -1 && pkg.indexOf("system") === -1 && packages.indexOf(pkg) === -1) {
- packages.push(pkg);
- }
- }
- print.log("📱 ×ÀÃæÓ¦ÓðüÃûÁÐ±í£º");
- for (var i = 0; i < packages.length; i++) {
- print.log(" " + (i + 1) + ". " + packages[i]);
- }
- // ========== ɾ³ýµÚÒ»¸öÓ¦Óã¨Í¼É«1.cv£©==========
- print.log("\n--- ²½Öè3£ºÉ¾³ýÓ¦ÓÃ1£¨" + CV_FILE_APP_1 + "£©---");
- print.log("\n📌 ×Ó²½Öè3.1£º´ò¿ªÓ¦ÓÃ1");
- if (ÕÒͼµã»÷(CV_FILE_APP_1, "Ó¦ÓÃ1ͼ±ê")) {
- sleep.second(Ãë = 3);
- print.log("✓ Ó¦ÓÃ1ÒÑ´ò¿ª");
-
- print.log("\n📌 ×Ó²½Öè3.2£º·µ»Ø×ÀÃæ");
- agent.home();
- sleep.second(Ãë = 2);
- print.log("✓ ÒÑ·µ»Ø×ÀÃæ");
- } else {
- print.log("⚠ Ó¦ÓÃ1δÕÒµ½£¬Ìø¹ý´ò¿ª²½Öè");
- }
- print.log("\n📌 ×Ó²½Öè3.3£º³¤°´Ó¦ÓÃ1ͼ±êÍϵ½À¬»øÏä");
- ɾ³ýÓ¦ÓÃ(CV_FILE_APP_1, CV_FILE_TRASH, "Ó¦ÓÃ1");
- sleep.second(Ãë = 3);
- // ========== ɾ³ýµÚ¶þ¸öÓ¦Óã¨Í¼É«2.cv£©==========
- print.log("\n--- ²½Öè4£ºÉ¾³ýÓ¦ÓÃ2£¨" + CV_FILE_APP_2 + "£©---");
- print.log("\n📌 ×Ó²½Öè4.1£º´ò¿ªÓ¦ÓÃ2");
- if (ÕÒͼµã»÷(CV_FILE_APP_2, "Ó¦ÓÃ2ͼ±ê")) {
- sleep.second(Ãë = 3);
- print.log("✓ Ó¦ÓÃ2ÒÑ´ò¿ª");
-
- print.log("\n📌 ×Ó²½Öè4.2£º¹Ø±ÕÓ¦ÓÃ2²¢·µ»Ø×ÀÃæ");
- agent.home();
- sleep.second(Ãë = 2);
- print.log("✓ ÒÑ·µ»Ø×ÀÃæ");
- } else {
- print.log("⚠ Ó¦ÓÃ2δÕÒµ½£¬Ìø¹ý´ò¿ª²½Öè");
- }
- print.log("\n📌 ×Ó²½Öè4.3£º³¤°´Ó¦ÓÃ2ͼ±êÍϵ½À¬»øÏä");
- ɾ³ýÓ¦ÓÃ(CV_FILE_APP_2, CV_FILE_TRASH, "Ó¦ÓÃ2");
- sleep.second(Ãë = 3);
- // ========== Ñé֤ɾ³ý½á¹û ==========
- print.log("\n--- ²½Öè5£ºÑé֤ɾ³ý½á¹û ---");
- var app1´æÔÚ = false;
- var app2´æÔÚ = false;
- try {
- app1´æÔÚ = µ÷ÓÃÕÒͼ(CV_FILE_APP_1) != null;
- } catch (e) {}
- try {
- app2´æÔÚ = µ÷ÓÃÕÒͼ(CV_FILE_APP_2) != null;
- } catch (e) {}
- print.log("🔍 ÑéÖ¤½á¹û£º");
- print.log(" Ó¦ÓÃ1£¨" + CV_FILE_APP_1 + "£©£º" + (app1´æÔÚ ? "✗ ÈÔ´æÔÚ" : "✓ ÒÑɾ³ý"));
- print.log(" Ó¦ÓÃ2£¨" + CV_FILE_APP_2 + "£©£º" + (app2´æÔÚ ? "✗ ÈÔ´æÔÚ" : "✓ ÒÑɾ³ý"));
- print.log("\n===== ɾ³ýÓ¦ÓÃʾÀý½áÊø =====");
¸´ÖÆ´úÂë
|
|