选择器 UiSelector
笔记
直接分析
用于简单、最直接的查找控件
开启悬浮窗权限
点击 布局分析
布局范围分析
选择一个值, 查看控件信息
当前选择值的 类名
这里在主页 演示
层次分析
用于查找多层、嵌套的控件
布局层次分析
选择最外层节点, 查看控件信息
最外层节点的 类名
这里在主页演示,可以看出在不同的页面,最外层节点的类名是一样的
代码分析
用于查找没有直接显示、嵌套较深的控件
从层次分析,得出在不同的页面,两者最外层节点的类名是一样的。
所以我们可以优先查找最外层的 类名 className(“android.widget.FrameLayout”)
1 | var node1 = className("android.widget.FrameLayout").findOnce(); |
为了方便截图就用输出窗口了
然后我们再查找 包名 packageName(“com.tencent.mm”)
1 | var node1 = className("android.widget.FrameLayout").findOnce(); |
筛选常用的四种属性: text
、 desc
、 id
、 className
属性 | 类型 |
---|---|
text | 文本 |
desc | 描述 |
id | 标识号 |
className | 类名 |
text()
属性1
2
3
4
5
6
7
8
9
10
11
12var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);
var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());
nodeList.forEach((child,index) => {
// log(child);
if(child.text()){
log(child.text());
}
});desc()
属性1
2
3
4
5
6
7
8
9
10
11
12var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);
var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());
nodeList.forEach((child,index) => {
// log(child);
if(child.desc()){
log(child.desc());
}
});id()
属性1
2
3
4
5
6
7
8
9
10
11
12var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);
var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());
nodeList.forEach((child,index) => {
// log(child);
if(child.id()){
log(child.id());
}
});className()
属性1
2
3
4
5
6
7
8
9
10
11
12var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);
var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());
nodeList.forEach((child,index) => {
// log(child);
if(child.className()){
log(child.className());
}
});
最后
Invitation
Reverse
835786725
created:06/08/2022
HY Group
HY Group , Entertainment first , Just be happy . SuiXing Originality Parking Iot . Ruan Fan Ying Chi Herbal Tea Shop .
Internet Of Things .
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Reverse!
评论
WalineTwikoo