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

实例化ChromeDriver时抛出WebDriverException无法启动驱动服务问题求助

问题根因

该异常为ChromeDriver服务启动失败导致,异常中随机变动的端口是ChromeDriver的默认行为:每次启动会自动选取未占用的本地端口监听,和端口本身无关联,核心是ChromeDriver进程未能正常启动并提供服务。常见触发原因如下:

  • 生产环境未安装Chrome浏览器:ChromeDriver必须依赖对应版本的Chrome浏览器才能运行,开发环境通常自带桌面版Chrome,而服务器环境默认不会安装浏览器,这是最高发的原因。
  • ChromeDriver与浏览器版本不匹配:若生产环境已安装Chrome,但大版本号和你使用的ChromeDriver不一致,也会触发启动失败。
  • 权限不足:程序运行的账号没有ChromeDriver.exe的执行权限,或是没有系统临时目录的读写权限(ChromeDriver启动时会向临时目录写入临时文件)。
  • 无桌面环境依赖缺失:Windows Server类服务器默认无桌面会话,缺少Chrome运行所需的部分运行时依赖,默认参数启动会失败。
  • 安全软件拦截:服务器的防火墙、杀毒软件、EDR等安全策略拦截了ChromeDriver的本地监听请求,或是直接禁止了ChromeDriver进程启动。

排查与解决方法

  1. 匹配浏览器与ChromeDriver版本
    生产服务器必须安装和当前使用的ChromeDriver大版本一致的Chrome稳定版,也可手动指定Chrome安装路径避免程序找不到浏览器,在你的ChromeOptions配置中新增:
// 替换为实际生产环境的Chrome.exe路径
options.BinaryLocation = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
  1. 调整权限配置
  • 给程序运行账号开放ChromeDriver.exe所在目录的读取、执行权限,同时开放系统临时目录(C:\Windows\Temp、C:\Users\运行账号\AppData\Local\Temp)的读写权限。
  • 若为IIS部署的服务,将对应应用程序池的标识修改为LocalSystem,或是给应用池标识账号授予上述权限。
  1. 新增无头模式适配参数
    针对无桌面的服务器环境,需要在ChromeOptions中补充以下参数:
options.AddArgument("headless=new"); // 使用新版无头模式,兼容性更强
options.AddArgument("no-sandbox"); // 关闭沙箱机制,无桌面环境必须配置
options.AddArgument("disable-gpu"); // 禁用GPU加速,规避服务器无显卡导致的启动失败
options.AddArgument("disable-dev-shm-usage"); // 禁用共享内存,避免小内存环境下启动失败
  1. 排查安全策略拦截
    临时关闭服务器的杀毒软件、防火墙、EDR等安全工具测试,若关闭后可正常启动,将ChromeDriver.exe和chrome.exe加入安全工具白名单,同时放开本地回环地址127.0.0.1的本地监听权限即可。
  2. 手动验证ChromeDriver启动
    直接在生产服务器上双击运行ChromeDriver.exe,正常启动会输出类似Starting ChromeDriver 114.0.5735.90 (xxxx) on port 9515的日志,若启动时报错可直接看到具体错误信息,更方便定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:57:03