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

Heroku上Ruby+Selenium+Chrome版本锁定与依赖缺失问题求助

解决方案:Heroku上Ruby+Selenium+Chrome版本锁定/依赖修复

方法一:修复Chrome 117的libatk-1.0.so.0依赖缺失

如果希望继续使用最新版Chrome,只需补充缺失的系统依赖:

  • 添加heroku-buildpack-apt到你的buildpack列表(放在Chrome/Chromedriver buildpack之前)
  • 在项目根目录创建Aptfile,写入以下依赖包:
    libatk1.0-0
    libatk-bridge2.0-0
    libcups2
    libxkbcommon0
    libxcomposite1
    libxdamage1
    libxrandr2
    libgbm1
    libpango-1.0-0
    libcairo2
    
    这些是Chrome 117在heroku-22栈上运行必需的依赖,一次性安装可避免后续类似缺失问题
  • 重新部署应用,依赖会自动安装,Chrome即可正常启动

方法二:强制锁定到之前的稳定版本(Chrome 115 + Chromedriver 114)

如果需要回滚到之前验证过的版本,按以下步骤操作:

1. 配置Buildpacks

  • 移除官方的heroku-buildpack-google-chrome和heroku-buildpack-chromedriver,替换为支持指定版本的第三方buildpack
  • 调整buildpack顺序(确保执行顺序正确):
    • heroku-buildpack-apt
    • 第三方Chrome buildpack
    • 第三方Chromedriver buildpack
    • heroku/ruby

2. 设置版本锁定环境变量

通过Heroku CLI或控制台设置以下环境变量:

heroku config:set CHROME_VERSION=115.0.5790.170
heroku config:set CHROMEDRIVER_VERSION=114.0.5735.90

3. 禁用Selenium自动下载浏览器

Selenium 4.x默认会自动下载匹配的浏览器,必须禁用此行为:

  • 方式一:通过环境变量全局禁用
    heroku config:set WEBDRIVER_MANAGER_SKIP_BROWSER_DOWNLOAD=true
    heroku config:set SELENIUM_CHROME_PATH="/app/.apt/usr/bin/google-chrome"
    
  • 方式二:在Ruby代码中明确指定路径
    options = Selenium::WebDriver::Chrome::Options.new
    options.binary = "/app/.apt/usr/bin/google-chrome"
    # 强制指定Chrome路径,覆盖Selenium的自动下载逻辑
    Selenium::WebDriver::Chrome.path = "/app/.apt/usr/bin/google-chrome"
    driver = Selenium::WebDriver.for :chrome, options: options
    

4. 清除Heroku缓存并重新部署

旧缓存会导致版本覆盖,部署前强制清除:

heroku repo:purge_cache -a 你的应用名称
git commit --allow-empty -m "Purge cache to enforce version lock"
git push heroku main

验证版本

部署完成后,通过Heroku控制台验证版本是否正确:

# 检查Chrome版本
puts `google-chrome --version`
# 检查Chromedriver版本
puts `chromedriver --version`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:45:29