3

カピバラを試すのは初めてですが、フォーム要素が見つからない理由がわかりません。

フォーム要素を見つけようとするたびに、

When /^they submit a resolution in Markdown$/ do
  visit "/resolutions/new"
  fill_in "title", :with => "Title"
  fill_in "libelle", :with => "Some text here\n\nNew paragraph"
  click_button "Submit"
end

それがどこにあるのかわからない、

Scenario: Submission of a resolution                 # features/resolutions.feature:5
    Given the user is a member                       # features/step_definitions/user_steps.rb:26
    When they submit a resolution in Markdown        # features/step_definitions/resolution_steps.rb:8
      cannot fill in, no text field, text area or password field with id, name, or label 'title' found (Capybara::ElementNotFound)
      (eval):2:in `fill_in'
      ./features/step_definitions/resolution_steps.rb:10:in `/^they submit a resolution in Markdown$/'
      features/resolutions.feature:7:in `When they submit a resolution in Markdown'

ページに表示されていても

<%= form_for(@resolution) do |f| %>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :libelle %><br />
    <%= f.text_area :libelle %>
  </div>
  <div class="actions">
    <%= f.submit "Submit" %>
  </div>
<% end %>

正しくレンダリングされたようです。

Started GET "/resolutions/new" for 127.0.0.1 at 2012-07-06 00:47:24 -0400
  [1m[36m (0.0ms)[0m  [1mSAVEPOINT active_record_1[0m
  [1m[35m (0.2ms)[0m  UPDATE "users" SET "last_sign_in_at" = '2012-07-06 04:47:24.980196', "current_sign_in_at" = '2012-07-06 04:47:24.980196', "last_sign_in_ip" = '127.0.0.1', "current_sign_in_ip" = '127.0.0.1', "sign_in_count" = 1, "updated_at" = '2012-07-06 04:47:24.980658' WHERE "users"."email" = 'alexandre@membres.jndq.ca'
  [1m[36m (0.0ms)[0m  [1mRELEASE SAVEPOINT active_record_1[0m
Processing by ResolutionsController#new as HTML
  Rendered resolutions/_form.html.erb (3.8ms)
  Rendered resolutions/new.html.erb within layouts/application (4.9ms)
Completed 200 OK in 18ms (Views: 7.9ms | ActiveRecord: 0.2ms)
  [1m[35m (0.2ms)[0m  rollback transaction
  [1m[36m (0.0ms)[0m  [1mbegin transaction[0m
  [1m[35m (0.0ms)[0m  SAVEPOINT active_record_1
  [1m[36mUser Exists (0.1ms)[0m  [1mSELECT 1 FROM "users" WHERE "users"."email" = 'normand@pq.ui' LIMIT 1[0m
  [1m[35mSQL (0.3ms)[0m  INSERT INTO "users" ("authentication_token", "clearance", "confirmation_sent_at", "confirmation_token", "confirmed_at", "created_at", "current_sign_in_at", "current_sign_in_ip", "email", "facebook_uid", "id", "last_sign_in_at", "last_sign_in_ip", "name", "parent", "remember_created_at", "sign_in_count", "unconfirmed_email", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)  [["authentication_token", nil], ["clearance", 9], ["confirmation_sent_at", nil], ["confirmation_token", nil], ["confirmed_at", nil], ["created_at", Fri, 06 Jul 2012 04:47:25 UTC +00:00], ["current_sign_in_at", nil], ["current_sign_in_ip", nil], ["email", "normand@pq.ui"], ["facebook_uid", nil], ["id", nil], ["last_sign_in_at", nil], ["last_sign_in_ip", nil], ["name", "Normand Portequi"], ["parent", nil], ["remember_created_at", nil], ["sign_in_count", 0], ["unconfirmed_email", nil], ["updated_at", Fri, 06 Jul 2012 04:47:25 UTC +00:00]]
  [1m[36m (0.0ms)[0m  [1mRELEASE SAVEPOINT active_record_1[0m

明らかなことのように思えますが、見つけられません。この質問を見つけましたが、答えはまったく役に立ちませんでした。Devise +Cucumber のサンプル アプリを確認しても、何が問題なのかわかりません。

これは私と私のテストを殺しています。何か案は?

4

4 に答える 4

4

同様の問題が発生していましたが、フォーム要素自体に「id:」フィールドを追加する必要がありました。

たとえば、次のようになります。

<div class="field">
  <%= f.label :title %><br />
  <%= f.text_field :title %>
</div>

ただし、次のように変更すると、次のようになります。

<div class="field">
  <%= f.label :title %><br />
  <%= f.text_field :title, id:"title" %>
</div>

text_field要素に「id」フィールドを追加したことに注意してください。カピバラがラベルを見つけられなかった理由はわかりませんが、これが私にとってうまくいった理由です。それがあなた(または他の誰か)に役立つことを願っています。

于 2012-10-31T19:03:04.153 に答える
4

puts page.bodyafterを追加してみてvisit "/resolutions/new"、スタック トレースが何を示しているかを確認してください。フォーム フィールドの ID を確認できます。たとえば、私の列の 1 つは「name」と呼ばれていますが、レンダリングされた html の ID は「user_name」です。

于 2012-10-01T10:36:22.137 に答える
0

これは勝手な推測ですが、待つ必要があると思います。「fill_in」がページが利用可能になるのを待っているかどうかはわかりません。「検索」が自動的に待機することは知っています。

増やしてみる

Capybara.default_wait_time
于 2012-07-06T05:32:14.437 に答える
0

Rails ビューが次のようになっている場合:

<%= form.text_field :first_name %>

最初の部分を大文字にし、その後にスペースを入れ、残りを小文字にして、要素を呼び出してみてください。

fill_in "First name", with: 'Elaine'

id 属性は必要ありません。

于 2015-08-05T15:36:40.657 に答える