水豚selenium chromedriver版本失败

问题描述 投票:0回答:1

在尝试更新项目之前,我之前曾成功使用 Capybara 为旧 Rails 项目编写系统测试,这要归功于 this解决方案 和 Chrome 版本 114.0.5735.90-1 的说明,但新版本的 Chrome 在某些时候潜入其中点,下载链接现在失败并显示

"404. That’s an error."
(来自
https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.90-1_amd64.deb
)。似乎之前的修复程序由于某种原因通常不再起作用,请注意here。所以我尝试了最新的 Chrome 版本(125.0.6422.112)并得到:

Failure/Error: Capybara.page.driver.browser.manage.window.maximize
     
     Webdrivers::NetworkError:
       Net::HTTPServerException: 404 "Not Found" with https://chromedriver.storage.googleapis.com/125.0.6422.112/chromedriver_linux64.zip
     # ./spec/rails_helper.rb:66:in `block (2 levels) in <top (required)>'

项目大约是 2017 年。我可能需要一个旧的 Chrome 版本来匹配旧的 gem,但具体记不清了。

Rails 助手:

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome, :args => ["--window-size=1920,1080"])
end

Capybara.javascript_driver = :selenium_chrome

#so can still run rails server
Capybara.server_port = 3000
Capybara.app_host = 'http://localhost:3000'
Spec.configure do |config|
  config.include Devise::Test::ControllerHelpers, type: :controller

  # controller spec macros
  config.extend ControllerMacros, :type => :controller

  # Include Factory Girl syntax to simplify calls to factories
  config.include FactoryGirl::Syntax::Methods 
  
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.use_transactional_fixtures = false

  config.infer_spec_type_from_file_location!
  config.include Rails.application.routes.url_helpers
  # Filter lines from Rails gems in backtraces.
  config.filter_rails_from_backtrace!
  # arbitrary gems may also be filtered via:
  # config.filter_gems_from_backtrace("gem name")
  config.include Warden::Test::Helpers, type: :system
  config.after(type: :system) { Warden.test_reset! }
  config.include Capybara::DSL
  config.filter_run_when_matching focus: true
  config.before(:each, js: true) do
    Capybara.page.driver.browser.manage.window.maximize
  end
  #databasecleaner code in spec/support/database_cleaning.rb
end

应用程序.rb/环境.rb

Webdrivers::Chromedriver.required_version = "125.0.6422.112"
group :test do
  gem 'capybara', '~> 3.6.0'
  gem 'factory_girl_rails', '~> 4.7'
  gem 'selenium-webdriver', '~> 3.6.0'
  gem "database_cleaner", "~> 1.5"
  gem 'capybara-email'
  etc
ruby-on-rails selenium-webdriver rspec capybara
1个回答
0
投票

根据谷歌

ChromeDriver 的每个版本都支持 Chrome,并具有匹配的主要版本号、次要版本号和内部版本号。例如,ChromeDriver 73.0.3683.20 支持以 73.0.3683` 开头的所有 Chrome 版本。

因此,您必须为您使用的 Chrome 版本选择正确的 Chromedriver 版本。

这一直是管理上的问题,这就是谷歌推出“Chrome for Test”产品的原因,该产品会自动将其版本与Chrome同步。 (请参阅上面的链接了解更多信息)

我很好奇为什么你会因为 Gem 兼容性而停留在版本 114 上。大多数 Gems 影响服务器端,我从未遇到过由于 Gems 导致浏览器不兼容的情况。

© www.soinside.com 2019 - 2024. All rights reserved.