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

Selenium WebDriver部署Mac后Chrome无法运行问题求助

解决Mac部署后spawn ENOTDIR错误的方案

我来帮你搞定这个问题!这个错误通常是因为部署后chromedriver的路径解析出错,程序尝试去执行一个目录而非可执行的二进制文件,或者环境里的依赖版本/权限有问题。下面是一步步的排查和解决方法:

1. 先确认版本匹配问题

Mac上安装的Chrome版本,必须和你安装的chromedriver版本严格对应(大版本一致即可)。你可以:

  • 打开Chrome,在「设置→关于Chrome」查看浏览器版本
  • 在Mac终端执行 chromedriver --version 查看驱动版本
    如果版本不匹配,卸载现有chromedriver,重新安装对应版本:
npm uninstall chromedriver --save
npm install chromedriver@<对应版本号> --save

2. 避免动态路径解析,手动指定chromedriver绝对路径

你之前用require('chromedriver').path获取路径,在本地开发环境没问题,但部署后(尤其是用打包工具时)这个路径可能会指向错误的目录。改成手动指定Mac上chromedriver的实际位置:

const webDriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

// 替换成你部署后chromedriver的实际绝对路径,比如/usr/local/bin/chromedriver
const chromedriverPath = '/usr/local/bin/chromedriver';
const service = new chrome.ServiceBuilder(chromedriverPath).build();
chrome.setDefaultService(service);

// 注意:你之前的代码里build()前面漏了个点,要补上!
const driver = new webDriver.Builder()
  .withCapabilities(webDriver.Capabilities.chrome())
  .build(); 

driver.get('https://www.google.com');

3. 检查chromedriver的可执行权限

部署到Mac后,chromedriver二进制文件可能丢失了可执行权限,执行下面的命令修复:

chmod +x /path/to/your/chromedriver

4. 改用selenium-webdriver的自动驱动管理

如果手动指定路径太麻烦,可以让selenium自动管理chromedriver,避免路径问题:

const { Builder } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

// 用异步函数写法更规范,避免回调地狱
(async function runTest() {
  let driver;
  try {
    driver = await new Builder()
      .forBrowser('chrome')
      // 如果需要无头模式(后台运行),可以添加这个选项
      .setChromeOptions(new chrome.Options().headless())
      .build();
    
    await driver.get('https://www.google.com');
    // 这里可以添加你的测试逻辑
  } catch (err) {
    console.error('运行出错:', err);
  } finally {
    if (driver) await driver.quit();
  }
})();

5. 排查具体的路径错误

如果还是不行,可以在代码里打印出当前获取的chromedriver路径,看看是不是指向了目录而非文件:

console.log('当前chromedriver路径:', require('chromedriver').path);

部署后运行程序,查看这个路径是否是一个实际存在的二进制文件,如果是目录,那就是路径解析的问题,需要调整你的部署配置(比如打包工具的资源包含规则)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:26:29