XPath 是一种用于在 XML 文档中定位和选择节点的语言。它可以通过使用路径表达式来指定节点的位置,并支持使用各种条件进行过滤和匹配。以下是一些常见的 XPath 高阶定位方法:
//*[contains(@属性,"属性值")]
//*[contains(@text,"阿里")]
XPath 轴是 XPath 语言中的一个重要概念,它可以根据节点之间的关系来选择节点。XPath 轴定义了节点的一个集合,这个集合由满足特定条件的节点组成。
可以通过过定位一个节点,定位到当前的节点的兄弟节点、父节点、爷爷节点、祖先节点等等。
//*[@text="阿里巴巴"]/..//*[@text="阿里巴巴"]/parent::*
//*[@text="阿里巴巴"]
//*[@text="阿里巴巴"]/..//*[@text="阿里巴巴"]/parent::*
从当前节点定位到它的子节点,使用示例如下:
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/child::*
定位的顺序为:
//*[@resource-id="com.xueqiu.android:id/stock_layout"]
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/child::*
从当前节点定位到父级节点的的父级节点,使用示例如下:
//*[@text="HK"]/../..
//*[@text="HK"]/parent::*/parent::*
定位顺序为:
//*[@resource-id="com.xueqiu.android:id/stockName"]/../..
从当前节点定位到子节点的子节点,使用示例为:
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/child::*/child::*
定位顺序为:
//*[@resource-id="com.xueqiu.android:id/stock_layout"]
示例表示是找到元素包含文本 HK 并且它的所有祖先元素中属性 class 为 android.widget.LinearLayout 和 android.widget.RelativeLayout
的节点,其中这两个属性值分别是常用的线性布局类和相对布局类,使用方式如下:
//*[@text="HK"]/ancestor::android.widget.LinearLayout//*[@text="HK"]/ancestor::android.widget.RelativeLayout
//*[@text="HK"]/ancestor::android.widget.RelativeLayout[1]
定位的顺序为:
//*[@text="HK"]/ancestor::android.widget.LinearLayout
b64f155747ffb35918186c1d1379.png)
//*[@text="HK"]/ancestor::android.widget.LinearLayout[1]
注意: 这里的1并不是数组下标的意思,可以理解为,从当前定位的元素向前数一代,也可以理解为向外一层。
从当前节点定位到后面的兄弟姐妹节点
//*[@text="HK"]/following-sibling::*
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/following-sibling::*[@resource-id="com.xueqiu.android:id/price_layout"]
定位顺序为:
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/following-sibling::*
resour-id
是com.xueqiu.android:id/price_layout
的节点。//*[@resource-id="com.xueqiu.android:id/stock_layout"]/following-sibling::*[@resource-id="com.xueqiu.android:id/price_layout"]
从当前节点定位到它前面的兄弟姐妹节点
//*[@text="BABA"]/preceding-sibling::*
//*[@resource-id="com.xueqiu.android:id/add_attention"]/preceding-sibling::*[@resource-id="com.xueqiu.android:id/price_layout"]
//*[@resource-id="com.xueqiu.android:id/add_attention"]/preceding-sibling::*
//*[@resource-id="com.xueqiu.android:id/add_attention"]/preceding-sibling::*[@resource-id="com.xueqiu.android:id/stock_layout"]
AND
AND 表示可以在 XPath 表达式中同时具备 2 个条件,在 AND 两个条件都应该为真的情况下,即该元素既有 条件A 又有 条件B 。AND 定位取到的是交集。
//*[@resource-id="com.xueqiu.android:id/stockName" and @text="阿里巴巴"]
OR
OR 表示可以在 XPath 表达式中放置 2 个条件,在 OR 的情况下,两个条件中的任何一个为真,就可定位到该元素。OR 定位获取的是并集。
resource-id为com.xueqiu.android:id/stockName
或文本内容text为加自选的元素,也就是下面 6 个元素://*[@resource-id="com.xueqiu.android:id/stock_layout" or @text="加自选"]
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。