选择示例
一些选择器及其相关作用说明
选择根节点
[parent=null][depth=0]
选择子节点
选择一个 ImageView 节点, 并要求其父节点是 LinearLayout
选择一个 ImageView 节点, 并要求其父节点的父节点是 ViewGroup[vid="avatar_layout"]
ViewGroup[vid="avatar_layout"] >2 ImageView
选择一个 ImageView[vid="search_icon"] 节点, 并要求祖先节点是 FrameLayout[vid="content_layout"], n可以是任意正整数, 下同
FrameLayout[vid="content_layout"] >n ImageView[vid="search_icon"]
末尾子节点
选择一个 ImageView 节点, 并要求是其父节点是最后一个子节点
ImageView[index=parent.childCount.minus(1)]
选择兄弟节点
选择一个 LinearLayout[desc="搜索栏,按钮"] 节点, 并要求其兄弟节点是 ViewGroup[desc="个人主页,按钮"]
ViewGroup[desc="个人主页,按钮"] + LinearLayout[desc="搜索栏,按钮"]@LinearLayout[desc="搜索栏,按钮"] - ViewGroup[desc="个人主页,按钮"]
选择一个 [text$="顶级入耳"] 节点, 并要求其兄弟节点是 [vid="cover_layout"]
选择父节点
选择一个 ViewGroup[desc^="直播"] 节点, 并要求其子节点是 FrameLayout[vid="cover_layout"] 或 ViewGroup[vid="live_text_container"] 或 TextView[vid="title_v2"]
FrameLayout[vid="cover_layout"] < ViewGroup[desc^="直播"]ViewGroup[vid="live_text_container"] <3 ViewGroup[desc^="直播"]TextView[vid="title_v2"] <n ViewGroup[desc^="直播"]
在指定节点的子节点内查找指定选择器
一般在末尾节点支持 快速查询 的情况下使用
在节点 ViewGroup[vid="live_text_container"] 的子节点内查找 [text="直播"]
@[text="直播"] <<n ViewGroup[vid="live_text_container"]
在节点 FrameLayout[vid="swipe_layout"] 的子节点内查找 LinearLayout > @[text="直播"]
LinearLayout > @[text="直播"] <<n [vid="swipe_layout"]
组合使用
一些方法用例
node类型的getChild()
选择一个 ViewGroup[desc^="直播"] 节点, 并要求其第1位子节点的vid等于 cover_layout
选择一个 ViewGroup[desc^="直播"] 节点, 并要求其第3位子节点内的第1位子节点类型为 TextView
选择一个 ViewGroup[desc^="直播"] 节点, 并要求其末尾子节点的vid等于 more
context类型的getPrev()
已知符合选择器 @[clickable=true] >(1,2) [vid="cover"] 的节点有6个,现要求根据屏幕分辨率对节点位置作出限制。
思路:从右侧根节点处获取屏幕宽高,通过
getPrev()传到左侧目标节点,随后根据要求做限制另外由于使用了
<<n [parent=null],所以结果仅显示第一个,具体缘由请看主动查询
限制在左半屏:
限制在右下(1/4)屏: