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

Docker容器调用webdriver.Chrome()抛WebDriverException,疑网络异常

解决Selenium 4.12.0在Docker中自动下载ChromeDriver超时的问题

针对你遇到的Selenium Manager下载ChromeDriver超时(手动可下载但容器内失败)的问题,提供以下几种解决方案:

1. 手动预下载并指定ChromeDriver路径

绕过Selenium Manager的自动下载流程,直接将驱动放入Docker镜像:

  • 本地下载对应版本的chromedriver-linux64.zip,解压得到chromedriver文件
  • 在Dockerfile中添加复制命令,将驱动放到容器可执行路径:
    COPY chromedriver /usr/local/bin/
    RUN chmod +x /usr/local/bin/chromedriver
    
  • 代码中通过Service类指定驱动路径:
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    
    service = Service(executable_path='/usr/local/bin/chromedriver')
    driver = webdriver.Chrome(service=service)
    

2. 配置Docker容器网络代理

如果容器内无法直接访问谷歌CDN,设置代理解决网络访问限制:

  • 启动容器时传递代理环境变量:
    docker run -e HTTP_PROXY=http://your-proxy-ip:port -e HTTPS_PROXY=http://your-proxy-ip:port your-image
    
  • 或在Dockerfile中预先设置代理:
    ENV HTTP_PROXY=http://your-proxy-ip:port
    ENV HTTPS_PROXY=http://your-proxy-ip:port
    

3. 替换Selenium Manager的ChromeDriver镜像源

通过环境变量指定国内镜像源,避免访问谷歌CDN超时:

  • 启动容器时设置镜像源环境变量:
    docker run -e SE_MANAGER_CHROME_MIRROR=https://npm.taobao.org/mirrors/chromedriver/ your-image
    
  • 或在Dockerfile中添加:
    ENV SE_MANAGER_CHROME_MIRROR=https://npm.taobao.org/mirrors/chromedriver/
    

4. 排查Docker容器网络连通性

验证容器内是否能正常访问目标地址:

  • 进入容器执行curl测试:
    docker exec -it your-container-name bash
    curl -v https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.149/linux64/chromedriver-linux64.zip
    
  • 如果curl超时,需检查Docker网络配置(如自定义网络规则、宿主机防火墙等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:37:40