ruby-on-rails - 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
铬相同)但不适用于铬......有没有办法让硒铬驱动程序与铬一起工作?
解决方案
这是一种方法:
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
推荐阅读
- regex - 带有正则表达式的解析器用于查找单词、过滤问题
- python - matplotlib 两种颜色之间的颜色渐变
- python - 如何格式化谷歌分析日期的结果。ga:日期
- amcharts - Amchart:仅显示特定系列的图例
- mysql - 如何在一个 sql 中更新唯一的默认选项
- google-apps-script - 如何根据单元格的值继续删除单元格
- javascript - 向递归函数添加类型
- authentication - 如何在 KONG 中实现外部身份验证?
- android - 具有时间间隔的请求位置更新未在前台服务中获取位置更新?
- python - 如何在 for 循环中创建多索引 pandas 数据框?