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
相关产品推荐
相关产品推荐

