龙江网站建设桂林市建设局网站
2026/3/24 1:05:41 网站建设 项目流程
龙江网站建设,桂林市建设局网站,优质的网站建设推广,招投标信息查询平台在处理界面上文字提取的问题#xff0c;我通常会选择使用jsd插件#xff0c;感觉用起来挺方便#xff0c;以往在使用jsd插件的时候就是按照命令提供例子的方法直接使用#xff0c;这次想自己分析一下每个命令。 jsd插件主要是对节点的处理#xff0c;我也只分析和节点相关…在处理界面上文字提取的问题我通常会选择使用jsd插件感觉用起来挺方便以往在使用jsd插件的时候就是按照命令提供例子的方法直接使用这次想自己分析一下每个命令。jsd插件主要是对节点的处理我也只分析和节点相关的命令并且这篇文章不是关于怎么使用jsd插件的仅仅是记录我在使用时遇到的一些问题或者觉得有意思的地方。1jsdvip.FindNode 查找节点①参数一共是4个参数参数1:必选,字符串型,节点信息。参数2:字符串型,可选,保存变量。参数3:可选,数值型,节点下标,节点初始下标为0参数4:可选,数值型,执行超时时间,单位毫秒,默认执行10毫秒。参数2,3,4不区分顺序②返回值布尔值,成功返回true,失败返回null。这里边值得分析的地方是参数2“字符串”当做变量保存节点信息。jsdvip.FindNode(By.text(雷电游戏中心),node)这个node里面到底存放了什么经过测试是16位的十六进制字符串类似这样0210A5C80EC32786这个内容是可以用GetNodeInfo命令“解析”出了2jsdvip.GetNodeInfo 获取节点所有信息jsdvip.FindNode(By.text(雷电游戏中心),node) dim tbjsdvip.GetNodeInfo(node)命令介绍例子中是遍历返回值说明返回值是数组或者字典形式直接转json查看。Import jsdvip.luae jsdvip.StartServer jsdvip.FindNode(By.text(雷电游戏中心),node) dim tbjsdvip.GetNodeInfo(node) TracePrint encode.tabletojson(tb)输出结果{ 1: 雷电游戏中心, 2: [208, 202], 3: [147, 138, 270, 267], clickable: true, checkable: false, checked: false, longClickable: true, point: [208, 202], focusable: true, desc: 雷电游戏中心, focused: false, res: , rect: [147, 138, 270, 267], pkg: com.android.launcher3, scrollable: false, selected: false, enabled: true, text: 雷电游戏中心, clazz: android.widget.TextView }这种json结果可以一目了然的知道所有值以及怎么去提取它。3jsdvip.FindNodeS和jsdvip.GetNodeInfoAll这两个命令是上面两个命令的“复数”之前的命令时获取第一个符合要求的节点信息这两个是获取所有符合的节点信息。Import jsdvip.luae jsdvip.StartServer jsdvip.FindNodes(By.text(下载),node) dim tbjsdvip.GetNodeInfoAll(node) TracePrint encode.tabletojson(tb)分析方法一样看结果[ [下载, 下载, 下载, 下载, 下载, 下载, 下载, 下载, 下载], [ [821, 24], [72, 421], [189, 421], [306, 421], [423, 421], [540, 421], [657, 421], [774, 421], [891, 421] ], [ [809, 17, 833, 31], [48, 412, 96, 430], [165, 412, 213, 430], [282, 412, 330, 430], [399, 412, 447, 430], [516, 412, 564, 430], [633, 412, 681, 430], [750, 412, 798, 430], [867, 412, 915, 430]输出结果是3维数组并且只有3组数据分别是文字、中心坐标范围坐标。4jsdvip.ForeachNodes 遍历结果集上面说node这个变量是什么时并没有说它怎么来的因为我是通过这个命令获取到的下面是遍历所有节点信息用复数形式nodes这个没有强制要求就是为了区分一下。Import jsdvip.luae jsdvip.StartServer jsdvip.FindNodes(By.text(下载),nodes) dim tbjsdvip.ForeachNodes(nodes) TracePrint encode.TableToJson(tb)输出结果[C803A1C0055D7B72,BA0C238A50E33351,74B09CB1843640E8,EAA551527BFF7063,7FDA3526F94EE9C6,1F8C860CEAF77FFC,70C2C94E400DD268,BD01F5BC2D773B9E,630A8CAA81642DA1看输出结果猜测每一个字符串应该是一个节点信息为了验证猜测是否正确直接把字符串当做node使用。Import jsdvip.luae jsdvip.StartServer dim tbjsdvip.GetNodeInfo(C803A1C0055D7B72) TracePrint encode.TableToJson(tb)输出结果{1: 下载,2: [821, 24],3: [809, 17, 833, 31],longClickable: false,text: 下载,focused: false,clickable: false,enabled: true,checked: false,selected: false,clazz: android.widget.TextView,checkable: false,rect: [809, 17, 833, 31],res: com.android.flysilkworm:id\/title_view,point: [821, 24],pkg: com.android.flysilkworm,scrollable: false,focusable: false,desc: }这个结果和findnode获取的node是一样的所以猜测node是这个16位的十六进制字符串。除了上面说的这些命令以外比较有意思的还有父级节点、同级节点、子级节点。举个例子根据QQ群消息获取用户名称Import jsdvip.luae jsdvip.StartServer jsdvip.FindLv By.text(len命令), 2, node jsdvip.FindChlid(node,By.res(com.tencent.mobileqq:id/chat_item_nick_name),chlid) TracePrint jsdvip.GetText(chlid)每一个层级关系在获取后都用上面说的方法先输出节点信息确认没问题了在继续层级关系处理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询