我知道有一个简单的解决方法,但对于我的生活,我不记得它是什么。
我的功能文件如下:
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。
我以前解决过这个问题,但是对于我的生活,我无法弄清楚如何......