これには簡単な修正があることは知っていますが、私の人生ではそれが何であるかを思い出せません。
私の機能ファイルは次のとおりです。
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)
しかし、フォーム要素'name'は明らかにページ上にあります。
「Fillin」の前に「Thenshowme the page」を追加すると、capybaraはインデックスページを保存し、編集フォームにまったく到達していないと思います。
...それでも、機能に「@javascript」タグを追加すると、このページにJavascriptがない場合でも、完全に機能します。
私は以前にこれを一度解決しましたが、私の人生のために私はどのように解決することができません...