You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python子元素定位异常:获取全部元素而非目标子元素

解决Selenium中WebElement内查找子元素返回全页匹配的问题

问题根源在于XPATH的路径写法:当你在某个WebElement上调用find_elements()时,使用//开头的XPATH会从整个HTML文档的根节点开始搜索,而非从当前WebElement的节点上下文出发。这就是为什么你得到的是全页所有匹配的<td>元素,而非目标月份内的子元素。

修复方案

将XPATH改为相对路径,在开头加上.,表示从当前元素的上下文开始查找:

# 原错误代码
# b = a.find_elements(By.XPATH, "//td[@tabindex='-1']")

# 修改后的正确代码
b = a.find_elements(By.XPATH, ".//td[@tabindex='-1']")

替代方案:使用CSS选择器

如果改用CSS选择器,默认就是基于当前元素的相对查找,无需额外前缀,写法更简洁:

b = a.find_elements(By.CSS_SELECTOR, "td[tabindex='-1']")

修改后执行,len(b)就会返回目标月份内的日期元素数量(比如你预期的31个)。

内容的提问来源于stack exchange,提问作者Elmauro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:40:36