python - 如何在 selenium python 中的相对 css 选择器中使用父选择器

标签 python css selenium xpath css-selectors

我会尽力解释这个问题。

这个问题是关于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/

相关文章:

python - 在 python 中使用 wmi 获取电池状态?

javascript - 即使我消除了背景图像,jqGrid altRows 也根本没有得到应用

css - 向左而不是向右溢出文本

selenium - 如何使用 NUnit 和 SpecFlow 按类别驱动的特定顺序运行自动化 bdd UI 测试

python - 如何通过在列中添加和减去值来 reshape 数据框

python - 将 3D 矩阵转换/整形为 2D 矩阵

python - Pandas 堆栈/取消堆栈结果错误

css - 标签混淆中的样式标签

python - 如何从 selenium 在 Chrome 中启用 "allow-insecure-localhost"标志?

c# - 为 asp.net 实现测试自动化