如何使用Selenium与Python基于已知父元素定位目标子元素
XPath父元素查找子元素实现方法
完全可以从已知父元素出发向下匹配子元素,这是XPath最基础的顺向匹配逻辑,反而你之前查到的子元素反向查父元素,是需要调用parent::轴的特殊场景。
基础匹配规则
你只需要在已经写好的父元素XPath后面,拼接对应子元素的匹配规则即可,两种常用场景的写法区别如下:
- 匹配直接子元素:即子元素和父元素直接相邻,中间没有其他嵌套节点,用单斜杠
/连接父元素和子元素规则,格式为[父元素XPath]/[子元素标签名@属性匹配规则] - 匹配所有后代元素:即只要元素在父元素内部,不管中间嵌套了多少层其他标签都能匹配到,用双斜杠
//连接父元素和子元素规则,格式为[父元素XPath]//[子元素标签名@属性匹配规则]
针对你的需求的具体写法
你需要定位XPath为//div[@title = "Search results."]的父元素下,满足@title = "child"属性条件的span元素,对应两种场景的写法如下:
- 匹配第一层直接子span:
//div[@title = "Search results."]/span[@title = "child"]
- 匹配div内部所有层级符合条件的span:
//div[@title = "Search results."]//span[@title = "child"]
对应你最开始给出的父元素示例,如果要匹配//div[@title="parent"]下的直接子p标签,直接写//div[@title="parent"]/p即可,不需要额外写复杂的定位逻辑。
内容的提问来源于stack exchange,提问作者Omar Yacop
相关产品推荐
相关产品推荐

