- 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 个条件的是并集
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)