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

使用Selenium时find_element可用,find_elements返回空列表求助

问题解决思路

首先明确核心问题:By.CLASS_NAME不支持多类名组合查询,你传入的"rg_i.Q4LuWd"会被Selenium识别为单个带点的类名,而非同时匹配rg_i和Q4LuWd两个类。这就解释了为什么find_element能找到一个匹配元素(页面中恰好存在一个类名为rg_i.Q4LuWd的元素),但find_elements返回空(没有更多相同类名的元素)。

而你实际要获取的是同时拥有rg_i和Q4LuWd两个类的元素,以下是正确的实现方式:

方法1:使用CSS_SELECTOR(推荐)

CSS_SELECTOR支持多类名组合,用.连接多个类即可匹配同时拥有这些类的元素:

elements = driver.find_elements(By.CSS_SELECTOR, ".rg_i.Q4LuWd")

方法2:使用XPATH

通过XPATH的条件判断,匹配class属性中同时包含两个类名的元素:

elements = driver.find_elements(By.XPATH, "//*[contains(@class, 'rg_i') and contains(@class, 'Q4LuWd')]")

额外处理:动态加载元素

如果目标元素是通过滚动页面、AJAX请求动态生成的,直接调用find_elements可能因元素未加载完成返回空列表。此时需要添加显式等待:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待最多10秒,直到所有目标元素出现在DOM中
wait = WebDriverWait(driver, 10)
elements = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".rg_i.Q4LuWd")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:00:06