Selenium报DevToolsActivePort文件不存在错误的原因及解决方法
问题:Selenium启动Chrome时出现DevToolsActivePort file doesn't exist错误
启动ChromeDriver时遇到错误:(unknown error: DevToolsActivePort file doesn't exist),提示从路径c:\Users\aaron\Downloads\webscraper\chromedriver.exe启动的进程已停止,ChromeDriver判定Chrome已崩溃。
用户的代码如下:
const {Builder} = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); (async function openChromeTest() { try { let options = new chrome.Options().setChromeBinaryPath(`${__dirname}\\chromedriver.exe`).addArguments("--disable-dev-shm-usage", "--no-sandbox", "--headless"); let driver = await new Builder()less" .setChromeOptions(options) .forBrowser('chrome') .build(); await driver.get('https://www.google.com'); await driver.quit(); } catch (error) { console.log(error) } })();
用户已添加--disable-dev-shm-usage、--no-sandbox、--headless参数,但问题仍未解决,寻求修复方案。
修复方案
修正
setChromeBinaryPath的参数:这个方法的作用是指定Chrome浏览器的二进制文件路径(即chrome.exe的路径),而非ChromeDriver的路径。你错误地将chromedriver.exe的路径传给了它,导致ChromeDriver无法正确启动浏览器。如果Chrome是默认安装,可直接删除这个方法;如果是自定义路径,替换为Chrome的实际路径,比如:.setChromeBinaryPath("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe")修复代码语法错误:原代码中
new Builder()后面多了一段无效的less"字符,这会直接导致代码执行异常,必须删除这部分内容。补充调试端口参数:在启动参数中添加
--remote-debugging-port=9222,明确指定DevTools的调试端口,避免端口冲突或无法获取端口的问题;同时在headless模式下建议加上--disable-gpu,适配更多环境。
修正后的完整代码
const {Builder} = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); (async function openChromeTest() { try { // 如果Chrome是默认安装,可直接去掉setChromeBinaryPath这一行 let options = new chrome.Options() // .setChromeBinaryPath("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe") .addArguments("--disable-dev-shm-usage", "--no-sandbox", "--headless", "--disable-gpu", "--remote-debugging-port=9222"); let driver = await new Builder() .setChromeOptions(options) .forBrowser('chrome') .build(); await driver.get('https://www.google.com'); await driver.quit(); } catch (error) { console.log(error) } })();
内容的提问来源于stack exchange,提问作者Isaac W
相关产品推荐
相关产品推荐

