程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

// 此代码由飞云脚本圈www.feiyunjs.com整理提供
/*
**aj版本4.0.0Beta
**功能:打开本代码,然后打开测试软件,就能读出所有控件ID  Text  class  desc  其余的可以自己加。
**提供给所需之人,大鸟略过
*/
console.show();
sleep(20000);// js递归遍历数组获取所有的叶子节点
var arr=[];
function queryList(json,arr) {for (var i = 0; i < json.childCount(); i++) {var sonList = json.child(i);if (sonList.childCount() == 0) {arr.push(json.child(i));} else {queryList(sonList, arr);}}return arr;
}sleep(3000);
//var list = className("ListView").findOne();
var list = className("FrameLayout").findOne();queryList(list,arr);for(var k=0;k<arr.length;k++){log("第"+k+"个子控件");log("text="+arr[k].text()+"\n" +"ID="+arr[k].id()+"\n"+"classname="+arr[k].className());log("desc="+arr[k].desc()+"\n");}

说明

本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。

Auto.js简介

Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。

Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。

推荐教程

Auto.js Pro安卓全分辨率免ROOT引流脚本开发视频教程(HD超清1080p)

开发文档

Auto.js Pro开发文档
文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。

为什么要使用Auto.js Pro开发脚本,有什么特点?

吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:

  • Auto.js Pro能开发免ROOT的安卓脚本
  • Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
  • Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
  • Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
  • Auto.js Pro的命令库非常的丰富,接口比较多
  • Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告

autojs pro采用递归的方式,遍历所有子控件的源码分享相关推荐

  1. Javascript用递归的方式遍历json数组

    前言 Javscript语言有很多值得探究和注意的地方,下面我们来看一下用递归的方式遍历JSON对象数组. 正文 假设我们的要遍历的数组是这样的: var array = [{id: 1,childr ...

  2. java基础—采用递归的方式来获取相关目录下的子目录的名称

    采用递归的方式来获取相关目录下的子目录的名称 import java.io.File;//采用递归的方式来获取D盘下myjava目录下的所有子目录的名称 public class FileListDe ...

  3. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)...

    VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...

  4. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)

    VB6.0中,DTPicker日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值(解决方案) 参考文章: (1)VB6.0中,DTPicker日期.时间控件不允许为空时,采用文本框与日 ...

  5. 以编程的方式向窗体添加控件以及对内容高亮显示

    using System; using System.Drawing; using System.Windows.Forms;namespace HighLIght {public partial c ...

  6. 使用IAccessible接口,遍历DirectUI窗口控件的问题?

    前一段时间,做一个程序,需要完成一个小功能,即对鼠标监视,当左键单击某个文件选中时,获得该文件文件名称. 折腾了好久,最终在windowsXP下完美实现了.实现的思路是: 1.下鼠标钩子,获得鼠标左键 ...

  7. 饿了么红包,饿了么活动介绍,饿了么外卖分销、饿了么外卖跟单、饿了么外卖返利跟单识别用户的方式, 外卖返利微信小程序源码

    饿了么红包,饿了么活动介绍,饿了么外卖分销.饿了么外卖跟单.饿了么外卖返利跟单识别用户的方式, 外卖返利微信小程序源码 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码 源代码地址 http:/ ...

  8. 【按键精灵源码分享】遍历图片在屏幕上出现的所有坐标脚本源码

    大家好,我是公众号3分钟学堂的郭立员,今天继续我们的按键精灵安卓版源码分享,这一期带来的是遍历图片在屏幕上出现的所有坐标脚本源码. 适用范围 同一张图在屏幕上多次出现,比如下面这些图. 图片 图片 代 ...

  9. C语言递归遍历一棵二叉树(附完整源码)

    C语言递归遍历一棵二叉树 结点结构体定义 二叉树递归遍历方式 完整实现和main测试源码 结点结构体定义 struct node {struct node *leftNode;int data;str ...

最新文章

  1. silverlight与javascript交互操作
  2. node.js+express,实现RESTful API
  3. 1354. 等差数列【一般 / 暴力枚举】
  4. Spatial Pyramid Pooling(空间金字塔池化)-变尺度CNN训练
  5. python pandas.DataFrame选取、修改数据
  6. android学汇资料总整理
  7. angular input和output
  8. 掌握JVM 运行时数据区,其实不是很难,加薪也是要技巧可言的!!!
  9. 5-13自定义sink到MySQL.
  10. 【华为云技术分享】一文带你了解Web前端发展历程
  11. 测试助手健康 Test-AssistantHealth failed for server
  12. 【推荐实践】Bandit算法在携程推荐系统中的应用与实践
  13. Unity两中方式加载图片
  14. seaborn—sns.heatmap绘制热力图
  15. CentOS 6.5 x64安装svn
  16. 电镜的成像原理-冷冻电镜成像技术1
  17. MSP430使用wifi模块发送数据(上,测试连接)
  18. Pascal voc2007数据集
  19. 3dmax linux版本,如何安装Linux版FLOW-3D及注意事项
  20. 白杨SEO:聊聊微信红包封面、微信8.0状态背景图片和视频素材背后的商机

热门文章

  1. 计算一个页面中的数据库查询次数和用时
  2. 基于动画图解常用的机器学习算法
  3. 手机邮箱登录腾讯企业邮箱
  4. 深度学习——神经网络的种类(前馈神经网络,反馈神经网络,图网络)
  5. WordPress初学者入门教程-分类和标签
  6. byte[]与ByteBuffer相互转化
  7. jdk1.8下载及安装
  8. C语言基础——运算符(定义变量、转义字符、输入输出语句、运算符、32个关键字)
  9. 小陈学js Arguments
  10. 小陈学JS 数组