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 ``` 备注: 无。