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

[24小时收录超级好的网站] 安卓脚本HID节点查找完整方法示例

[复制链接]

2565

主题

2613

帖子

1万

积分

积分
15566
跳转到指定楼层
楼主
安卓脚本HID节点查找完整方法示例
安卓脚本HID节点查找完整方法示例 群发软件发帖工具
  1. // ==================== HID 节点查找完整方法示例 ====================
  2. // 基于 查找节点_HID.js 的方法演示
  3. // 🍎交流QQ群:711841924(群)
  4. // 🍎交流QQ群:528816639  (安卓内测群)
  5. /**
  6. * 封装的节点查找函数
  7. * @param {Object} 查找 - hid.nodeSearch()返回的节点集合对象
  8. * @param {Boolean} 是否点击 - 是否执行点击操作
  9. * @param {Object} 节点返回 - 用于返回结果的容器对象
  10. * @returns {Boolean} 查找是否成功
  11. */
  12. function 查找节点_HID(查找, 是否点击, 节点返回) {
  13.     try {
  14.         // 初始化返回对象
  15.         节点返回.数量 = 0;
  16.         节点返回.数组 = null;
  17.         节点返回.返回信息 = null;
  18.         
  19.         // 增强的安全检查
  20.         if (!查找 || typeof 查找 === 'undefined' || 查找 === null) {
  21.             return false;
  22.         }
  23.         
  24.         // 检查是否有length方法并且可以调用
  25.         if (typeof 查找.length !== 'function') {
  26.             return false;
  27.         }

  28.         var a = 0;
  29.         try {
  30.             a = 查找.length();
  31.         } catch (lenErr) {
  32.             console.log("获取节点长度出错:", lenErr);
  33.             return false;
  34.         }
  35.         
  36.         if (a <= 0) {
  37.             return false;
  38.         }

  39.         节点返回.数量 = a;
  40.         节点返回.数组 = 查找;

  41.         // 正序:获取第一个节点(索引0)
  42.         let nodeObj = null;
  43.         try {
  44.             nodeObj = 查找.getNode(0);
  45.         } catch (nodeErr) {
  46.             console.log("获取节点对象出错:", nodeErr);
  47.             return false;
  48.         }
  49.         
  50.         if (!nodeObj) {
  51.             return false;
  52.         }

  53.         节点返回.返回信息 = nodeObj;

  54.         if (是否点击) {
  55.             let 矩形区域 = null;
  56.             try {
  57.                 矩形区域 = nodeObj.getBounds();
  58.             } catch (boundsErr) {
  59.                 console.log("获取节点边界出错:", boundsErr);
  60.                 return false;
  61.             }
  62.             
  63.             if (!矩形区域) {
  64.                 return false;
  65.             }
  66.             
  67.             let x = 矩形区域.getLeft();
  68.             let y = 矩形区域.getTop();
  69.             let x1 = 矩形区域.getRight();
  70.             let y1 = 矩形区域.getBottom();

  71.             let 随机x, 随机y;

  72.             if ((x1 - x) >= 20 && (y1 - y) >= 20) {
  73.                 let minX = Math.max(x + 10, 0);
  74.                 let maxX = Math.max(x1 - 10, 0);
  75.                 let minY = Math.max(y + 10, 0);
  76.                 let maxY = Math.max(y1 - 10, 0);
  77.                 随机x = 取随机数(minX, maxX);
  78.                 随机y = 取随机数(minY, maxY);
  79.             } else {
  80.                 let 坐标返回 = String(nodeObj.getCenterPoint());
  81.                 let coordArr = 坐标返回.split(',');
  82.                 随机x = parseFloat(coordArr[0]);
  83.                 随机y = parseFloat(coordArr[1]);
  84.             }

  85.             // 使用原有的点击模式函数
  86.             点击模式(随机x, 随机y, 设定模式);
  87.         }

  88.         return true;
  89.     } catch (e) {
  90.         console.log("查找节点_HID出错:", e);
  91.         节点返回.数量 = 0;
  92.         节点返回.数组 = null;
  93.         节点返回.返回信息 = null;
  94.         return false;
  95.     }
  96. }

  97. // ==================== 示例演示 ====================

  98. // 示例1: 点击"通知与状态栏"菜单项
  99. function 示例1_点击通知与状态栏() {
  100.     printl("\n===== 示例1: 点击'通知与状态栏'菜单项 =====");
  101.    
  102.     // 查找"通知与状态栏"节点
  103.     var nodesObj = hid.nodeSearch(3000)
  104.         .text("通知与状态栏")
  105.         .id("title")
  106.         .className("android.widget.TextView");
  107.    
  108.     if (nodesObj != '' && nodesObj.length() > 0) {
  109.         printl("✓ 找到'通知与状态栏'节点");
  110.         
  111.         // 获取第一个节点对象
  112.         var nodeObj = nodesObj.getNode(0);
  113.         
  114.         if (nodeObj) {
  115.             printl("✓ 获取到节点对象");
  116.             
  117.             // 打印节点详细信息
  118.             var nodeText = nodeObj.getText();
  119.             printl("  - 文本: " + (nodeText || "(空)"));
  120.             printl("  - 类名: " + nodeObj.getClassName());
  121.             printl("  - 可点击: " + nodeObj.isClickable());
  122.             
  123.             // 获取节点中心点坐标
  124.             var centerPoint = nodeObj.getCenterPoint();
  125.             var x = centerPoint.x();
  126.             var y = centerPoint.y();
  127.             
  128.             printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
  129.             
  130.             // 使用HID执行点击
  131.             hid.click(x, y);
  132.             printl("✓ 已成功点击'通知与状态栏'");
  133.             
  134.             // 倒计时2秒
  135.             printl("→ 倒计时2秒后返回...");
  136.             sleep.second(秒=2);
  137.             
  138.             // 返回上一页
  139.             printl("→ 正在返回上一页...");
  140.             hid.back();
  141.             sleep.millisecond(毫秒=1500);  // 返回后等待1.5秒确保页面加载完成
  142.             printl("✓ 已返回");
  143.             
  144.             return true;
  145.         } else {
  146.             printl("✗ 无法获取节点对象");
  147.             return false;
  148.         }
  149.     } else {
  150.         printl("✗ 未找到'通知与状态栏'节点");
  151.         return false;
  152.     }
  153. }

  154. // 示例2: 点击"显示与亮度"菜单项
  155. function 示例2_点击显示与亮度() {
  156.     printl("\n===== 示例2: 点击'显示与亮度'菜单项 =====");
  157.    
  158.     // 查找"显示与亮度"节点
  159.     var nodesObj = hid.nodeSearch(3000)
  160.         .text("显示与亮度")
  161.         .id("title")
  162.         .className("android.widget.TextView");
  163.    
  164.     if (nodesObj != '' && nodesObj.length() > 0) {
  165.         printl("✓ 找到'显示与亮度'节点");
  166.         
  167.         // 获取第一个节点对象
  168.         var nodeObj = nodesObj.getNode(0);
  169.         
  170.         if (nodeObj) {
  171.             printl("✓ 获取到节点对象");
  172.             
  173.             // 打印节点详细信息
  174.             var nodeText = nodeObj.getText();
  175.             printl("  - 文本: " + (nodeText || "(空)"));
  176.             printl("  - 类名: " + nodeObj.getClassName());
  177.             
  178.             // 获取节点中心点坐标
  179.             var centerPoint = nodeObj.getCenterPoint();
  180.             var x = centerPoint.x();
  181.             var y = centerPoint.y();
  182.             
  183.             printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
  184.             
  185.             // 使用HID执行点击
  186.             hid.click(x, y);
  187.             printl("✓ 已成功点击'显示与亮度'");
  188.             
  189.             // 倒计时2秒
  190.             printl("→ 倒计时2秒后返回...");
  191.             sleep.second(秒=2);
  192.             
  193.             // 返回上一页
  194.             printl("→ 正在返回上一页...");
  195.             hid.back();
  196.             sleep.millisecond(毫秒=1500);  // 返回后等待1.5秒确保页面加载完成
  197.             printl("✓ 已返回");
  198.             
  199.             return true;
  200.         } else {
  201.             printl("✗ 无法获取节点对象");
  202.             return false;
  203.         }
  204.     } else {
  205.         printl("✗ 未找到'显示与亮度'节点");
  206.         return false;
  207.     }
  208. }

  209. // 示例3: 点击"声音与触感"菜单项
  210. function 示例3_点击声音与触感() {
  211.     printl("\n===== 示例3: 点击'声音与触感'菜单项 =====");
  212.    
  213.     // 查找"声音与触感"节点
  214.     var nodesObj = hid.nodeSearch(3000)
  215.         .text("声音与触感")
  216.         .id("title")
  217.         .className("android.widget.TextView");
  218.    
  219.     if (nodesObj != '' && nodesObj.length() > 0) {
  220.         printl("✓ 找到'声音与触感'节点");
  221.         
  222.         // 获取第一个节点对象
  223.         var nodeObj = nodesObj.getNode(0);
  224.         
  225.         if (nodeObj) {
  226.             printl("✓ 获取到节点对象");
  227.             
  228.             // 打印节点详细信息
  229.             var nodeText = nodeObj.getText();
  230.             printl("  - 文本: " + (nodeText || "(空)"));
  231.             printl("  - 类名: " + nodeObj.getClassName());
  232.             
  233.             // 获取节点中心点坐标
  234.             var centerPoint = nodeObj.getCenterPoint();
  235.             var x = centerPoint.x();
  236.             var y = centerPoint.y();
  237.             
  238.             printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
  239.             
  240.             // 使用HID执行点击
  241.             hid.click(x, y);
  242.             printl("✓ 已成功点击'声音与触感'");
  243.             
  244.             // 倒计时2秒
  245.             printl("→ 倒计时2秒后返回...");
  246.             sleep.second(秒=2);
  247.             
  248.             // 返回上一页
  249.             printl("→ 正在返回上一页...");
  250.             hid.back();
  251.             sleep.millisecond(毫秒=1500);  // 返回后等待1.5秒确保页面加载完成
  252.             printl("✓ 已返回");
  253.             
  254.             return true;
  255.         } else {
  256.             printl("✗ 无法获取节点对象");
  257.             return false;
  258.         }
  259.     } else {
  260.         printl("✗ 未找到'声音与触感'节点");
  261.         return false;
  262.     }
  263. }

  264. // 示例4: 点击"桌面"菜单项
  265. function 示例4_点击桌面() {
  266.     printl("\n===== 示例4: 点击'桌面'菜单项 =====");
  267.    
  268.     // 查找"桌面"节点
  269.     var nodesObj = hid.nodeSearch(3000)
  270.         .text("桌面")
  271.         .id("title")
  272.         .className("android.widget.TextView");
  273.    
  274.     if (nodesObj != '' && nodesObj.length() > 0) {
  275.         printl("✓ 找到'桌面'节点");
  276.         
  277.         // 获取第一个节点对象
  278.         var nodeObj = nodesObj.getNode(0);
  279.         
  280.         if (nodeObj) {
  281.             printl("✓ 获取到节点对象");
  282.             
  283.             // 打印节点详细信息
  284.             var nodeText = nodeObj.getText();
  285.             printl("  - 文本: " + (nodeText || "(空)"));
  286.             printl("  - 类名: " + nodeObj.getClassName());
  287.             
  288.             // 获取节点中心点坐标
  289.             var centerPoint = nodeObj.getCenterPoint();
  290.             var x = centerPoint.x();
  291.             var y = centerPoint.y();
  292.             
  293.             printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
  294.             
  295.             // 使用HID执行点击
  296.             hid.click(x, y);
  297.             printl("✓ 已成功点击'桌面'");
  298.             
  299.             // 倒计时2秒
  300.             printl("→ 倒计时2秒后返回...");
  301.             sleep.second(秒=2);
  302.             
  303.             // 返回上一页
  304.             printl("→ 正在返回上一页...");
  305.             hid.back();
  306.             sleep.millisecond(毫秒=1500);  // 返回后等待1.5秒确保页面加载完成
  307.             printl("✓ 已返回");
  308.             
  309.             return true;
  310.         } else {
  311.             printl("✗ 无法获取节点对象");
  312.             return false;
  313.         }
  314.     } else {
  315.         printl("✗ 未找到'桌面'节点");
  316.         return false;
  317.     }
  318. }

  319. // ==================== 执行示例 ====================
  320. printl("\n========== HID 节点查找方法演示 ==========\n");

  321. // 按顺序执行所有示例
  322. 示例1_点击通知与状态栏();
  323. 示例2_点击显示与亮度();
  324. 示例3_点击声音与触感();
  325. 示例4_点击桌面();

  326. printl("\n===========================================\n");
  327. printl("✓ 所有示例演示完成!");
复制代码



untoAIWROK软件框架的抖音自动化营销系统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三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖