我会尽力解释这个问题。
这个问题是关于Python中的selenium。考虑这个例子:
for row in driver.find_elements(By.CSS_SELECTOR, "div[style='overflow: hidden;'] > div > div:nth-child(3)"):
player = row.find_element(By.CSS_SELECTOR, '> div:first-child > span').text
显然,第二行是错误的,你不能用 >
启动 CSS 查询。然而,这让我想到了眼前的问题,我究竟该如何做这样的事情?我如何选择作为 row
元素的直接子元素的所有 div?我知道您可以使用 XPath 来实现这一点,但是,使用这些有点痛苦(至少对我来说)。
最佳答案
要使用 Selenium 和 CSS 选择器获取父元素的所有子元素,您只需直接在特定 Web 元素(节点)上应用 find_element
即可,如下所示:
for row in driver.find_elements(By.CSS_SELECTOR, "div[style='overflow: hidden;'] > div > div:nth-child(3)"):
player = row.find_element(By.CSS_SELECTOR, 'div:first-child > span').text
如果您想查找父元素的第一个直接子元素,可以使用:scope
伪元素。
这将为您提供与 div:first-child > span
定位器匹配的 row
节点的第一个直接子节点:
for row in driver.find_elements(By.CSS_SELECTOR, "div[style='overflow: hidden;'] > div > div:nth-child(3)"):
player = row.find_element(By.CSS_SELECTOR, ':scope > div:first-child > span').text
参见this answer了解更多解释。
关于python - 如何在 selenium python 中的相对 css 选择器中使用父选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74294988/