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

配置Selenium+Firefox时如何解决NoSuchSessionError错误?

解决MacOS下Node.js+Firefox Selenium的NoSuchSessionError问题

问题根源

你遇到的核心问题有两点:

  1. 下载了Windows版本的geckodriver.exe,Mac系统需要对应架构的无后缀二进制驱动文件
  2. 测试脚本未处理Selenium的异步操作逻辑,导致会话还未建立就执行了quit()

分步解决方案

1. 替换为适配Mac的Geckodriver

  • 下载对应Mac架构的Geckodriver版本:
    • M系列芯片:选择mac-arm64架构的压缩包
    • Intel芯片:选择macos架构的压缩包
  • 解压后得到无.exe后缀的geckodriver文件
  • 打开终端给文件赋予执行权限:
    chmod +x /path/to/your/geckodriver
    
  • 将驱动移至系统默认PATH目录(无需手动添加环境变量):
    mv /path/to/your/geckodriver /usr/local/bin/
    

2. 修改脚本处理异步逻辑

Selenium的build()、get()、quit()均为异步操作,必须用async/await等待执行完成,否则会出现会话未初始化就关闭的问题。修改后的测试脚本:

const { Builder, Capabilities } = require('selenium-webdriver');

(async function runTest() {
  let driver;
  try {
    // 等待驱动会话建立
    driver = await new Builder()
      .withCapabilities(Capabilities.firefox())
      .build();
    // 等待页面加载完成
    await driver.get('http://www.lambdatest.com');
    // 可选:添加延迟查看页面效果
    await driver.sleep(2000);
  } catch (err) {
    console.error('测试出错:', err);
  } finally {
    // 确保驱动正常退出
    if (driver) {
      await driver.quit();
    }
  }
})();

3. 利用Selenium Manager自动管理驱动(可选)

Selenium 4.x版本自带Selenium Manager工具,会自动检测浏览器版本并下载匹配的驱动,无需手动配置:

  • 删除你手动下载的Geckodriver文件
  • 直接运行修改后的脚本,Selenium会自动下载适配Firefox 104.0的驱动版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:10:35