Node.js环境下如何解决Selenium报错“WebDriverError: unknown error: Failed to create Chrome process.”?
解决WebDriverError: unknown error: Failed to create Chrome process报错
报错原因分析
这个报错主要源于两个核心问题:
- Chrome二进制文件路径设置错误:你代码里用
setChromeBinaryPath(${__dirname})指定的是项目根目录,但Selenium需要的是Chrome浏览器可执行文件(chrome.exe)的完整路径,而非目录路径——找不到具体的Chrome程序,自然无法创建启动进程。 - 未明确指定ChromeDriver路径:你把
chromedriver.exe放在了项目目录,但代码里没告诉Selenium它的位置,导致驱动程序也无法被正常识别,进一步加剧了启动失败的问题。
修复方案
步骤1:修正Chrome二进制文件路径
先找到你Chrome浏览器的实际安装路径:
- Windows默认路径通常是:
C:\Program Files\Google\Chrome\Application\chrome.exe(64位)或C:\Program Files (x86)\Google\Chrome\Application\chrome.exe(32位) - 如果是便携版Chrome,直接定位到你存放
chrome.exe的具体路径
然后把代码中的setChromeBinaryPath参数替换成这个完整的可执行文件路径。
步骤2:指定ChromeDriver的路径
因为你把chromedriver.exe放在项目目录,需要通过chrome.ServiceBuilder明确告知Selenium驱动程序的位置。
修改后的完整代码
const {Builder} = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); const {ServiceBuilder} = chrome; (async function openChromeTest() { try { // 替换为你的Chrome.exe完整路径 const chromeBinaryPath = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'; // 指定项目目录中的chromedriver.exe路径 const chromeDriverPath = `${__dirname}\\chromedriver.exe`; let options = new chrome.Options().setChromeBinaryPath(chromeBinaryPath); let service = new ServiceBuilder(chromeDriverPath).build(); let driver = await new Builder() .setChromeOptions(options) .setChromeService(service) // 配置驱动服务 .forBrowser('chrome') .build(); await driver.get('https://www.google.com'); await driver.quit(); } catch (error) { console.log(error) } })();
额外注意事项
- 版本严格匹配:务必保证Chrome浏览器的版本和ChromeDriver的版本完全一致(比如Chrome是118.x,ChromeDriver也要用118.x版本),版本不兼容是这类启动报错的高频诱因。
- 文件权限检查:确认项目目录里的
chromedriver.exe存在,且没有被杀毒软件隔离或删除,确保程序有读取该文件的权限。
内容的提问来源于stack exchange,提问作者Isaac W
相关产品推荐
相关产品推荐

