Огурец `нажатие кнопки` сбой (Capybara :: ElementNotFound) - PullRequest
2 голосов
/ 12 июля 2011

Я относительный новичок, запускающий новое приложение Ruby on Rails.Я начал, следуя комбинации инструкций в https://github.com/intridea/omniauth, http://www.communityguides.eu/articles/16, http://intridea.com/2011/1/31/easy-rails-admin-login-with-google-apps-and-omniauth?blog=company.В тот момент, когда все, казалось, работало правильно, я начал писать свои самые первые огуречные особенности и шаги.Мне удалось выполнить пару шагов и запустить, но я застрял на шаге, который, как я думал, был встроен. У меня есть форма с двумя submit_tag с, но я не могу получить сценарий, чтобы успешнопройти базовый And I press "button" шаг.

возможно соответствующие драгоценные камни:

rails (3.1.0.rc4)
capybara (1.0.0)
cucumber (1.0.1)
cucumber-rails (1.0.2)
nokogiri (1.4.7)
gherkin (2.4.5)
rack-test (0.6.0)
selenium-webdriver (0.2.2)

раздел рассматриваемой формы:

<%= form_tag :controller => "services", :action => "newaccount" do %>
  <%= submit_tag "confirm", :id => "confirm", :title => "confirm", :value => "confirm", :text => "confirm", :name => "confirm" %> 
  <%= submit_tag "cancel", :id => "cancel", :title => "cancel", :value => "cancel", :text => "cancel", :name => "cancel"  %>
<% end %>

рассматриваемый сценарий:

Scenario: I register with a valid and currently active google account
    Given I am not registered
     When I sign in with a valid and currently active google account
      And I press "confirm"  # <-- THE PROBLEMATIC STEP
     Then I should see "Your account has been created and you have been signed in!"

Я думаю, что это соответствующий web_step (прямо из стандартного web_steps.rb, который я вообще не редактировал):

When /^(?:|I )press "([^"]*)"$/ do |button|
  click_button(button)
end

соответствующий вывод огурца:

Scenario: I register with a valid and currently active google account            # features/auth_and_auth/initial_tests.feature:6
  Given I am not registered                                                      # features/step_definitions/authentication_steps.rb:1
  When I sign in with a valid and currently active google account                # features/step_definitions/authentication_steps.rb:5
  And I press "confirm"                                                          # features/step_definitions/web_steps.rb:52
    no button with value or id or text 'confirm' found (Capybara::ElementNotFound)
    (eval):2:in `click_button'
    ./features/step_definitions/web_steps.rb:53:in `/^(?:|I )press "([^"]*)"$/'
    features/auth_and_auth/initial_tests.feature:9:in `And I press "confirm"'
  Then I should see "Your account has been created and you have been signed in!" # features/step_definitions/web_steps.rb:105

релевантный вывод html:

<input id="confirm" name="confirm" text="confirm" title="confirm" type="submit" value="confirm">
<input id="cancel" name="cancel" text="cancel" title="cancel" type="submit" value="cancel">

Как очевидно, я учел value, id, text, а также name и title.Я также видел сообщение, в котором говорилось, что тип ввода должен быть указан как submit, который, по-видимому, был.И я попробовал это и с помощью кнопки confirm и кнопки cancel.

После поиска везде, о котором я знаю, и пробуя каждое предложение, которое выглядело даже отдаленно актуальным, я зашел в тупик.Что мне не хватает?

1 Ответ

3 голосов
/ 12 июля 2011

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

When /^(?:|I )press "([^"]*)"$/ do |button|
# click_button(button)  # the original web_steps.rb version that fails
  %{I press (button)}   # my revised version that passes
end

Я все равно буду благодарен за любые отзывы о:

  • , почему оригинальная версия web_steps.rb не работает,
  • , является ли это подходящим подходом или нети
  • , если есть более «рельсовый» способ справиться с этим.
...