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

Selenium Python WebDriver渲染器超时后挂起,捕获错误仍无效

解决ChromeDriver超时后挂起无法导航的问题

针对你遇到的Timed out receiving message from renderer:40.00错误,以及超时后ChromeDriver挂起的问题,可尝试以下几种解决方法:

1. 修改页面加载策略

默认的页面加载策略normal会等待所有资源(图片、脚本、样式等)加载完成,容易触发超时并导致driver挂起。可以将加载策略改为eager(等待DOM加载完成即可)或none(完全不等待),配合超时设置使用:

from selenium.webdriver.chrome.options import Options

options = Options()
# 设置加载策略为eager
options.page_load_strategy = 'eager'  # 可选值:normal, eager, none

driver = uc.Chrome(seleniumwire_options=sel_options, options=options, use_subprocess=True)
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": agent})
driver.set_page_load_timeout(40)

def navigate(url):
    try:
        driver.get(url)
    except Exception as e:
        print(f"导航错误: {e}")

2. 超时后强制终止页面加载

在捕获到超时异常时,通过Chrome DevTools Protocol(CDP)命令强制停止当前页面的加载,避免driver陷入挂起状态:

def navigate(url):
    try:
        driver.get(url)
    except Exception as e:
        print(f"导航错误: {e}")
        # 强制停止页面加载
        driver.execute_cdp_cmd('Network.stopLoading', {})
        # 可选:导航到空白页重置状态
        driver.get('about:blank')

3. 检查Chrome与ChromeDriver版本兼容性

Linux环境下,Chrome浏览器和ChromeDriver的版本必须严格匹配(主版本号一致),版本不匹配可能导致渲染进程通信异常。可以通过以下命令查看版本:

  • 查看Chrome版本:google-chrome --version
  • 查看ChromeDriver版本:chromedriver --version
    如果版本不一致,下载对应版本的ChromeDriver替换即可。

4. 禁用不必要的Chrome特性

禁用一些可能导致渲染进程阻塞的特性,比如GPU加速、扩展程序等:

options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--disable-dev-shm-usage')  # 解决Linux下/dev/shm内存不足问题
options.add_argument('--no-sandbox')  # 禁用沙箱模式,部分Linux环境需要

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:20