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

Python Selenium触发TimeoutException却未进入对应except块问题求助

问题原因

  • 异常类型不匹配:你当前捕获的TimeoutException不是Selenium官方抛出的异常类,只有从selenium.common.exceptions包中导入的TimeoutException才能匹配driver抛出的页面加载超时、渲染超时异常。如果导入了其他库的TimeoutException(比如requests库的超时异常),或者没有显式导入Selenium的超时异常,就会出现抛异常但不进入except块的问题。
  • 异常子类未匹配:Chrome内核的WebDriver抛出的渲染器接收超时,部分旧版本中会归类到WebDriverException子类下,仅捕获TimeoutException会出现漏判。

修复步骤

1. 修正异常导入

在代码开头添加正确的Selenium异常导入声明:

# 导入Selenium官方的超时异常类
from selenium.common.exceptions import TimeoutException, WebDriverException
import time

2. 优化捕获逻辑,添加兜底校验

调整try-except结构,新增异常类型打印,方便后续定位问题:

try:
    driver.set_page_load_timeout(30)
    driver.get(url)
except TimeoutException:
    print("页面加载失败......")
    print("尝试刷新重试...")
    for number_of_try in range(1,9):
        print(f"第 {number_of_try} 次重试")
        try:
            driver.refresh()
            break
        except TimeoutException:
            print("刷新失败")
            print("等待1分钟后再次尝试")
            time.sleep(60)
# 兜底捕获其他Selenium相关异常
except WebDriverException as e:
    print(f"捕获到Selenium驱动异常,异常类型:{type(e).__name__},异常详情:{str(e)}")

3. 渲染器超时专属优化

如果频繁出现如下报错:

TimeoutException: timeout: Timed out receiving message from renderer: 30.000

可在初始化ChromeDriver时添加启动参数修复:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
# 禁用GPU渲染,减少渲染器异常概率
chrome_options.add_argument("--disable-gpu")
# 禁用/dev/shm内存共享,避免内存不足导致渲染超时
chrome_options.add_argument("--disable-dev-shm-usage")
# 禁用沙箱模式,降低驱动权限限制导致的异常
chrome_options.add_argument("--no-sandbox")

driver = webdriver.Chrome(options=chrome_options)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:06:04