- xpath 函数
- xpath 轴
- XPath 运算符
包含-contains()
-
Xpath
表达式中的一个函数 -
contains()
函数匹配==属性值==中包含的==字符串==//*[contains(@属性,"属性值")]
总结
contains()
函数定位的元素很容易为list
contains()
函数内的属性名需要用@
开始
XPath 轴
- 父子
- 爷孙
- 祖先
- 兄弟姐妹
父子-当前节点的父节点
//*[@text="HK"]/.. //*[@text="HK"]/parent::*
父子-当前节点的子节点
-
当前节点的儿子
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/child::*
爷孙-当前节点的爷爷
当前节点的父级的父级
//*[@text="HK"]/../..
//*[@text="HK"]/parent::*/parent::*
爷孙-当前节点的孙子
当前节点的儿子的儿子
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/child::*/child::*
祖先-ancestor
-
返回当前节点的所有祖先
//*[@text="HK"]/ancestor::android.widget.RelativeLayout
-
显式指定要返回的祖先
//*[@text="HK"]/ancestor::android.widget.RelativeLayout[1]
兄弟姐妹-sibling
- 节点后的兄弟姐妹节点
- 节点前的兄弟姐妹节点
following-sibling
-
选择当前节点之后的所有兄弟节点
-
节点后有一个兄弟节点
//*[@text="HK"]/following-sibling::*
-
节点后有多个兄弟节点
//*[@resource-id="com.xueqiu.android:id/stock_layout"]/following-sibling::*[@resource-id="com.xueqiu.android:id/price_layout"]
preceding-sibling
-
选择当前节点之前的所有兄弟节点
-
节点前有一个兄弟节点
//*[@text="09988"]/preceding-sibling::*
-
节点前有多个兄弟节点
//*[@resource-id="com.xueqiu.android:id/add_attention"]/preceding-sibling::*[@resource-id="com.xueqiu.android:id/price_layout"]
XPath 运算符
- AND
- OR
AND
-
可以在
XPath
表达式中放置 2 个条件 -
在
AND
两个条件都应该为真的情况下,才能找到元素//*[@resource-id="com.xueqiu.android:id/current_price" and @text="107.8"]
OR
-
可以在
XPath
表达式中放置 2 个条件 -
在
OR
的情况下,两个条件中的任何一个为真,就可找到元素。 -
OR
定位获取的是并集//*[@resource-id="com.xueqiu.android:id/tv_stock_add_follow" or @text="加自选"]
总结
and
定位是 2 个条件的交集or
定位是 2 个条件的是并集