JsDroid 安卓自动化插件帮助文档 | 信义之树

JsDroid 安卓自动化插件帮助文档

2020年06月22日 星期一 16:03:24 按键精灵 6,630 次 0
JsDroid 安卓自动化插件帮助文档JsDroid,是以UI界面为核心,直接作用与节点,适应任何分辨率

命令名称: JsDroid.About 介绍与帮助
详细参数: text(“String”)

text(Pattern.compile(“正则表达式”))textContains(“包含的文本”)

textEndsWith(“包含文本结尾”)

textStartsWith(“包含起始文本”)

clazz(“class”)

clazz(Pattern.compile(“正则表达式”))

clazz(Object.class)

clazz(“包名package”,”类名class”)

clickable(true/false) 是否可点击

copy(参数By选择器) 没用过

depth(整数型深度值) 深度

desc(“String”)

desc(Pattern.compile(“正则表达式”))

descContains(“包含”)

descEndsWith(“结尾”)

descStartsWith(“开头”)

enabled(true/false) 启用

focusable(true/false) 可聚焦的

focused(true/false) 聚焦的

hasChild(参数是By选择器) 添加子选择器条件 By.text(“QQ”).hasChild(By.text(“xxx”))

hasDescendant(By选择器) 添加一个后代选择器条件 By.text(“QQ”).hasDescendant(By.text(“xx”))

hasDescendant(By选择器, 整数型深度)

longClickable(true/false) 长点击

pkg(“包名”)

pkg(Pattern.compile(“正则表达式”))

res(“资源描述”)

res(Pattern.compile(“正则表达式”))

res(“包名”,”资源描述”)

scrollable(true/false) 可滚动

selected(truue/false) 可选中

命令名称: JsDroid.CheckUpdate 检查更新 [点我下载插件] 提取码fekg
语法格式: JsDroid.CheckUpdate
命令参数:
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.CheckUpdate
备注: 无。
命令名称: JsDroid.Click 点击节点
语法格式: JsDroid.Click(节点信息[,下标,超时时长])
命令参数: 参数1:必选,字符串型,节点信息。
参数2:可选,数值型,节点下标,节点初始下标为0
参数3:可选,数值型,执行超时时间,单位毫秒,默认执行10毫秒。
节点格式:
By.text(“String”)
By.text(Pattern.compile(“正则表达式”))

By.textContains(“包含的文本”)

By.textEndsWith(“包含文本结尾”)

By.textStartsWith(“包含起始文本”)

By.clazz(“class”)

By.clazz(Pattern.compile(“正则表达式”))

By.clazz(Object.class)

By.clazz(“包名package”,”类名class”)

By.desc(“String”)

By.desc(Pattern.compile(“正则表达式”))

By.descContains(“包含”)

By.descEndsWith(“结尾”)

By.descStartsWith(“开头”)

By.hasChild(参数是By选择器) 添加子选择器条件 By.text(“QQ”).hasChild(By.text(“xxx”))

By.hasDescendant(By选择器) 添加一个后代选择器条件 By.text(“QQ”).hasDescendant(By.text(“xx”))

By.hasDescendant(By选择器, 整数型深度)

By.longClickable(true/false) 长点击

By.pkg(“包名”)

By.pkg(Pattern.compile(“正则表达式”))

By.res(“资源描述”)

By.res(Pattern.compile(“正则表达式”))

By.res(“包名”,”资源描述”)

 

返回值: 布尔值型:成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
//例子1,普通点击
If JsDroid.Click("By.text('按键精灵')") Then 
	TracePrint "点击成功"
Else 
	TracePrint "点击失败"
End If
//例子2,和FindNode结合
If JsDroid.FindNode("By.text('按键精灵')","node") Then 
	TracePrint JsDroid.Click("node")
	TracePrint "点击成功"
Else 
	TracePrint "点击失败"
End If
//例子3,点击下标7的节点
TracePrint  JsDroid.Click ("By.clazz('android.widget.TextView')", 7)
//例子4,点击节点,超时2000毫秒
TracePrint  JsDroid.Click ("By.clazz('android.widget.TextView')", 2000)
//例子5,点击节点,与FindNodes结合
If JsDroid.FindNodes("By.clazz('android.widget.TextView')","nodes") Then 
	TracePrint JsDroid.Click("nodes",5)
	TracePrint "点击成功"
Else 
	TracePrint "点击失败"
End If
备注: 下标值不得小于超时时间。
命令名称: JsDroid.Code 执行JavaScript代码
语法格式: JsDroid.Code(Script)
命令参数: 参数1:字符串型,必选,JavaScript代码
返回值: 字符串型。
脚本例子:
复制代码
Import "JsDroid.luae"			
TracePrint JsDroid.Code("'Hello word!'")
备注: 无。
命令名称: JsDroid.Drag 拖动节点
语法格式: JsDroid.Drag(节点信息,X,Y,拖动速度)
命令参数: 参数1:必选,字符串型,节点信息
参数2:必选,数值型,拖动的终点X
参数3:必选,数值型,拖动的终点Y
参数4:可选,数值型,拖动速度,取值越大速度越快,忽略则默认常速,建议取值300-1000
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"			
TracePrint JsDroid.Drag("By.text('雷电游戏中心')",300,500,500)

备注: 无。
命令名称: JsDroid.FindImg 缩放找图
语法格式: JsDroid.FindImg(图片路径,左上角X,左上角Y,右下角X,右下角Y,偏色,相似度)
命令参数: 参数1:字符串型,图片路径,不支持附件
参数2:数值型,查找范围左上角X
参数3:数值型,查找范围左上角Y
参数4:数值型,查找范围右下角X
参数5:数值型,查找范围右下角X
参数6:字符串型,偏色
参数7:数值型,相似度,取值0.1-1.0
返回值: 数组型:成功返回图片范围,失败返回null。
脚本例子:
复制代码
Import "JsDroid.luae"				
dim rect
rect = JsDroid.FindImg("/sdcard/img.png", 0, 0, 0, 0, "101010", "0.7")
If rect Then
	TracePrint Join(rect,",")
Else
	TracePrint "未找到"
End If
备注: 无。
命令名称: JsDroid.FindNode 查找节点
语法格式: JsDroid.FindNode(节点信息[,指定下标,保存变量,执行超时])
命令参数: 参数1:必选,字符串型,节点信息。
参数2:字符串型,可选,保存变量。
参数3:可选,数值型,节点下标,节点初始下标为0
参数4:可选,数值型,执行超时时间,单位毫秒,默认执行10毫秒。
参数2,3,4不区分顺序
返回值: 布尔值,成功返回true,失败返回null。
脚本例子:
复制代码
Import "JsDroid.luae"			
//语法1,不再二次利用
TracePrint JsDroid.FindNode("By.text('雷电游戏中心')")
TracePrint JsDroid.FindNode("By.text('雷电游戏中心')",5000)//限时查找
TracePrint JsDroid.FindNode("By.clazz('android.widget.TextView')",3)//下标查找
//语法2
Dim Ret,Info()
Ret = JsDroid.FindNode("By.text('雷电游戏中心')","node")
If Ret Then
	Info = JsDroid.GetNodeInfo("node")
	TracePrint Info[1]//text或desc文本内容
	TracePrint Info[2][1],Info[2][2]//中心坐标
	TracePrint Info[3][1],Info[3][2],Info[3][3],Info[3][4]//节点范围
End If
备注: 无。
命令名称: JsDroid.FindNodeS 查找所有符合条件的节点信息
语法格式: JsDroid.FindNodeS(节点信息,保存变量)
命令参数: 参数1:字符串型,节点信息
参数2:字符串型,保存变量
返回值: 布尔值:成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"				
//例子,与GetNodeInfoAll命令相结合使用
Dim Ret,Info()
Ret = JsDroid.FindNodeS("By.clazz('android.widget.TextView')","node")
If Ret Then
	/*
		Info是数组表 
		Info[1]数组下的元素是text或desc内容
		Info[2]数组下的元素是节点中心点坐标
		Info[3]数组下的元素是节点所在的范围
	*/
    Info = JsDroid.GetNodeInfoAll("node")
    For i = 1 To UBOUND(Info[1]) + 1
        TracePrint "----------------------------------------------------"
        TracePrint "节点内容",Info[1][i]
        TracePrint "节点中心坐标X",Info[2][i][1],"节点中心坐标Y",Info[2][i][2]
        TracePrint "节点左上角X",Info[3][i][1],"节点左上角Y",Info[3][i][2],"节点右下角X",Info[3][i][3],"节点右下角Y",Info[3][i][4]
    Next 
End If 
备注: 无。
命令名称: JsDroid.GetOcr ocr识别
语法格式: JsDroid.GetOcr([图片路径],[左上角X,左上角Y,右下角X,右下角Y])
命令参数: 参数:图片路径或识别范围,二选一
图片路径:字符串型
识别范围:数值型,100,120,240,200
图片范围不能太小,不支持 0,0,0,0格式,貌似不支持正方形,只支持物理路径,不支持附件图片
返回值: 字符串型:识别结果。
脚本例子:
复制代码
Import "JsDroid.luae"				
//语法1
Dim Ret
Ret = JsDroid.GetOcr("/sdcard/123.png")
TracePrint Ret
//语法2
Ret = JsDroid.GetOcr(100,120,240,200)
TracePrint Ret
备注: 无。
命令名称: JsDroid.GetNodeInfoAll 获取所有符合条件的节点信息
语法格式: JsDroid.GetNodeInfoAll(节点信息)
命令参数: 参数1:字符串型,节点信息或FindNodeS的保存变量
返回值: table表:成功返回表,失败返回null。
脚本例子:
复制代码
Import "JsDroid.luae"				
/*
Info是数组表 
Info[1]数组下的元素是text或desc内容
Info[2]数组下的元素是节点中心点坐标
Info[3]数组下的元素是节点所在的矩形范围
*/
Dim Info()
Info = JsDroid.GetNodeInfoAll("By.clazz('android.widget.TextView')")
If Info Then 
    For i = 1 To UBOUND(Info[1]) + 1
        TracePrint "----------------------------------------------------"
        TracePrint "节点text内容",Info[1][i]//节点text内容
        TracePrint "节点中心坐标X",Info[2][i][1],"节点中心坐标Y",Info[2][i][2]
        TracePrint "节点左上角X",Info[3][i][1],"节点左上角Y",Info[3][i][2],"节点右下角X",Info[3][i][3],"节点右下角Y",Info[3][i][4]
    Next 
End If
备注: 无。
命令名称: JsDroid.GetNodeInfo 获取符合条件的节点信息
语法格式: JsDroid.GetNodeInfo(节点信息)
命令参数: 参数1:字符串型,节点信息
返回值: table表:成功返回表,失败返回null。
脚本例子:
复制代码
Import "JsDroid.luae"				
Dim Info()
Info = JsDroid.GetNodeInfo("By.clazz('android.widget.TextView')")
If Info Then 
	TracePrint "节点text或desc内容",Info[1]
	TracePrint "节点中心点X",Info[2][1],"节点中心点Y",Info[2][2]
	TracePrint "节点左上角X",Info[3][1],"节点左上角Y",Info[3][2],"节点右下角X",Info[3][3],"节点右下角Y",Info[3][4]
End If
备注: 无。
命令名称: JsDroid.Swipe 多点滑动
语法格式: JsDroid.Swipe(100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 50)
命令参数: 参数格式1:数值型,x1,y1,x2,y2[,x3,y3,x4,y4,x5,y5…],step,坐标越多,轨迹越明显
参数格式2:数组型,Array(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5[,step]),最少四个元素,支持传入step
参数格式3:数组+step,Array(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5)[,step] step:可选,数值型,数字越大,滑动越慢
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"				
//调试时建议开启指针
JsDroid.Swipe (100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 10)
备注: 无。
命令名称: JsDroid.Include 加载脚本文件(命令库路径)
语法格式: JsDroid.Include([js文件路径][url链接])
命令参数: 字符串型:文件路径或者http链接。
返回值: 字符串型:成功返回”undefined”,失败返回”include err”。
脚本例子:
复制代码
Import "JsDroid.luae"				
//可以自主写一些js函数命令库导入,通过JsDroid.Code 调用
JsDroid.Include("/data/local/tmp/JsAndroid.js")
备注: 无。
命令名称: JsDroid.OpenwebMode 网页增强
语法格式: JsDroid.OpenwebMode()
命令参数: 无。
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"				
JsDroid.OpenwebMode
备注: 浏览器和某些APP无法获取节点和XML,需要开启网页增强。
命令名称: JsDroid.RegExA 返回正则匹配格式By字符串A
语法格式: JsDroid.RegExA(正则匹配节点信息,指定位置)
命令参数: 参数1:字符串型,节点信息,正则模式。
参数2:数值型,需要正则的参数位置,允许多个位置,不需要排序。
需要注意的是反斜杠”\”,在按键中是转义的意思,在插件中也是一样
匹配一个数字的正确格式:”\\\\d”,由按键转义后传入后的结果是”\\d”
返回值: 字符串型,正则替换后的新节点信息格式。
正则模式: 正则模式详解链接 https://blog.csdn.net/woniu317/article/details/52186694

\d 数字:[0-9] \D 非数字: [^0-9] \s 空白字符:[\t\n\x0B\f\r] \S 非空白字符:[^\s] \w 单词字符:[a-zA-Z_0-9] \W 非单词字符:[^\w] 匹配中文:[\u4e00-\u9fa5] \p{Lower} 小写字母字符:[a-z] \p{Upper} 大写字母字符:[A-Z] X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
(X) X,作为捕获组
非捕获
(?=X) X,通过零宽度的正lookahead
(?!X) X,通过零宽度的负lookahead
(?<=X) X,通过零宽度的正lookbehind
(?<!X) X,通过零宽度的负lookbehind
(?>X) X,作为独立的非捕获组

脚本例子:
复制代码
Import "JsDroid.luae"			
Dim By
By =  JsDroid.RegExA ("By.text('按键精灵').clazz('android.widget.TextView')",1)
TracePrint By
By =  JsDroid.RegExA ("By.text('按键精灵').clazz('android.widget.TextView')",2)
TracePrint By
By =  JsDroid.RegExA ("By.text('按键精灵').clazz('android.widget.TextView')",2,1)
TracePrint By
TracePrint  JsDroid.Click (By)
备注: 无。
命令名称: JsDroid.RegExB 返回正则匹配格式By字符串B
语法格式: JsDroid.RegExB(正则匹配节点信息)
命令参数: 参数1:字符串型,节点信息,正则模式,指定格式”By.text(r:'[0-9]{2}/[0-9]{1}/[0-9]{1,2}.*-x’)”
单引号内为模式,r:为指定格式内容,表示这是需要正则的参数。
返回值: 字符串型,正则替换后的新节点信息格式。
脚本例子:
复制代码
Import "JsDroid.luae"				
Dim By
By = JsDroid.RegexB("By.text(r:'[0-9]{2}/[0-9]{1}/[0-9]{1,2}.*-x')")
TracePrint By
TracePrint  JsDroid.Click (By)
备注: 无。

命令名称: JsDroid.StartServer 启动服务
语法格式: JsDroid.StartServer([true])
命令参数: 参数1:可选,布尔值,是否初始化,true则停止服务/刷新所有文件/启动服务。
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
If JsDroid.StartServer() Then 
    TracePrint "启动成功"
Else 
    TracePrint "启动失败"
    EndScript 
End If
备注: 无。
命令名称: JsDroid.Quit 退出服务
语法格式: JsDroid.Quit()
命令参数: 参数:无。
返回值: 无。
脚本例子:
复制代码
//停止事件,调试勿用,仅供打包
Sub OnScriptExit()
	Delly 2000 - Tickcount() 
	JsDroid.Quit()
End Sub 
备注: 无。
命令名称: JsDroid.Exec 执行shell命令
语法格式: JsDroid.Exec(shell命令)
网页文档链接:
adb shell常用命令地址:https://blog.csdn.net/offbye/article/details/53414480


adb shell详细文档地址:https://github.com/mzlogin/awesome-adb
命令参数: 参数:字符串型,shell 命令。
返回值: 字符串型。
脚本例子:
复制代码
Import "JsDroid.luae"				
//查看第三方包名				
Dim PkgArr = Split(JsDroid.Exec("pm list packages -3"),"\n")
For Each v In PkgArr
	TracePrint v
Next
备注: 无。
命令名称: JsDroid.SetConfig 插件设置(是否初始化启动服务,是否显示调试输出,插件二次调用延时)
语法格式: JsDroid.SetConfig(是否初始化启动服务,是否显示调试输出,插件二次调用延时)
命令参数: 参数1:布尔值型,必选,是否开启服务启动初始化。
参数2:布尔值型,可选,是否开启插件调试信息,true为开启。
参数3:数值型,可选,单位毫秒,是否对插件二次调用进行延时。
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.SetConfig False, False,200
备注: Code已默认开启url编码。
命令名称: JsDroid.Tap 点击坐标[非按键Tap原理]
语法格式: JsDroid.Tap(x,y)
命令参数: 参数1:整数型,JsDroid插件命令获取到的节点中心点x坐标。
参数2:整数型,JsDroid插件命令获取到的节点中心点y坐标。
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"				
Dim  Info = JsDroid.GetNodeInfo ("By.text('按键精灵')")
If Info Then 
	JsDroid.Tap Info[2][1],Info[2][2]
End If
备注: 竖屏时与按键坐标无差异,横屏时,必须使用JsDroid插件命令获取的xy坐标。
命令名称: JsDroid.Print 输出信息并打印到屏幕右上角
语法格式: JsDroid.Print(内容)
命令参数: 参数1:整数型或字符串或布尔值。
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"				
JsDroid.Print "欢迎使用JsDroid安卓自动化"
Delay 3000
备注: 无。
命令名称: JsDroid.ScrollToBottom
脚本例子:
复制代码

备注: 无。
命令名称: JsDroid.ScrollToTop
脚本例子:
复制代码

备注: 无。
命令名称: JsDroid.WaitDisappear 等待节点消失
语法格式: JsDroid.WaitDisappear(by,时长)
命令参数: 参数1:字符串型,节点信息。
参数2:整数型,等待时长,单位毫秒
返回值: 布尔值:节点消失返回true,否则返回false。
脚本例子:
复制代码
Import "JsDroid.luae"				
If JsDroid.WaitDisappear("By.text('按键精灵')",5000) Then 
	TracePrint "节点消失了"
Else 
	TracePrint "节点存在"
End If
备注: 无。
命令名称: JsDroid.FindNodeInfo 查找节点并获取节点信息
语法格式: JsDroid.FindNodeInfo(by[,获取属性,节点下标,获取时长,数组变量])
命令参数: 参数1:字符串型,必选,节点信息,节点存在返回true,不存在返回null。
参数:节点下标,可选,整数型,忽略则默认查找第一个节点,节点存在返回true,不存在返回null
参数:查找限时,可选,整数型,忽略则默认查找一次,节点存在返回true,不存在返回null,不得低于500毫秒
参数:返回信息,可选,字符串型或略则返回值为true或null
格式:’text’,获取节点text,返回值,字符串,节点不存在返回null
格式:’desc’,获取节点desc,返回值,字符串,节点不存在返回null
格式:’point’,获取节点中心点,返回值,数组,节点不存在返回null
格式:’rect’,获取节点矩形范围,返回值,数组,节点不存在返回null
格式:’res’,获取节点res信息,返回值,字符串,节点不存在返回null
格式:’allText’,获取节点所有文字,返回值,字符串,节点不存在返回null
格式:’clazz’,获取节点类名,返回值,字符串,节点不存在返回null
格式:任意字符串,比如”abc”,则获取节点的text,desc,point,rect信息,节点存在返回二维table,不存在返回null
返回格式:Tab[“text”],Tab[“desc”],Tab[“point”][1],Tab[“point”][2],Tab[“rect”][1],Tab[“rect”][2],Tab[“rect”][3],Tab[“rect”][4] 参数:数组型,返回变量,将获取的结果存到传入的数组中,此时插件命令返回true或null
返回值: 失败返回null,成功返回布尔值true,字符串,数组,表,具体返回结果看参数解释。
脚本例子:
复制代码
Import "JsDroid.luae"			
//JsDroid.FindNodeInfo的多种使用方法
Dim Tab()
//查找节点
TracePrint JsDroid.FindNodeInfo("By.text('按键精灵')")//返回true或null
Delay 500
//查找下标1的节点
TracePrint JsDroid.FindNodeInfo("By.text('按键精灵')",1)//返回true或null
Delay 500
//获取节点范围
Tab =  JsDroid.FindNodeInfo("By.text('按键精灵')","'rect'")//返回数组或null
If Tab Then 
    TracePrint "节点矩形范围",Tab[1],Tab[2],Tab[3],Tab[4]
End If
Delay 500
//获取节点text
TracePrint JsDroid.FindNodeInfo("By.text('按键精灵')","'text'")//返回字符串或null
Delay 500
//获取节点desc
TracePrint JsDroid.FindNodeInfo("By.text('按键精灵')","'desc'")//返回字符串或null,节点desc信息
Delay 500
//获取节点中心点
Tab = JsDroid.FindNodeInfo("By.text('按键精灵')","'point'")//返回数组或null,节点中心xy坐标
If Tab Then 
    TracePrint "节点中心点x y坐标:",Tab[1],Tab[2]
End If
Delay 500
//获取节点所有信息(text,desc,中心点坐标,节点范围)
Tab = JsDroid.FindNodeInfo("By.text('按键精灵')","'abc'")//返回二维table或null,参数为任意字符串,获取节点所有信息
If Tab Then 
    TracePrint "节点中心点x y坐标:",Tab["point"][1],Tab["point"][2]
    TracePrint "节点text:",Tab["text"]
    TracePrint"节点desc:",Tab["desc"]
    TracePrint "节点矩形范围",Tab["rect"][1],Tab["rect"][2],Tab["rect"][3],Tab["rect"][4]
End If
Delay 500
//获取下标2的节点所有信息(text,desc,中心点坐标,节点范围)
Tab = JsDroid.FindNodeInfo("By.clazz('android.widget.TextView')","'abc'",2)//返回二维table或null
If Tab Then 
    TracePrint "节点中心点x:",Tab["point"][1],Tab["point"][2]
    TracePrint "节点text:",Tab["text"]
    TracePrint"节点desc:",Tab["desc"]
    TracePrint "节点矩形范围",Tab["rect"][1],Tab["rect"][2],Tab["rect"][3],Tab["rect"][4]
End If
Delay 500
//获取下标2的节点的所在范围
Tab = JsDroid.FindNodeInfo("By.clazz('android.widget.TextView')",2,"'rect'")//返回table表或null
If Tab Then 
    TracePrint "节点矩形范围",Tab[1],Tab[2],Tab[3],Tab[4]
End If
Delay 500
//查找下标5的节点
TracePrint JsDroid.FindNodeInfo("By.clazz('android.widget.TextView')",5)//返回true或null
Delay 500
//结合JsDroid.FindNodes使用
If JsDroid.FindNodes("By.clazz('android.widget.TextView')", "node") Then 
	TracePrint JsDroid.FindNodeInfo("node",5,"text")//返回true或null,取下标5	
End If
//结合JsDroid.FindNode使用
If JsDroid.FindNode("By.clazz('android.widget.TextView')", "node") Then 
	TracePrint JsDroid.FindNodeInfo("node","text")//返回true或null,JsDroid.FindNode查找的是首个节点,所以没有下标
End If
//查找并点击
If JsDroid.FindNodeInfo("By.text('按键精灵')", "point", Tab) Then 
    TracePrint "节点中心点坐标xy",Tab[1],Tab[2]
    JsDroid.Tap Tab[1],Tab[2]
End If
//查找并获取范围
If JsDroid.FindNodeInfo("By.text('按键精灵')", "rect", Tab) Then 
    TracePrint "节点矩形范围",Tab[1],Tab[2],Tab[3],Tab[4]
End If
//查找并返回所有信息
If JsDroid.FindNodeInfo("By.text('按键精灵')", "rect", Tab) Then 
    TracePrint "text内容",Tab["text"]
	TracePrint "desc内容",Tab["desc"]
	TracePrint "节点中心点",Tab["point"][1],Tab["point"][2]
	TracePrint "节点矩形范围",Tab["rect"][1],Tab["rect"][2],Tab["rect"][3],Tab["rect"][4]
End If
备注: 无。
命令名称: JsDroid.GetChild 获取子节点集合
语法格式: JsDroid.GetChild(节点信息,保存变量[,指定下标])
命令参数: 参数1:字符串型,By信息或者FindNode和FindNodes的查找结果变量
参数2:字符串型,获取到的集合保存变量
参数3:数值型,可选,指定下标
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"			
//雷电游戏中心的主页面
If JsDroid.GetChild("By.res('com.android.flysilkworm:id/main_tab_radio_group').clazz('android.widget.RadioGroup')", "node") Then 
    Dim size = JsDroid.GetNodeSize("node")
    TracePrint "子节点集合数量",size
    For i = 0 To size - 1
        TracePrint "节点下标",i,"text内容",JsDroid.FindNodeInfo("node",i,"text")
    Next
End If
			
备注: 无。
命令名称: JsDroid.GetNodeSize 获取节点集合数量(节点集合变量)
语法格式: JsDroid.GetNodeSize(节点集合变量)
命令参数: 参数1:字符串型,节点集合变量,可以是FindNodes的保存变量
返回值: 整数型,成功返回数量,失败返回-1。
脚本例子:
复制代码
Import "JsDroid.luae"			
If JsDroid.FindNodes("By.clazz('android.widget.TextView')","node") Then 
	TracePrint "节点集合数量",JsDroid.GetNodeSize("node")
End If
备注: 无。
命令名称: JsDroid.GetParent 获取父节点
语法格式: JsDroid.GetParent(节点信息,父节点保存变量[,指定下标])
命令参数: 参数1:字符串型,必选,节点信息。
参数2:字符串型,必选,保存变量。
参数3:可选,数值型,节点下标,节点初始下标为0
返回值: 布尔值,成功返回true,失败返回null。
脚本例子:
复制代码
Import "JsDroid.luae"			
//雷电游戏中心的主页面,获取推荐的父节点
If JsDroid.GetParent("By.text('推荐')","node") Then 
	Dim Info = JsDroid.FindNodeInfo("node","rect")
	If Info Then 
		TracePrint "节点矩形范围",Join(Info,",") 
	End If
End If
备注: 无。
命令名称: JsDroid.QRcodeUrl 解析二维码为url
语法格式: JsDroid.QRcodeUrl(二维码图片路径)
命令参数: 参数1:字符串型,二维码图片路径,不支持附件
返回值: 字符串型,url链接,失败返回空或其他。
脚本例子:
复制代码
Import "JsDroid.luae"			
TracePrint JsDroid.QRcodeUrl("/sdcard/二维码.png")
备注: 不支持附件路径。
命令名称: JsDroid.Restart 重启自动化服务
语法格式: JsDroid.Restart()
命令参数: 参数:无
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
If JsDroid.Restart() Then 
    TracePrint "自动化服务重启成功"
Else 
    TracePrint "自动化服务重启失败"
End If
备注: 无。
命令名称: JsDroid.EditClear 清空输入框内容
语法格式: JsDroid.EditClear()
命令参数: 参数:无
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.EditClear
备注: 无。
命令名称: JsDroid.EditPaste 粘贴剪切板内容
语法格式: JsDroid.EditPaste()
命令参数: 参数:无
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.EditPaste
备注: 无。
命令名称: JsDroid.EditCopy 复制输入框内容
语法格式: JsDroid.EditCopy()
命令参数: 参数:无
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.EditCopy
备注: 无。
命令名称: JsDroid.CopyText 复制已选中内容
语法格式: JsDroid.CopyText()
命令参数: 参数:无
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.CopyText
备注: 无。
命令名称: JsDroid.Testing 检测加载指定文件是否成功
语法格式: JsDroid.Testing()
命令参数: 参数:无
返回值: 无。
脚本例子:
复制代码
Import "JsDroid.luae"
If JsDroid.Testing() Then 
	TracePrint "加载指定js文件成功"
Else 
	TracePrint "加载指定js文件失败"
End If
备注: 无。
命令名称: JsDroid.SeachNode 结果集中查找指定节点
语法格式: JsDroid.SeachNode(保存变量结果,要查找的节点信息)
命令参数: 参数1:必选,字符串型,保存变量结果
如果传入的是单个节点的变量结果,返回值为true或false
如果传入的是多个变量的变量结果,返回值是数值型或者false
参数2:必选,字符串型,By信息
返回值: 失败返回false,成功返回true或数值,具体类型看参数说明。
脚本例子:
复制代码
Import "JsDroid.luae"
JsDroid.SetConfig False, True 
Dim num
If JsDroid.FindNodeS("By.clazz('android.widget.TextView')", "nodes") Then 
    num = JsDroid.SeachNode("nodes", "By.text('按键精灵')")
    If num Then 
        TracePrint "指定节点所在下标", num
    Else 
        TracePrint "指定节点不存在"	
    End If
End If

If JsDroid.FindNode("By.clazz('android.widget.TextView')", "node") Then 
    TracePrint "指定节点是否存在" ,JsDroid.SeachNode("node", "By.text('按键精灵')")
End If
备注: 无。
命令名称: JsDroid.GetChildEx 获取多层子节点
语法格式: JsDroid.GetChildEx(By信息,保存变量[,指定下标][,下标组合表])
命令参数: 参数1:字符串型,必选,By信息
参数2:字符串型,必选,执行后的保存变量
参数3:数值型,指定下标,忽略则默认为0
参数4:数组型,遍历子节点层数
格式:{0,0,0},获取当前节点的子节点集合的下标0的子节点集合的下标0的子节点集合的下标0的子节点集合
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
If JsDroid.GetParentEx("By.text('按键精灵')", "node", 0, 4) Then //获取按键精灵4层父节点
    TracePrint Join(JsDroid.FindNodeInfo("node","rect"),",") 
    If JsDroid.GetChildEx("node", "node", 0, {0, 0, 0}) Then //获取节点4层子节点
        TracePrint "节点集合数量",JsDroid.GetNodeSize("node")
    End If
    For i = 0 To JsDroid.GetNodeSize("node")-1
        TracePrint JsDroid.FindNodeInfo("node",i,"desc")
    Next
End If
备注: 无。
命令名称: JsDroid.GetParentEx 获取多层父节点
语法格式: JsDroid.GetParentEx(By信息,保存变量[,指定下标][获取层数])
命令参数: 参数1:字符串型,必选,By信息
参数2:字符串型,必选,执行后的保存变量
参数3:数值型,指定下标,忽略则默认为0
参数4:数值型,获取父节点层数,默认获取1层
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
If JsDroid.GetParentEx("By.text('按键精灵')", "node", 0, 4) Then //获取按键精灵4层父节点
    TracePrint Join(JsDroid.FindNodeInfo("node","rect"),",") 
End If
备注: 无。
命令名称: JsDroid.ClearText 清空节点输入框文字
语法格式: JsDroid.ClearText(By信息[,指定下标])
命令参数: 参数1:字符串型,必选,By信息
参数2:数值型,指定下标,忽略则默认为0
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
TracePrint  JsDroid.ClearText("By.res('com.android.flysilkworm:id/search_edit')")
备注: 仅支持5.0.x以上系统版本。
命令名称: JsDroid.SetText 设置节点输入框文字
语法格式: JsDroid.SetText(By信息,设置内容[,指定下标])
命令参数: 参数1:字符串型,必选,By信息
参数2:字符串型,必选,需要设置的内容
参数3:数值型,指定下标,忽略则默认为0
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
TracePrint JsDroid.SetText("By.res('com.android.flysilkworm:id/search_edit')","欢迎使用JsDroid")
备注: 仅支持5.0.x以上系统版本。
命令名称: JsDroid.LongClick 长按节点
语法格式: JsDroid.LongClick(By信息[,指定下标])
命令参数: 参数1:字符串型,必选,By信息
参数2:数值型,指定下标,忽略则默认为0
返回值: 布尔值,成功返回true,失败返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
TracePrint  JsDroid.LongClick("By.res('com.android.flysilkworm:id/search_edit')")
备注: 无。
命令名称: JsDroid.IsChecked 多选框是否已被选中
语法格式: JsDroid.IsChecked(节点信息)
命令参数: 参数1:字符串型,节点信息
返回值: 布尔值,已被选中返回true,其他情况返回false。
脚本例子:
复制代码
Import "JsDroid.luae"
Dim By = "By.clazz('android.widget.CheckBox')"
If JsDroid.FindNode(By) Then 
    If JsDroid.IsChecked(By) Then 
        TracePrint "节点已被选中"
    Else 
        TracePrint "节点未被选中或不可被选中"
    End If 
Else 
    TracePrint "节点不存在"
End If

备注: 经测试,仅支持clazz属性为’android.widget.CheckBox’时生效。
命令名称: JsDroid.GetChildCount 获取子节点数量
语法格式: JsDroid.GetChildCount(By信息[,指定下标])
命令参数: 参数1:字符串型,必选,By信息
参数2:数值型,指定下标,忽略则默认为0
返回值: 数值型,存在子节点返回子节点数量,节点不存在或子节点不存在返回-1。
脚本例子:
复制代码
Import "JsDroid.luae"
Dim  Num
Num = JsDroid.GetChildCount("By.clazz('android.widget.FrameLayout')")
If Num > -1 Then 
    TracePrint "子节点数量",Num
Else 
    TracePrint "当前节点不存在或没有子节点"
End If
备注: 无。
命令名称: JsDroid.GetUIXml 获取界面XML信息
语法格式: JsDroid.GetUIXml()
命令参数: 参数:无
返回值: 字符串型,失败返回空字符。
脚本例子:
复制代码
Import "JsDroid.luae"
If JsDroid.StartServer() Then 
    TracePrint "启动成功"
Else 
    TracePrint "启动失败"
    EndScript 
End If
Dim t = TickCount()
Dim XML信息 = JsDroid.GetUIXml()
TracePrint XML信息
TracePrint "获取XML信息耗时",TickCount()-t,"毫秒" 

备注: 类似于shanhai.GetUIXML,但此功能获取速度极快。