似乎水豚的默认selenium_chrome_headless设置不足以在docker容器中运行。我已通过将spec / support /
capybara.rb设置更改为以下内容来解决了该问题:
# spec/support/capybara.rb# Setup chrome headless driverCapybara.server = :puma, { Silent: true }Capybara.register_driver :chrome_headless do |app| options = ::Selenium::WebDriver::Chrome::Options.new options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--window-size=1400,1400') Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)endCapybara.javascript_driver = :chrome_headless# Setup rspecRSpec.configure do |config| config.before(:each, type: :system) do driven_by :rack_test end config.before(:each, type: :system, js: true) do driven_by :chrome_headless endend尤其不要忘记“ –disable-dev-shm-
usage”,因为它解决了docker中有限的资源问题,如https://github.com/GoogleChrome/puppeteer/issues/1834中所述
编辑: 我没有对上述Dockerfile进行任何更改



