Lit*_*leQ 5 python selenium xpath css-selectors
CSS选择td span:nth-child(2)意味着第二个孩子节点span的td。我想选择第n个td span:nth-child(2),类似于:
driver.find_element_by_css_selector("td span:nth-child(2):eq(4)")
Run Code Online (Sandbox Code Playgroud)
我知道我可以用
driver.find_elements_by_css_selector("td span:nth-child(2)")[4]
Run Code Online (Sandbox Code Playgroud)
或xpath代替:
driver.find_elements_by_xpath('(//td/span[2])[4]')
Run Code Online (Sandbox Code Playgroud)
我只是想知道我是否可以使用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>
Run Code Online (Sandbox Code Playgroud)
它不会与您在本示例中查找的元素匹配,因为每个元素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>
Run Code Online (Sandbox Code Playgroud)
如果您知道td:nth-child(4) span:nth-child(2)保证可以在您的情况下工作,请随意使用它。
| 归档时间: |
|
| 查看次数: |
3934 次 |
| 最近记录: |