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

Ruby升级至3.1.2后Cucumber测试出现Selenium会话ID缺失错误

问题描述

将Ruby从2.5.3版本升级到3.1.2版本及相关gem包后,原本在Chrome浏览器上正常运行的Cucumber测试出现如下错误:

Selenium::WebDriver::Error::WebDriverError: no sessionId in returned payload

环境信息

  • SELENIUM BROWSER: chrome
  • CHROME PATH: /opt/google/chrome
  • CHROME DRIVER: /home/####/git/se/acceptancetests/chromedriver

排查与解决方案

以下是针对该问题的常见解决方向:

1. 验证Chrome与ChromeDriver版本兼容性

Selenium对Chrome和ChromeDriver的版本匹配要求严格,版本不兼容是触发该错误的核心原因之一:

  • 查看Chrome版本:在Chrome地址栏输入chrome://version/获取完整版本号
  • 查看ChromeDriver版本:执行命令 chromedriver --version
  • 确保ChromeDriver主版本与Chrome完全一致(比如Chrome 118.x对应ChromeDriver 118.x),不匹配则下载对应版本替换现有文件。

2. 调整Selenium Gem版本适配Ruby 3.1.2

Ruby版本升级后,需同步适配Selenium gem版本:

  • 查看Gemfile.lock中的selenium-webdriver版本,建议升级到支持Ruby 3.x的4.x系列稳定版
  • 执行 bundle update selenium-webdriver 更新gem包

3. 修复ChromeDriver权限与路径配置

  • 检查ChromeDriver可执行权限:执行 chmod +x /home/####/git/se/acceptancetests/chromedriver 确保文件具备执行权限
  • 在Cucumber的Selenium配置中明确指定路径,示例代码:
    Capybara.register_driver :chrome do |app|
      options = Selenium::WebDriver::Chrome::Options.new
      options.binary = '/opt/google/chrome'
      Capybara::Selenium::Driver.new(
        app, 
        browser: :chrome, 
        options: options, 
        driver_path: '/home/####/git/se/acceptancetests/chromedriver'
      )
    end
    

4. 清理Ruby版本升级后的依赖冲突

Ruby 3.x对部分旧gem兼容性有变化,需排查依赖冲突:

  • 更新或移除过时的测试类gem(如旧版本的capybara、cucumber)
  • 执行 bundle clean --force 清理冗余gem后,重新执行 bundle install 安装依赖

5. 调整Chrome启动参数

添加基础启动参数排除浏览器启动异常:

options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:01:25