如何通过Selenium获取第一层级子元素?
解决方案:仅获取tbody下第一层级的tr元素
要精准定位<tbody>的直接子元素<tr>,排除嵌套在其他<tr>内的子<tr>,你需要使用CSS直接子元素选择器(>),而非普通的后代选择器。
核心选择器
使用以下CSS选择器:
tbody > tr
这个选择器只会匹配直接作为<tbody>子元素的<tr>,不会选中任何嵌套在<tr>内部的后代<tr>,完全符合你的需求。
Python Selenium 代码示例
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 假设已加载目标页面 target_trs = driver.find_elements(By.CSS_SELECTOR, "tbody > tr") # 遍历验证结果 for tr in target_trs: print(tr.get_attribute("outerHTML")) # 只会输出你需要的那两个顶层tr
为什么之前的方法无效?
你提到的nth-child(##)这类选择器,若没有结合直接子选择器(>),默认会匹配所有后代中的对应位置元素,而非仅第一层级。比如tbody tr:nth-child(1)会选中<tbody>下所有后代里的第一个<tr>(包括嵌套的),而tbody > tr:nth-child(1)才只会选中<tbody>的第一个直接子<tr>。
内容的提问来源于stack exchange,提问作者Moshe
相关产品推荐
相关产品推荐

