首页 > 解决方案 > RSpec 水豚与铬

问题描述

我正在尝试将 RSpec 套件配置为针对Chromium浏览器运行(而不是google-chrome)...测试套件失败并出现以下错误

     1.2) Failure/Error: Unable to infer file and line number from backtrace

          Selenium::WebDriver::Error::SessionNotCreatedError:
            session not created: This version of ChromeDriver only supports Chrome version 80
          # 0   chromedriver                        0x0000000103190329 chromedriver + 3838761
          # 1   chromedriver                        0x000000010312a123 chromedriver + 3420451
          # yada yada

我已经安装了ChromeDriver铬浏览器(通过brew cask install chromedriver chromium)...

这是spec_helper.rb水豚的配置

require "capybara/rails"
require "capybara/rspec"
require "capybara-screenshot/rspec"
require "selenium/webdriver"

# Capybara.default_driver = :selenium_chrome_headless
Capybara.default_driver = :selenium_chrome

这在安装 chrome 时完美运行(与v.82铬相同)但不适用于铬......有没有办法让硒铬驱动程序与铬一起工作?

标签: ruby-on-railsseleniumrspeccapybarachromium

解决方案


这是一种方法:

require 'capybara'
require 'capybara/dsl'
require 'selenium-webdriver'

include Capybara::DSL

Capybara.register_driver :selenium_chromium do |app|
  options = Selenium::WebDriver::Chrome::Options.new(binary: "/Applications/Chromium.app/Contents/MacOS/Chromium")
  Capybara::Selenium::Driver.new(app, :browser => :chrome, options: options)
end

Capybara.current_driver = :selenium_chromium
Capybara.app_host = 'https://example.org'
visit('/')

如您所见,Chrome/Chromium 版本需要与 ChromeDriver 版本匹配。这意味着这brew cask install chromium可能不起作用,因为它将安装最新的夜间版本。

要获得有效的 Chromium 版本,请首先检查您的 ChromeDriver 版本:

$ chromedriver --version
ChromeDriver 81.0.4044.69 (6813546031a4bc83f717a2ef7cd4ac6ec1199132-refs/branch-heads/4044@{#776})

接下来,您需要找到具有相同主要版本的稳定 Chromium 构建。我建议从https://chromium.woolyss.com/获取一个构建——它会有一个类似的标签:

81.0.4044.129 (737173) • 2020 年 4 月 28 日,星期二

如果您知道内部版本号(本示例中为 737173),您还可以从 Chromium 构建存储库下载兼容的快照:

https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/737173/chrome-mac.zip


推荐阅读