können Sie bitte mit diesem Problem helfen?Capybara kann Felder im Funktionstest nicht finden
Capybara können die Felder für "Artikel [title]" und "Artikel [body]", im folgenden Feature-Test finden:
feature "Creating Articles" do
scenario "A user creates a new article" do
visit '/'
click_link("New Article")
fill_in "article[title]", with: "title"
fill_in "article[body]", with: "article body"
click_button "Create Article"
expect(page).to have_content "title"
expect(page).to have_content "article body"
end
Beiden Felder in den Seiten-Quellcode zeigen sich als <input class="form-control" type="text" name="article[title]" id="article_title">
und <textarea class="form-control" name="article[body]" id="article_body" cols="60" rows="12"></textarea>
, aber RSpec zeigt diesen Fehler weiterhin an.
Capybara::ElementNotFound:
Unable to find field "article[title]"
Vielen Dank für Ihre Hilfe!
Da Sie eine ID auf beide definiert haben, warum nicht versuchen: fill_in „article“ mit: „title“ & fill_in „Körper“, mit: „Artikeltext“ – orion
@orion 'wird fill_in' sichtbare Elemente finden, indem ID-, Name- oder Platzhalterattribute oder verknüpfter Beschriftungstext, so dass ein Wechsel zur ID keinen Unterschied macht. @street Ist der HTML-Code, den Sie anzeigen, wenn Sie im Test-Env oder in der Entwicklungsumgebung laufen? Wenn das dev env - add 'Schlaf 5; puts page.html 'nach dem' click_link ("New Article") '(das zweite - nicht sicher, warum Sie es zweimal klicken) und sehen Sie, was die tatsächliche Seitenquelle in der Testumgebung ist. Odds sind das Feld, von dem du denkst, dass es dort nicht ist oder es wird versteckt. –
@Thomas Walpole. Ich hatte eine Factory- und sign_in-Methode, die in meinem obigen Code nicht enthalten war (ich dachte, es sei überflüssig). Nachdem ich "sleep 5; puts page.html" hinzugefügt hatte, half es mir, das Problem zu sehen, dass Capybara aufgrund einer falschen Methode in meiner Fabrik nicht in der Lage war, sign_in zu passieren. Danke für deine Hilfe! – rstreet