Огурец, капибара и элемент не найдены - PullRequest
2 голосов
/ 02 сентября 2010

В моем приложении rails у меня есть страница со ссылкой, которая выполняет функцию javascript:

<%= link_to_function("Add an address", "add_fields(this)".html_safe) %>

В моей функции огурца у меня есть:

And I press "Add an address"

И сообщение, которое я получаю:

Capybara::ElementNotFound: no button with value or id or text 'Add an address' found

Я, наверное, что-то упускаю, но не могу найти, что это ..

Ответы [ 5 ]

3 голосов
/ 02 сентября 2010

Вы должны выполнить одно и только одно из следующих действий:

  • Переименуйте кнопку отправки в «Создать»
  • Измените тест на «И я нажимаю« Сохранить »'
  • Добавьте к своей кнопке идентификатор, а также измените тест, например:

    view
    = f.submit' Save ',: id =>: foo

    test
    И я нажимаю "foo"

2 голосов
/ 02 сентября 2010

Решено joaomilho:

Вы должны выполнить одно и только одно из следующих действий:

Переименуйте кнопку отправки на «Создать», измените тест на «И я нажимаю« Сохранить ».«Добавьте к своей кнопке идентификатор, а также измените тест, например:

view = f.submit« Сохранить »,: id =>: foo

test И я нажимаю»foo "

1 сценарий (1 пройдено) 3 шага (3 пройдено) 0m2.510s

То же поведение здесь, я использую:

Rails 3 Огурец / Капибара /Haml

Feature: Manage posts
  In order to [goal]
  [stakeholder]
  wants [behaviour]

  @wip
  Scenario: Register new post             # features/manage_posts.feature:6
    Given I am on the new post page       # features/step_definitions/web_steps.rb:19
    When I fill in "Title" with "title 1" # features/step_definitions/web_steps.rb:40
    And I fill in "Body" with "body 1"    # features/step_definitions/web_steps.rb:40
    And I uncheck "Published"             # features/step_definitions/web_steps.rb:83
    And I press "Create"                  # features/step_definitions/web_steps.rb:27     
    Then I should see "title 1"           # features/step_definitions/web_steps.rb:108
    And I should see "body 1"             # features/step_definitions/web_steps.rb:108
    And I should see "false"              # features/step_definitions/web_steps.rb:108

Шаг:

When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector|   with_scope(selector) do
    click_button(button)
    selenium.wait_for_page_to_load   
    end  
end

Просмотреть новый:

%h1 New post

= render 'form'

= link_to 'Back', posts_path

Ошибка:

 no button with value or id or text 'Create' found (Capybara::ElementNotFound)
      ./features/step_definitions/web_steps.rb:29
      ./features/step_definitions/web_steps.rb:14:in `with_scope'
      ./features/step_definitions/web_steps.rb:28:in `/^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/'
      features/manage_posts.feature:11:in `And I press "Create"'

_form:

= form_for @post do |f| 
  -if @post.errors.any?
    #errorExplanation
      %h2= "#{pluralize(@post.errors.count, "error")} prohibited this post from being saved:"
      %ul 
        - @post.errors.full_messages.each do |msg|
          %li= msg 

  .field
    = f.label :title
    = f.text_field :title
  .field
    = f.label :body
    = f.text_area :body
  .field
    = f.label :published
    = f.check_box :published
  .actions
    = f.submit 'Save'
1 голос
/ 22 июня 2011

Я верю, что вы хотите

And I follow "Add an Address"
0 голосов
/ 22 июня 2011

Не была ли исходная проблема в том, что вы создавали ссылку , но пытались нажать кнопку ?

Внимательно прочитайте документы по капибаре, и вы увидите, что методы отличаются.

0 голосов
/ 02 сентября 2010

Себастьян: Попробуйте добавить идентификатор к своей ссылке и сослаться на него в своем тесте.

...