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

Ruby下Selenium切换Chrome非headless模式崩溃报错如何解决

问题原因

该报错本质是Chrome图形模式启动失败,核心触发原因是你注释--headless参数后,Chrome需要加载图形界面依赖,缺失对应的运行环境支持或必要启动参数就会触发崩溃。

解决建议

  • 如果你是在**无图形界面的Linux服务器/容器(Docker、CI环境等)**运行:
    普通模式的Chrome原生依赖X11显示服务,无图形环境下无法直接启动,可选两种方案:
    1. 保留headless模式运行
    2. 安装虚拟显示服务模拟图形环境:
      • 安装Xvfb组件:sudo apt install xvfb(Debian/Ubuntu系,其他发行版对应调整安装命令)
      • 运行代码前先启动虚拟显示服务:Xvfb :99 -ac & export DISPLAY=:99
    3. 不要注释--no-sandbox参数,root用户运行时该参数为必填,否则Chrome会因安全沙箱限制拒绝启动
  • 如果你是在**有图形界面的本地环境(Windows/macOS/桌面版Linux)**运行:
    1. 确认Chrome浏览器版本和ChromeDriver版本完全匹配,跨小版本的差异会直接导致启动异常
    2. 保留--no-sandbox参数,使用管理员/root权限运行代码时该参数必填
    3. 新增--disable-dev-shm-usage参数,解决系统默认共享内存容量不足导致的Chrome崩溃问题
    4. 若Chrome未安装在系统默认路径,需手动指定可执行文件路径:options.binary = "/path/to/your/chrome"

调整后代码示例

options = Selenium::WebDriver::Chrome::Options.new
# 不需要headless模式保留注释即可
# options.add_argument('--headless')
# 保留no-sandbox参数
options.add_argument('--no-sandbox')
# 新增参数解决共享内存不足问题
options.add_argument('--disable-dev-shm-usage')
# 非默认安装路径才需要加下面这行
# options.binary = "/path/to/your/chrome"
@driver = driver || Selenium::WebDriver.for(:chrome, options: options)
@driver.get("https://test.com")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:45:05