2016-03-22 6 views
2

Capybara ist nicht in der Lage, einen <p> Umbau durch es Identifikation in meinem Gurkittest zu finden. Ich kann das Element sehen, wenn ich save_and_open_page. Aber ich kann es nicht mit has_css? oder lässt find:Capybara kann Element durch Identifikation nicht finden

pry(#<Object>)> page.html.scan(/notice_sent/).count => 1 pry(#<Object>)> page.html.scan(/id=\"notice_sent\"/).count => 1 pry(#<Object>)> page.find('#notice_sent') Capybara::ElementNotFound: Unable to find css "#notice_sent" from /Users/me/.gem/ruby/2.1.7/gems/capybara-2.4.4/lib/capybara/node/finders.rb:41:in 'block in find'

Was bin ich?

Antwort

8

standardmäßig Capybara versuchen Elemente nicht finden, die auf der Seite nicht sichtbar sind. Sie können versuchen

page.find('#notice_sent', visible: :all) 

zu sehen, ob das der Fall ist. Wenn dies der Fall ist und Sie eine App testen, sollten Sie alle Aktionen ausführen, die ein Benutzer ausführen würde, um dieses Element sichtbar zu machen, und dann nach seiner Anwesenheit suchen.

+0

Ja - die ID war auf der Seite aber wasn 't sichtbar, bis ich einen Klick auf eine Registerkarte hinzugefügt –

-1

Ich denke, es ist Zeit, Capybara für den Anfang zu aktualisieren.

Und ich kann es jetzt nicht testen, aber page.html.find('#notice_sent')

+0

seite.html einen String zurückgeben, so 'find' keine gültige Methode ist –

+0

Um Findern an einer Schnur verwenden Sie benötigen würde ein Capybara :: Knoten :: Simple von ihm wie' Capybara.string (Seite erstellen .html) .find (...) '- solange dies möglich ist, ist es wirklich besser herauszufinden, warum Capybara das Element in der Sitzung nicht findet - siehe meine Antwort –

-1

Obwohl ich ein Anfänger zu Capybara bin, denke ich, dass das für Sie arbeiten könnte !! Diesen Code zu Ihrer env.rb Datei

page.find('#notice_sent', :visible => false) 

Auch hinzuzufügen.

Capybara.ignore_hidden_elements = false 
+0

Einstellung ignore_hidden_elements zu false ist eine wirklich schlechte Idee 99% der Zeit, vor allem, wenn Sie Capybara als Test-Tool verwenden. Dies führt dazu, dass Tests für viele Probleme mit der Benutzeroberfläche fälschlicherweise bestanden werden. –