Щелчок огурца работает только при использовании @javascript? - PullRequest
0 голосов
/ 18 января 2011

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

Мой файл функций выглядит следующим образом:

  Scenario: Editing locations
    When I edit "Western Australia"
      And fill in "Name" with "Tasmania"
      And I press "Save"
    Then I should see a form success message

И я определил шаг «Редактировать» следующим образом:

When /^I edit "([^"]*)"$/ do |name|
  within(:xpath, "//tr[./td[contains(text(), '#{name}')]]") do
    find(:css, "a img[alt=Edit]").click
  end
end

HTML-код страницы индекса, на которой он работает, выглядит следующим образом:

<tr>
    <td>Western Australia</td>
    <td>WA</td>
    <td>
        <a href="/admin/locations/2/edit"><img alt="Edit" src="/images/icons/pencil.png" title="Edit" /></a>
    </td>
</tr>

А затем форма HTML:

<%= semantic_form_for [:admin, @location] do |f| %>
<%= f.inputs do %>
    <%= f.input :name %>
    <%= f.input :abbreviation %>
<% end %>

    <%= f.submit "Save" %></li> 
<% end %>

Как это не работает - я получаю следующую ошибку:

And fill in "Name" with "Tasmania"                           # features/step_definitions/web_steps.rb:39
  cannot fill in, no text field, text area or password field with id, name, or label 'Name' found (Capybara::ElementNotFound)

Но элемент формы «имя» явно присутствует на странице.

Если я добавлю «Затем покажи мне страницу» перед «Заполнить», то капибара сохранит страницу индекса, заставляя меня думать, что она вообще не доходит до формы редактирования.

... Тем не менее, если я добавлю к функции тег @javascript, он будет отлично работать, даже если на этой странице нет Javascript.

Я уже однажды решил это, но я не могу понять, как ...

Ответы [ 2 ]

1 голос
/ 19 января 2011

Ну, мне удалось решить проблему - проблема была с моим селектором CSS, который нажимал ссылку «Редактировать».Я не знаю, почему он не работал как есть, но я изменил find(:css, "a img[alt=Edit]").click на click_link('Edit'), и он отлично работал.

Источник: http://groups.google.com/group/ruby-capybara/browse_thread/thread/9c997395306d40e2/

0 голосов
/ 18 января 2011

Для начала вам нужно «посетить» страницу редактирования, используя метод посещения Капибары в вашем блоке «Когда».Кроме того, я не верю, что вы хотите использовать fill_in для вставки текста в ваши теги (по крайней мере, согласно сообщению об ошибке, это только для текстовых полей / областей).

...