注册 登录
发贴工具
查看: 7|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] AIWROK软件自动找图利用agent代理模式删除应用版示例

[复制链接]

2588

主题

2636

帖子

1万

积分

积分
15704
跳转到指定楼层
楼主
AIWROK软件自动找图利用agent代理模式删除应用版示例
AIWROK软件自动找图利用agent代理模式删除应用版示例 群发软件发帖工具
AIWROK软件自动找图利用agent代理模式删除应用版示例 群发软件发帖工具

  1. //// AIWROK软件自动找图利用agent代理模式删除应用版示例
  2. // 使用图色功能实现桌面应用删除流程

  3. // ========== 配置区(修改这里即可适配不同场景)==========
  4. var CV_FILE_APP_1 = '图色1.cv';
  5. var CV_FILE_APP_2 = '图色2.cv';
  6. var CV_FILE_TRASH = '垃圾箱.cv';

  7. print.log("===== agent 代理 API 删除应用版示例 =====");

  8. print.log("📌 配置信息:应用1CV=" + CV_FILE_APP_1 + ",应用2CV=" + CV_FILE_APP_2 + ",垃圾箱CV=" + CV_FILE_TRASH);
  9. print.log("📌 重要提示:请确保手机屏幕当前显示桌面!");

  10. var 屏幕宽 = screen.getScreenWidth();
  11. var 屏幕高 = screen.getScreenHeight();
  12. print.log("当前屏幕:" + 屏幕宽 + " x " + 屏幕高);

  13. // ========== 核心找图函数 ==========
  14. function 调用找图(cv文件名) {
  15.     var detects = null;
  16.     try {
  17.         detects = opencv.findImagesEx(cv文件名);
  18.         if (detects != null) {
  19.             var len = 0;
  20.             try { len = detects.length; } catch (e) { len = 0; }
  21.             if (len > 0) {
  22.                 print.log("✓ 使用 '" + cv文件名 + "' 格式调用成功");
  23.                 return detects;
  24.             }
  25.         }
  26.     } catch (e) {
  27.         print.log("⚠ '" + cv文件名 + "' 格式调用异常:" + e.message);
  28.     }
  29.     var 纯数字ID = cv文件名.replace(/[^0-9]/g, "");
  30.     if (纯数字ID !== "" && 纯数字ID !== cv文件名) {
  31.         try {
  32.             detects = opencv.findImagesEx(纯数字ID);
  33.             if (detects != null) {
  34.                 var len2 = 0;
  35.                 try { len2 = detects.length; } catch (e) { len2 = 0; }
  36.                 if (len2 > 0) {
  37.                     print.log("✓ 使用纯数字ID '" + 纯数字ID + "' 格式调用成功");
  38.                     return detects;
  39.                 }
  40.             }
  41.         } catch (e) {
  42.             print.log("⚠ 纯数字ID '" + 纯数字ID + "' 格式调用异常:" + e.message);
  43.         }
  44.     }
  45.     return null;
  46. }

  47. function 找图获取坐标(cv文件名) {
  48.     var detects = 调用找图(cv文件名);
  49.     if (detects == null) return null;
  50.     var 长度 = 0;
  51.     try {
  52.         长度 = detects.length;
  53.     } catch (e) {
  54.         长度 = 0;
  55.     }
  56.     if (长度 === 0) return null;
  57.     var dStr = "";
  58.     try {
  59.         dStr = "" + detects[0];
  60.     } catch (e) {
  61.         return null;
  62.     }
  63.     if (dStr === "null" || dStr === "" || dStr === "undefined") return null;
  64.     var m = dStr.match(/矩形区域:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  65.     if (m) {
  66.         var left = parseFloat(m[1]);
  67.         var top = parseFloat(m[2]);
  68.         var right = parseFloat(m[3]);
  69.         var bottom = parseFloat(m[4]);
  70.         return {
  71.             left: left,
  72.             top: top,
  73.             right: right,
  74.             bottom: bottom,
  75.             centerX: (left + right) / 2,
  76.             centerY: (top + bottom) / 2,
  77.             width: right - left,
  78.             height: bottom - top
  79.         };
  80.     }
  81.     return null;
  82. }

  83. function 找图点击(cv文件名, 描述) {
  84.     var 坐标 = 找图获取坐标(cv文件名);
  85.     if (!坐标) {
  86.         print.log("✗ 未找到【" + 描述 + "】的图色匹配");
  87.         return false;
  88.     }
  89.     agent.clickPercent(坐标.centerX, 坐标.centerY);
  90.     print.log("✓ 已点击【" + 描述 + "】(图色匹配),百分比坐标(" + 坐标.centerX.toFixed(4) + "," + 坐标.centerY.toFixed(4) + ")");
  91.     return true;
  92. }

  93. function 等待找图成功(cv文件名, 描述, 超时秒) {
  94.     var 开始时间 = Date.now();
  95.     var 超时毫秒 = 超时秒 * 1000;

  96.     while (Date.now() - 开始时间 < 超时毫秒) {
  97.         var 坐标 = 找图获取坐标(cv文件名);
  98.         if (坐标) {
  99.             var 已等待 = Math.floor((Date.now() - 开始时间) / 1000);
  100.             print.log("✓ 在 " + 已等待 + " 秒后找到【" + 描述 + "】");
  101.             return 坐标;
  102.         }
  103.         sleep.second(秒 = 1);
  104.     }
  105.     print.log("✗ 等待 " + 超时秒 + " 秒后未找到【" + 描述 + "】");
  106.     return null;
  107. }

  108. // ========== 获取UI源码函数 ==========
  109. function 获取UI() {
  110.     var 临时文件 = "/sdcard/ui_dump.xml";
  111.     agent.shell("uiautomator dump --compressed " + 临时文件 + " 2>/dev/null");
  112.     var 结果 = agent.shell("cat " + 临时文件);
  113.    
  114.     if (!结果) return "";
  115.    
  116.     var 结果字符串 = "";
  117.     if (typeof 结果 === "string") {
  118.         结果字符串 = 结果;
  119.     } else if (结果.toString) {
  120.         结果字符串 = 结果.toString();
  121.     } else {
  122.         结果字符串 = "" + 结果;
  123.     }
  124.    
  125.     var startIdx = -1;
  126.     if (typeof 结果字符串.indexOf === "function") {
  127.         startIdx = 结果字符串.indexOf("successMsg:");
  128.     }
  129.    
  130.     var content = "";
  131.     if (startIdx !== -1) {
  132.         var afterSuccess = 结果字符串.substring(startIdx + 11);
  133.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  134.         if (errorIdx !== -1) {
  135.             content = afterSuccess.substring(0, errorIdx);
  136.             var endMarker = content.indexOf("UI hierchary dumped to:");
  137.             if (endMarker !== -1) {
  138.                 content = content.substring(0, endMarker);
  139.             }
  140.         } else {
  141.             content = afterSuccess;
  142.         }
  143.         content = content.trim();
  144.     } else {
  145.         content = 结果字符串;
  146.     }
  147.    
  148.     return "" + content;
  149. }

  150. // ========== 删除应用函数(使用touchDown/touchMove/touchUp正确用法)==========
  151. function 删除应用(appCvFile, trashCvFile, appName) {
  152.     print.log("\n--- 开始删除【" + appName + "】---");
  153.    
  154.     var app坐标 = 找图获取坐标(appCvFile);
  155.     if (!app坐标) {
  156.         print.log("✗ 未找到【" + appName + "】图标");
  157.         return false;
  158.     }
  159.     print.log("✓ 找到【" + appName + "】图标,中心坐标(" + app坐标.centerX.toFixed(4) + ", " + app坐标.centerY.toFixed(4) + ")");
  160.    
  161.     var appX = Math.floor(app坐标.centerX * 屏幕宽);
  162.     var appY = Math.floor(app坐标.centerY * 屏幕高);
  163.    
  164.     var trashX = Math.floor(屏幕宽 * 0.15);
  165.     var trashY = 60;
  166.     print.log("&#128204; 使用垃圾桶中心点坐标:(" + trashX + ", " + trashY + ")");
  167.    
  168.     var 触摸id = 0;
  169.    
  170.     print.log("&#128260; touchDown(" + 触摸id + ", " + appX + ", " + appY + ")");
  171.     agent.touchDown(触摸id, appX, appY);
  172.    
  173.     print.log("&#128260; 长按3秒触发编辑模式...");
  174.     for (var i = 0; i < 30; i++) {
  175.         agent.touchMove(触摸id, appX, appY);
  176.         sleep.millisecond(毫秒 = 100);
  177.     }
  178.    
  179.     print.log("&#128260; 直接拖动到顶部卸载按钮...");
  180.     var stepX = (trashX - appX) / 30;
  181.     var stepY = (trashY - appY) / 30;
  182.     for (var i = 1; i <= 30; i++) {
  183.         var currX = Math.floor(appX + stepX * i);
  184.         var currY = Math.floor(appY + stepY * i);
  185.         agent.touchMove(触摸id, currX, currY);
  186.         sleep.millisecond(毫秒 = 50);
  187.     }
  188.    
  189.     print.log("&#128260; 在卸载区域停留2秒等待变红...");
  190.     for (var i = 0; i < 20; i++) {
  191.         agent.touchMove(触摸id, trashX, trashY);
  192.         sleep.millisecond(毫秒 = 100);
  193.     }
  194.    
  195.     print.log("&#128260; touchUp(" + 触摸id + ")");
  196.     agent.touchUp(触摸id);
  197.    
  198.     sleep.second(秒 = 3);
  199.    
  200.     print.log("✓ 【" + appName + "】删除操作完成");
  201.     return true;
  202. }

  203. // ========== 获取桌面游戏包名 ==========
  204. print.log("\n--- 步骤1:获取桌面UI源码 ---");
  205. var xml = 获取UI();
  206. print.log("✓ 获取UI源码成功,长度:" + xml.length);

  207. print.log("\n--- 步骤2:提取桌面应用包名 ---");
  208. var packageRegex = /package="([^"]+)"/g;
  209. var packages = [];
  210. var match;
  211. while ((match = packageRegex.exec(xml)) !== null) {
  212.     var pkg = match[1];
  213.     if (pkg.indexOf("launcher") === -1 && pkg.indexOf("system") === -1 && packages.indexOf(pkg) === -1) {
  214.         packages.push(pkg);
  215.     }
  216. }

  217. print.log("&#128241; 桌面应用包名列表:");
  218. for (var i = 0; i < packages.length; i++) {
  219.     print.log("  " + (i + 1) + ". " + packages[i]);
  220. }

  221. // ========== 删除第一个应用(图色1.cv)==========
  222. print.log("\n--- 步骤3:删除应用1(" + CV_FILE_APP_1 + ")---");

  223. print.log("\n&#128204; 子步骤3.1:打开应用1");
  224. if (找图点击(CV_FILE_APP_1, "应用1图标")) {
  225.     sleep.second(秒 = 3);
  226.     print.log("✓ 应用1已打开");
  227.    
  228.     print.log("\n&#128204; 子步骤3.2:返回桌面");
  229.     agent.home();
  230.     sleep.second(秒 = 2);
  231.     print.log("✓ 已返回桌面");
  232. } else {
  233.     print.log("⚠ 应用1未找到,跳过打开步骤");
  234. }

  235. print.log("\n&#128204; 子步骤3.3:长按应用1图标拖到垃圾箱");
  236. 删除应用(CV_FILE_APP_1, CV_FILE_TRASH, "应用1");

  237. sleep.second(秒 = 3);

  238. // ========== 删除第二个应用(图色2.cv)==========
  239. print.log("\n--- 步骤4:删除应用2(" + CV_FILE_APP_2 + ")---");

  240. print.log("\n&#128204; 子步骤4.1:打开应用2");
  241. if (找图点击(CV_FILE_APP_2, "应用2图标")) {
  242.     sleep.second(秒 = 3);
  243.     print.log("✓ 应用2已打开");
  244.    
  245.     print.log("\n&#128204; 子步骤4.2:关闭应用2并返回桌面");
  246.     agent.home();
  247.     sleep.second(秒 = 2);
  248.     print.log("✓ 已返回桌面");
  249. } else {
  250.     print.log("⚠ 应用2未找到,跳过打开步骤");
  251. }

  252. print.log("\n&#128204; 子步骤4.3:长按应用2图标拖到垃圾箱");
  253. 删除应用(CV_FILE_APP_2, CV_FILE_TRASH, "应用2");

  254. sleep.second(秒 = 3);

  255. // ========== 验证删除结果 ==========
  256. print.log("\n--- 步骤5:验证删除结果 ---");

  257. var app1存在 = false;
  258. var app2存在 = false;

  259. try {
  260.     app1存在 = 调用找图(CV_FILE_APP_1) != null;
  261. } catch (e) {}

  262. try {
  263.     app2存在 = 调用找图(CV_FILE_APP_2) != null;
  264. } catch (e) {}

  265. print.log("&#128269; 验证结果:");
  266. print.log("  应用1(" + CV_FILE_APP_1 + "):" + (app1存在 ? "✗ 仍存在" : "✓ 已删除"));
  267. print.log("  应用2(" + CV_FILE_APP_2 + "):" + (app2存在 ? "✗ 仍存在" : "✓ 已删除"));

  268. print.log("\n===== 删除应用示例结束 =====");
复制代码


AIWROK软件自动找图利用agent代理模式删除应用版示例 群发软件发帖工具

unto解析Kimi返回的拖动距离示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖