FindNodeInfo 查找节点并获取节点信息
命令名称: `jsd.FindNodeInfo 查找节点并获取节点信息 `
语法格式: `jsd.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 "jsd.luae"
Import "shanhai.lua"
ShanHai.execute "chmod -R 777 " & GetTempDir()
If Dir.Exist(GetTempDir() & "jsd.apk") = 0 Then
TracePrint "释放附件"
PutAttachment GetTempDir(),"jsd.apk"
End If
//只需执行一次
If jsd.StartServer() Then
TracePrint "恭喜你!!可以使用插件"
Else
TracePrint "很遗憾!!!你无法使用插件"
End If
//jsd.FindNodeInfo的多种使用方法
Dim Tab()
//查找节点
TracePrint jsd.FindNodeInfo("By.text('按键精灵')")//返回true或null
Delay 500
//查找下标1的节点
TracePrint jsd.FindNodeInfo("By.text('按键精灵')",1)//返回true或null
Delay 500
//获取节点范围
Tab = jsd.FindNodeInfo("By.text('按键精灵')","'rect'")//返回数组或null
If Tab Then
TracePrint "节点矩形范围",Tab[1],Tab[2],Tab[3],Tab[4]
End If
Delay 500
//获取节点text
TracePrint jsd.FindNodeInfo("By.text('按键精灵')","'text'")//返回字符串或null
Delay 500
//获取节点desc
TracePrint jsd.FindNodeInfo("By.text('按键精灵')","'desc'")//返回字符串或null,节点desc信息
Delay 500
//获取节点中心点
Tab = jsd.FindNodeInfo("By.text('按键精灵')","'point'")//返回数组或null,节点中心xy坐标
If Tab Then
TracePrint "节点中心点x y坐标:",Tab[1],Tab[2]
End If
Delay 500
//获取节点所有信息(text,desc,中心点坐标,节点范围)
Tab = jsd.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 = jsd.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 = jsd.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 jsd.FindNodeInfo("By.clazz('android.widget.TextView')",5)//返回true或null
Delay 500
//结合jsd.FindNodes使用
If jsd.FindNodes("By.clazz('android.widget.TextView')", "node") Then
TracePrint jsd.FindNodeInfo("node",5,"text")//返回true或null,取下标5
End If
//结合jsd.FindNode使用
If jsd.FindNode("By.clazz('android.widget.TextView')", "node") Then
TracePrint jsd.FindNodeInfo("node","text")//返回true或null,jsd.FindNode查找的是首个节点,所以没有下标
End If
//查找并点击
If jsd.FindNodeInfo("By.text('按键精灵')", "point", Tab) Then
TracePrint "节点中心点坐标xy",Tab[1],Tab[2]
jsd.Tap Tab[1],Tab[2]
End If
//查找并获取范围
If jsd.FindNodeInfo("By.text('按键精灵')", "rect", Tab) Then
TracePrint "节点矩形范围",Tab[1],Tab[2],Tab[3],Tab[4]
End If
//查找并返回所有信息
If jsd.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
```
备注: 无。