使用 Python Selenium 查找 span 标签的同级/父级

del*_*ain 3 python selenium xpath selenium-chromedriver selenium-webdriver

这是我的第一个问题,所以如果我错过了一些信息或做错了什么,我已经为此道歉。我正在使用 ChromeDriver 来浏览互联网。使用的语言是Python与Selenium的结合。

我有一个元素,它是一个跨度标签,我将其存储在名为elem的变量中。我可以找到elem的父元素

articles.append(elem.find_parent("a")['href'])
Run Code Online (Sandbox Code Playgroud)

它存储在该数组articles中。现在我需要找到祖先元素,它是带有“price”类的 span 标签:最低行代表elem,第二行是我正在寻找的元素。

但是,尝试像以前一样:

elem.find_parent("span")['class']
Run Code Online (Sandbox Code Playgroud)

对我来说不起作用,我收到一个 Nonetype 错误。我尝试了多种其他方法,但总是出现 NoneType 错误。

先感谢您。

vit*_*iis 5

父元素

Parent 选择当前节点的父节点。

让我们以 Stackoverflow 用户个人资料中的信誉元素为例:要使用XPATHspan向上一级:

//span[@class='grid--cell ']

解决方案1

你可以升级一级/..

//span[@class='grid--cell ']/..
Run Code Online (Sandbox Code Playgroud)

解决方案2

使用 XPATH parent

//span[@class='grid--cell ']/parent::div[@class='grid gs8 fs-headline1']
Run Code Online (Sandbox Code Playgroud)

parent选择当前节点的父节点

解决方案3

使用 XPATHancestor

//span[@class='grid--cell ']/ancestor::div[@class='grid gs8 fs-headline1']
Run Code Online (Sandbox Code Playgroud)

不同之处在于,ancestor不仅选择当前元素的父元素,还选择祖父母等。

目前还没有一个好的方法可以对 CSS 执行相同的操作。

为了查找元素,我通常将其用于//所有兄弟姐妹或/直接兄弟姐妹。