gpt4 book ai didi

python - 第 n 次出现的 td 跨度 :nth-child(2) 的 Selenium CSS 选择器

转载 作者:太空狗 更新时间:2023-10-30 02:43:52 26 4
gpt4 key购买 nike

css 选择器td span:nth-child(2) 表示td 的第二个子节点span。我想选择第 n 个 td span:nth-child(2),类似于:

driver.find_element_by_css_selector("td span:nth-child(2):eq(4)")

我知道我可以用

driver.find_elements_by_css_selector("td span:nth-child(2)")[4]

或 xpath 代替:

driver.find_elements_by_xpath('(//td/span[2])[4]')

我只是想知道我是否可以用 css 选择器做同样的事情。

最佳答案

您不能使用 CSS 选择器执行此操作。 :eq() 来自 jQuery,不属于任何标准。

td:nth-child(4) span:nth-child(2) 意味着完全不同的东西,并且只会在非常特殊的情况下工作,例如当只有一个表行时四个 td 元素,所有元素至少包含两个 span 子元素:

<body>
...
<table>
<!-- The first, or only, row in the entire document
with this many cells containing this many spans -->
<tr>
<td>
<span></span>
<span></span>
<td>
<span></span>
<span></span>
<td>
<span></span>
<span></span>
<td>
<span></span>
<span></span>
</table>
...
</body>

在本例中它不会匹配您要查找的元素,因为每个 tr 只有两个 td 子元素,所以 td:nth- child(4) 永远不会匹配:

<body>
...
<table>
<tr>
<td>
<span></span>
<span></span>
<td>
<span></span>
<span></span>
<tr>
<td>
<span></span>
<span></span>
<td>
<span></span>
<span></span> <!-- (//td/span[2])[4] -->
</table>
...
</body>

如果您知道 td:nth-child(4) span:nth-child(2) 保证在您的情况下有效,请随意使用它。

关于python - 第 n 次出现的 td 跨度 :nth-child(2) 的 Selenium CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com