Ruby on rails 水豚:访视时出现无限直接错误(';http://google.com')

Ruby on rails 水豚:访视时出现无限直接错误(';http://google.com'),ruby-on-rails,ruby,selenium,cucumber,capybara,Ruby On Rails,Ruby,Selenium,Cucumber,Capybara,我的目标是使用cucumber+capybara,它在带有selenium(chromedriver)的显示浏览器中运行 Gemfile group :test do gem 'cucumber-rails' gem 'database_cleaner' gem 'selenium-webdriver' gem 'rspec-rails'#, '~> 3.3.2' end Feature: Google Scenario: When I go to google, I

我的目标是使用cucumber+capybara,它在带有selenium(chromedriver)的显示浏览器中运行

Gemfile

group :test do
  gem 'cucumber-rails'
  gem 'database_cleaner'
  gem 'selenium-webdriver'
  gem 'rspec-rails'#, '~> 3.3.2'
end
Feature: Google
  Scenario: When I go to google, I am supposed to be on google
  Given I am on google
功能/支持/env.rb

require 'cucumber/rails'
require 'selenium-webdriver'    # Setup selenium-drivers for capybara

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.current_driver = :selenium_chrome
Given(/^I am on google$/) do
  visit('http://google.com')
end
require 'cucumber/rails'
require 'capybara/cucumber'

Capybara.register_driver :chrome do |app|
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 120
  Capybara::Selenium::Driver.new(app, :browser => :chrome, :http_client => client)
end

Capybara.default_driver = :chrome
测试功能

group :test do
  gem 'cucumber-rails'
  gem 'database_cleaner'
  gem 'selenium-webdriver'
  gem 'rspec-rails'#, '~> 3.3.2'
end
Feature: Google
  Scenario: When I go to google, I am supposed to be on google
  Given I am on google
测试步骤.rb

require 'cucumber/rails'
require 'selenium-webdriver'    # Setup selenium-drivers for capybara

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.current_driver = :selenium_chrome
Given(/^I am on google$/) do
  visit('http://google.com')
end
require 'cucumber/rails'
require 'capybara/cucumber'

Capybara.register_driver :chrome do |app|
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 120
  Capybara::Selenium::Driver.new(app, :browser => :chrome, :http_client => client)
end

Capybara.default_driver = :chrome
当我运行cumber时,结果是错误的

重定向超过5次,请检查无限重定向。 (水豚::无限直接错误)

它甚至没有打开浏览器…我做错了什么


谢谢你的帮助。

多亏了这篇文章,我修复了它:

我需要把它放到features/support/env.rb中

require 'cucumber/rails'
require 'selenium-webdriver'    # Setup selenium-drivers for capybara

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.current_driver = :selenium_chrome
Given(/^I am on google$/) do
  visit('http://google.com')
end
require 'cucumber/rails'
require 'capybara/cucumber'

Capybara.register_driver :chrome do |app|
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 120
  Capybara::Selenium::Driver.new(app, :browser => :chrome, :http_client => client)
end

Capybara.default_driver = :chrome

在测试步骤中,你是说当你在谷歌上转到谷歌?这个“修复”中唯一起作用的部分是设置默认的驱动程序。在最初的尝试中,您可以只设置
Capybara.default\u driver=:selenium\u chrome
,它也会做同样的事情。原因是正常的默认驱动程序(rack_测试)不支持外部URL,如果您希望场景使用javascript_驱动程序,默认设置需要使用@javascript标记场景。谢谢您的回答,我觉得
Capybara.current\u driver=:selenium\u chrome
Capybara.default\u driver=:selenium\u chrome
之间的区别有点模糊,但它现在可以工作了。