Открывается Cucumber Capybara Selenium firefox example.com не мое приложение

#ruby-on-rails-3 #selenium #cucumber #capybara

#ruby-on-rails-3 #селен #cucumber #capybara

Вопрос:

Я использовал cucumber webrat, но нуждался в дополнительной совместимости с Rails 3 и тестировании javascript, поэтому сменил на capybara selenium. В настоящее время я использую Rails 3.0.7, Cucumber 0.10.2, caybara 1.0.0.beta1.

Проблема: Когда я запускаю сценарий javascript, firefox открывается «http://www.iana.org/domains/example /»или «www.example.com «вместо моего приложения rails.

Я уверен, что мне не хватает всего лишь небольшой настройки, но я не могу ее найти, и это ставит меня в тупик уже пару дней.

В любом случае, мой gemfile читает:

 group :development, :test do
  gem 'cucumber'
  gem 'cucumber-rails', ">= 0.3.2"
  gem 'pickle'
  gem "launchy"
  gem "rspec-rails"
  gem "Selenium"
  gem "selenium-client"
  gem "selenium-webdriver"
  gem "database_cleaner"
  gem "factory_girl_rails"
  gem "capybara"
  gem "escape_utils"
end
  

Особенность:

   @wip
  @javascript
  Scenario: Calculate 1 recipe and be deducted a credit
    Given the following page records
      | name | permalink |
      | home | home      |
    And the following role records
      | name       |
      | SuperAdmin |
      | Admin      |
      | Customer   |
    When  I register "adam" with password "password"
    And I go to the index
    Then I should see "5 credits"
  

Шаг, который открывает окно Firefox:

     When /^I am logged in as "([^"]*)" with password "([^"]*)"$/ do |username, password|
  unless username.blank?
    visit(root_path)
    fill_in "user_session_username", :with => username
    fill_in "user_session_password", :with => password
    click_button "login"
    page.should have_content("Successfully logged in!")
  end
end
  

мои функции / поддержка / env.rb:

    require 'cucumber/rails'
    require 'factory_girl'
    require 'ruby-debug'
    require 'selenium/client'
    # require 'capybara/cucumber' commented out because it doesn't want to work with it in
    Capybara.default_driver = :selenium

    Capybara.server_boot_timeout = 50
    Capybara.default_selector = :css

    begin
      DatabaseCleaner.strategy = :truncation
    rescue NameError
      raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
    end
  

в командной строке написано:

     When I register "adam" with password "password"     # features/step_definiti
ons/web_steps.rb:229
      no link with title, id or text 'register' found (Capybara::ElementNotFound
)
      (eval):2:in `click_link'
      ./features/step_definitions/web_steps.rb:232:in `/^I register "([^"]*)" wi
th password "([^"]*)"$/'
      featurescredit_behaviour.feature:30:in `When I register "adam" with passw
ord "password"'
  

Я довольно новичок в Rails и Ruby, поэтому, пожалуйста, будьте снисходительны ко мне с любыми предложениями, говоря, что ЛЮБАЯ помощь будет высоко оценена.

Ответ №1:

Хорошо, все заработало. Вот что я сделал.

добавлен env.rb:

 require "selenium-webdriver"
  

и изменил мои шаги с помощью ‘visit root_url’ на:

 visit root_path
  

Я думаю, что это все, что я изменил.

Я, честно говоря, думал, что пробовал это (и любую другую перестановку любой другой проблемы / исправления, которые я видел). Не могу поверить, что я потратил 3 дня на это, а затем нашел ответ всего через несколько часов после публикации вопроса публично.

Комментарии:

1. Означает ли это, что вы используете «путь» вместо «URL» в каждом тесте? Или вы нашли способ получше (возможно, настройка хоста или что-то в этом роде?)

2. да, я использую _path вместо _url. Я не уверен, что это «правильный» способ сделать это, но пока это работает.

3. Согласно jnicklas, вы хотите убедиться, что используете _path, а не _url, поскольку это может иметь непреднамеренные последствия.