B2B网络软件

 找回密码
 立即注册 审核网站号:QQ:896757558
搜索
查看: 1|回复: 0
打印 上一主题 下一主题

clickPercent天然适配不同分辨率找控件点击

[复制链接]

1191

主题

1196

帖子

8041

积分

abc

Rank: 9Rank: 9Rank: 9

积分
8041
跳转到指定楼层
楼主


clickPercent天然适配不同分辨率找控件点击
clickPercent天然适配不同分辨率找控件点击 B2B网络软件


clickPercent天然适配不同分辨率找控件点击 B2B网络软件






  1. /**
  2. * 案例 8:clickPercent天然适配不同分辨率找控件点击
  3. *
  4. * 只教一件事:怎么用 auto.nodeSearch 在当前页面找到控件并点进去。
  5. * 控件查找比找图/OCR 都稳——不用做模板、不受分辨率影响、文字变了也不怕。
  6. *
  7. * 演示流程:打开快手 → 找弹窗上的 "不再提示" → 算中心坐标点掉 →
  8. *           再搜一次,节点消失即为点成功。
  9. *
  10. * 运行:真机/模拟器上直接跑(要开无障碍服务),不需要任何资源文件。
  11. * 改成自己的业务:只要把 CAND_WORDS 换成你要找的文字,APP_PKG 换成目标包名。
  12. */

  13. // ==================== 配置(改这里)====================
  14. var APP_PKG = "com.smile.gifmaker";                          // 快手
  15. var CAND_WORDS = ["不再提示", "不再显示", "我知道了"];         // 候选词:命中哪个点哪个
  16. var SEARCH_TIMEOUT = 3000;                                   // 节点搜索超时(ms)
  17. var WAIT_AFTER_OPEN = 3500;                                  // 打开后等待弹窗出现的时长(ms)

  18. // ==================== 全局变量放顶部 ====================
  19. var gFoundWord = "";

  20. // ==================== 工具 ====================
  21. function doSleep(ms) { sleep.millisecond(ms); }

  22. // ==================== 核心:按候选词找控件 ====================
  23. // auto.nodeSearch(超时).textIncludes(词) 返回节点集合;
  24. // 集合为空时是 ''(不是 null),这是 AIWROK 的固定判断写法
  25. function findNodeByText(texts, timeout) {
  26.   for (var i = 0; i < texts.length; i++) {
  27.     var nodesObj = auto.nodeSearch(timeout).textIncludes(texts[i]);
  28.     if (nodesObj != '') {
  29.       var nodeObj = nodesObj.getNode(0);
  30.       return { node: nodeObj, word: texts[i] };
  31.     }
  32.   }
  33.   return null;
  34. }

  35. // ==================== 主流程 ====================
  36. function runMain() {
  37.   printl("╔════════════════════════════════════════╗");
  38.   printl("║  案例8:找控件点击 nodeSearch          ║");
  39.   printl("╚════════════════════════════════════════╝");

  40.   // ---- 1. 打开快手 ----
  41.   app.openApp(APP_PKG);
  42.   doSleep(WAIT_AFTER_OPEN);   // 等冷启动 + 弹窗出现
  43.   printl("[打开] 当前页面: " + app.getCurrentActivity());

  44.   // ---- 2. 找弹窗上的控件 ----
  45.   var found = findNodeByText(CAND_WORDS, SEARCH_TIMEOUT);
  46.   if (found == null) {
  47.     printl("[失败] 页面上没有候选词: " + CAND_WORDS.join("/"));
  48.     try { toast.show("没找到" + CAND_WORDS[0] + ",可能没弹窗"); } catch (e) {}
  49.     return;   // 找不到就体面退出,绝不硬点
  50.   }
  51.   gFoundWord = found.word;
  52.   printl("[找到] \"" + gFoundWord + "\" 文本=" + found.node.getText());

  53.   // ---- 3. 算中心坐标并点击 ----
  54.   // getCenterPoint() 带 XPercent()/YPercent(),是百分比坐标,
  55.   // 配合 auto.clickPercent 天然适配不同分辨率
  56.   var p = found.node.getCenterPoint();
  57.   var xp = p.XPercent();
  58.   var yp = p.YPercent();
  59.   printl("[坐标] 中心 = (" + xp.toFixed(3) + ", " + yp.toFixed(3) + ")");
  60.   auto.clickPercent(xp, yp);
  61.   doSleep(1500);

  62.   // ---- 4. 验证:再搜一次,节点消失 = 点掉了 ----
  63.   // 弹窗类操作不能靠 Activity 跳转验证,看"目标还在不在"最直接
  64.   var again = findNodeByText(CAND_WORDS, 1500);
  65.   if (again == null) {
  66.     printl("[验证] ✅ \"" + gFoundWord + "\" 已消失,点击成功");
  67.     try { toast.show("✅ 弹窗已点掉"); } catch (e) {}
  68.   } else {
  69.     printl("[验证] ⚠ \"" + again.word + "\" 还在,可能没点中或弹窗刷新了");
  70.     try { toast.show("已点击,但控件还在"); } catch (e) {}
  71.   }

  72.   printl("[结束]");
  73. }

  74. runMain();
复制代码


回复

使用道具 举报

本版积分规则

关闭

QQ|»营销软件综合讨论|»营销软件有问必答|»营销软件教程专区|»营销软件POST脚本分享|»营销软件普通脚本分享|»营销软件软件资讯|»营销软件精品软件|»营销软件更新公告|营销软件|B2B软件|B2B网络软件 ( 京ICP备09078825号 )本网站开发的营销软件是一款新的网络营销软件,这款营销可以去网站软件,博客软件,B2B软件,分类信息网发贴,可以抢沙发,可以到百度文库上传WORD文档,可以到一些是相册网站自动上传图片,这个自动发帖软件自带云蜘蛛,加快收录,有6种对接打码接口,方便,效率高,速度快,而且对拖动的验证码全网第一家独家支持,全部原创技术,独家研发,正版原创带版权软件。选择万能营销软件,就选择了一种赚钱的效率,从没有被超越过,一直在努力研发新技术。放飞梦想,解放双手,来点创意,成就你的梦想,就在万能营销软件开始

map2

GMT+8, 2026-10-14 07:20 , Processed in 0.078096 second(s), 33 queries .

快速回复 返回顶部 返回列表