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

Selenium技术疑问:find_elements方法为何不抛出异常?

为什么find_elements()找不到元素时不抛出异常?

核心原因是两个方法的设计语义不同:

  • find_element():语义是「获取单个匹配元素」(默认取第一个),如果没有任何匹配项,就会抛出NoSuchElementException——因为它的预期是必须存在至少一个目标元素,找不到属于异常情况。
  • find_elements():语义是「获取所有匹配元素的集合」,如果没有匹配项,就会返回一个空列表,而不是抛出异常——空列表本身就是合法的结果,代表“当前页面没有符合条件的元素”,这属于正常业务场景,而非异常。

你的代码逻辑问题及修正

你当前的try-except块其实完全不起作用,因为find_elements()永远不会触发异常,所以except里的代码根本不会执行。正确的写法应该是判断返回的列表是否为空:

# 先尝试第一个选择器
restaurantsReviews = self.driver.find_elements(By.XPATH, '//div[@class="review-container"]')
# 如果是空列表(没找到),再用第二个选择器
if not restaurantsReviews:
    restaurantsReviews = self.driver.find_elements(By.XPATH, '//div[@class="YibKl MC R2 Gi z Z BB pBbQr"]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:40:25