我正在尝试为 2017 Rails 项目编写 Rspec 测试。它使用 Capybara、FactoryBot 和 Devise。
我正在使用 Chromedriver,它在第一次 Rspec 系统测试期间无法登录用户 - Chrome 浏览器会弹出凭据错误的引导警报。
我已确认用户确实位于测试数据库中,并且使用绑定.pry 具有正确的凭据。
如果我不使用驱动程序(即,如果我从场景中取出 :js => true),它会正常记录用户。
我已经安装了webdrivers gem,它正在运行chromedriver 114.0.5735.90,在rails_helper中有这个:
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
Capybara.default_driver = :selenium_chrome
Capybara.javascript_driver = :selenium_chrome
# ... this to test if running parallel etc. Didn't help
Capybara.run_server = true
Capybara.server_port = 7000
Capybara.app_host = "http://localhost:#{Capybara.server_port}"
应用程序.rb
require 'webdrivers/chromedriver'
Webdrivers::Chromedriver.required_version = "114.0.5735.90"
测试.log
Completed 401 Unauthorized in 9ms (ActiveRecord: 2.4ms)
Processing by Devise::SessionsController#new as HTML
Parameters: {"utf8"=>"✓", "fan"=>{"email"=>"test1@example.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
宝石
gem 'rails', '>= 5.0.1.rc2', '< 5.1'
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platform: :mri
gem 'rspec-rails', '~> 3.5.0'
gem 'puma', '~> 3.0'
end
group :test do
gem 'capybara', '~> 3.6.0'
gem 'factory_girl_rails', '~> 4.7'
gem 'faker'
gem 'selenium-webdriver', '~> 3.6.0'
gem "database_cleaner", "~> 1.5"
gem 'shoulda-matchers', '~> 3.1'
gem 'launchy'
end
...我尝试使用 geckodriver 代替,但出现此错误:
Failures:
1) Splash and devise: Fans in Canada can sign in, visit signed in home page, and log out in
Failure/Error: click_link('LOG IN')
Selenium::WebDriver::Error::UnknownError:
Invalid Content-Type
你正在针对同一问题创建多个问题,这肯定会让你自己被 stackoverflow 淘汰。您还跳到似乎没有任何逻辑基础的假设,例如这是一个 chromedriver 问题。
鉴于所提供的信息
I have confirmed the user is indeed in test database, and with the correct credentials using binding.pry.
-- 你把绑定.pry 放在哪里了?是在测试代码中还是在应用程序代码中?你是直接连接DB看里面有没有记录吗如果您将正在使用的软件版本更新到现代水平,这一切都会变得更容易。例如,较新的 Rails 将共享测试和应用程序之间的数据库连接,允许在事务模式下运行,并在大多数情况下消除对数据库清理程序等的需要 - 简化设置