这是我的第一个问题,所以如果我错过了一些信息或做错了什么,我已经为此道歉了。我正在用ChromeDriver浏览互联网。使用的语言是Python和Selenium的结合。
我有一个元素,它是一个span标记,我存储在一个名为elem的变量中。我可以找到elem的父元素
articles.append(elem.find_parent("a")['href'])
存储在文章的数组中。现在我需要找到祖先元素,它是带有类"的span标记;价格":最下面的一行表示elem,第二行是我要查找的元素。
然而,像以前一样尝试:
elem.find_parent("span")['class']
不适用于我,我得到了一个非类型错误。我尝试了多种其他方法,但总是出现NoneType错误。
提前谢谢。
父元素
父节点选择当前节点的父节点。
让我们以Stackoverflow用户配置文件中的信誉span
元素为例:要使用XPATH升级一级:
//span[@class='grid--cell ']
解决方案1
使用/..
可以更上一层楼
//span[@class='grid--cell ']/..
解决方案2
使用XPATHparent
:
//span[@class='grid--cell ']/parent::div[@class='grid gs8 fs-headline1']
parent
选择当前节点的父节点
解决方案3
使用XPATHancestor
//span[@class='grid--cell ']/ancestor::div[@class='grid gs8 fs-headline1']
不同之处在于ancestor
不仅选择当前元素的父元素,还选择当前元素中的祖父母等等。
目前没有一个好的方法可以用CSS做同样的事情。
要查找子元素,我通常将//
用于所有同级元素,或将/
用于直接同级元素。
from selenium import webdriver
driver = webdriver.Chrome(executable_path="
C:\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/about/about_careers.htm")
#identify child element
l= driver.find_element_by_xpath("//li[@class='heading']")
#identify parent from child element with (..) in xpath
t= l.find_element_by_xpath("..")
# get_attribute() method to obtain class of parent
print("Parent class attribute: " + t.get_attribute("class"))
driver.close()
来自的解决方案https://www.tutorialspoint.com/how-to-find-parent-elements-by-python-webdriver