0

これには簡単な修正があることは知っていますが、私の人生ではそれが何であるかを思い出せません。

私の機能ファイルは次のとおりです。

  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がない場合でも、完全に機能します。

私は以前にこれを一度解決しましたが、私の人生のために私はどのように解決することができません...

4

2 に答える 2

1

さて、私はなんとか問題を解決することができました-問題は「編集」リンクをクリックしていた私のCSSセレクターにありました。なぜそれがそのまま機能しなかったのかはわかりませんが、find(:css, "a img[alt=Edit]").clickを読むように変更したところ、click_link('Edit')完全に機能しました。

ソース: http: //groups.google.com/group/ruby-capybara/browse_thread/thread/9c997395306d40e2/

于 2011-01-19T00:58:51.553 に答える
0

手始めに、Whenブロック内のCapybaravisitメソッドを使用して編集ページを実際に「訪問」する必要があります。また、タグにテキストを挿入するためにfill_inを使用したくないと思います(少なくともエラーメッセージによると、テキストフィールド/エリア専用です)。

于 2011-01-18T01:24:24.110 に答える