• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 25
发新话题 回复该主题

[郭立员] 「安卓按键」xml全分辨率插件jsd插件教程 [复制链接]

1#

大家好,我是公众号3分钟学堂的郭立员~


在处理界面上文字提取的问题,我通常会选择使用jsd插件,感觉用起来挺方便,以往在使用jsd插件的时候就是按照命令提供例子的方法直接使用,这次想自己分析一下每个命令。


jsd插件主要是对节点的处理,我也只分析和节点相关的命令,并且这篇文章不是关于怎么使用jsd插件的,仅仅是记录我在使用时遇到的一些问题,或者觉得有意思的地方。


(1)jsdvip.FindNode 查找节点


①参数:一共是4个参数


参数1:必选,字符串型,节点信息。

参数2:字符串型,可选,保存变量。

参数3:可选,数值型,节点下标,节点初始下标为0

参数4:可选,数值型,执行超时时间,单位毫秒,默认执行10毫秒。

参数2,3,4不区分顺序


②返回值


布尔值,成功返回true,失败返回null。

这里边值得分析的地方是参数2,“字符串”当做变量保存节点信息。

  1. jsdvip.FindNode("By.text('雷电游戏中心')","node")
复制代码

这个node里面到底存放了什么?后面说~


经过测试是16位的十六进制字符串,类似这样0210A5C80EC32786


这个内容是可以用GetNodeInfo命令“解析”出了


(2)jsdvip.GetNodeInfo 获取节点所有信息

  1. jsdvip.FindNode("By.text('雷电游戏中心')","node")

  2. dim tb=jsdvip.GetNodeInfo("node")
复制代码

命令介绍例子中是遍历返回值,说明返回值是数组或者字典形式,直接转json查看。

  1. Import "jsdvip.luae"
  2. jsdvip.StartServer
  3. jsdvip.FindNode("By.text('雷电游戏中心')","node")
  4. dim tb=jsdvip.GetNodeInfo("node")
  5. 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结果可以一目了然的知道所有值,以及怎么去提取它。


(3)jsdvip.FindNodeS和jsdvip.GetNodeInfoAll


这两个命令是上面两个命令的“复数”,之前的命令时获取第一个符合要求的节点信息,这两个是获取所有符合的节点信息。

  1. Import "jsdvip.luae"
  2. jsdvip.StartServer
  3. jsdvip.FindNodes("By.text('下载')","node")
  4. dim tb=jsdvip.GetNodeInfoAll("node")
  5. 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组数据,分别是文字、中心坐标,范围坐标。


(4)jsdvip.ForeachNodes 遍历结果集


上面说node这个变量是什么时,并没有说它怎么来的,因为我是通过这个命令获取到的,下面是遍历所有节点信息,用复数形式nodes,这个没有强制要求就是为了区分一下。

  1. Import "jsdvip.luae"
  2. jsdvip.StartServer
  3. jsdvip.FindNodes("By.text('下载')","nodes")
  4. dim tb=jsdvip.ForeachNodes("nodes")
  5. TracePrint encode.TableToJson(tb)
复制代码

输出结果:


[

"C803A1C0055D7B72",

"BA0C238A50E33351",

"74B09CB1843640E8",

"EAA551527BFF7063",

"7FDA3526F94EE9C6",

"1F8C860CEAF77FFC",

"70C2C94E400DD268",

"BD01F5BC2D773B9E",

"630A8CAA81642DA1"

看输出结果,猜测每一个字符串应该是一个节点信息,为了验证猜测是否正确,直接把字符串当做node使用。

  1. Import "jsdvip.luae"
  2. jsdvip.StartServer
  3. dim tb=jsdvip.GetNodeInfo("C803A1C0055D7B72")
  4. 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群消息获取用户名称




  1. Import "jsdvip.luae"
  2. jsdvip.StartServer
  3. jsdvip.FindLv "By.text('len命令')", 2, "node"
  4. jsdvip.FindChlid("node","By.res('com.tencent.mobileqq:id/chat_item_nick_name')","chlid")
  5. TracePrint jsdvip.GetText("chlid")
复制代码

输出结果:

  1. 当前脚本第5行:郭立员
复制代码

每一个层级关系在获取后都用我上面说的方法先输出节点信息,确认没问题了,在继续层级关系处理。


最后编辑郭立员 最后编辑于 2022-03-17 18:16:21
本主题由 超级版主 瑞祥幽冥狼 于 2023/10/5 18:32:00 执行 审核帖子 操作
扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
2#

看一看

3#

我要JSD插件

4#

感谢大神

5#

jsd插件,感觉用起来挺方便

6#

学习一下

7#

郭老师好!!!!

8#

xml全分辨率插件jsd插件教程

9#


10#


11#

厉害厉害了我的国几厉害

12#

看一看

13#

jsd插件,感觉用起来挺方便

14#


15#

这个不能用了把

16#

11111111

17#

厉害!!!!!!!!!感谢分享

18#

学习学习

19#

学习新思路.膜拜大佬

<font color="Magenta"><strong>【淘服务Designer】按键精灵 办公类、手机类、游戏类、辅助类脚本  QQ:271240457</strong></font>
20#

先回复后下载,感谢楼主的分享

发新话题 回复该主题