Selenium WebDriver报错:无法获取浏览器驱动 技术求助
解决Selenium "Error: Unable to obtain browser driver" 问题
核心原因
你已安装chromedriver包,但未在脚本中让Selenium识别到驱动位置,导致WebDriver无法找到Chrome驱动程序。
修复步骤
1. 在脚本中注册ChromeDriver
修改测试脚本,顶部引入chromedriver包,让它自动注册到Selenium驱动管理器:
const {By, Key, Builder} = require("selenium-webdriver"); require('chromedriver'); // 新增该行,注册ChromeDriver async function test_case() { let driver = await new Builder().forBrowser("chrome").build(); await driver.get("https://google.com"); await driver.findElement(By.name("q")).sendKeys("Hello, World!", Key.RETURN); // 用setTimeout替代setInterval,避免重复执行quit操作 setTimeout(async function() { await driver.quit(); // 加await确保退出操作完成 }, 10000); } test_case();
2. 手动指定驱动路径(备用方案)
若上述步骤无效,可手动指定驱动路径,确保Selenium能精准定位:
const {By, Key, Builder} = require("selenium-webdriver"); const chrome = require('selenium-webdriver/chrome'); const chromedriver = require('chromedriver'); async function test_case() { let driver = await new Builder() .forBrowser("chrome") .setChromeService(new chrome.ServiceBuilder(chromedriver.path)) // 手动指定驱动路径 .build(); await driver.get("https://google.com"); await driver.findElement(By.name("q")).sendKeys("Hello, World!", Key.RETURN); setTimeout(async function() { await driver.quit(); }, 10000); } test_case();
3. 验证Chrome与驱动版本匹配
确保本地Chrome浏览器版本和安装的chromedriver版本(^124.0.1)一致。若Chrome自动更新,需重装对应版本的驱动:
npm uninstall chromedriver npm install chromedriver@<对应Chrome版本号>
4. 修复脚本异步问题
原脚本用setInterval会重复触发driver.quit(),易引发报错,改用setTimeout仅执行一次,并通过await保证退出操作完成。
额外检查
- 确认系统环境变量中无冲突的旧驱动路径
- 可尝试清理依赖后重新安装:
rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者schajx
相关产品推荐
相关产品推荐

