wake-up-neo.com

Wie klicke ich auf diese Schaltfläche in Capybara

Bitte helfen Sie mir, dieses Problem mit Capybara zu lösen

Ich habe eine Schaltfläche wie diese in Capybara:

<input type="submit" value="Verify" name="verify" id="verify" class="button">

Ich habe es mit versucht

click_button "verify"

aber es gibt fehler:

Failure/Error: find('#verify').click
NoMethodError:
  undefined method `node_name' for nil:NilClass
18
jwall

Antwort des Autors

Das Problem liegt im HTML-Code:

<div>
<form>
<div>    
</div>
</div>
  <input type="submit" value="Verify" name="verify" id="verify" class="button">
</form>

Da es einen redundanten </div> gibt, wurde <input> außerhalb des Formulars behandelt. Daher verursachen capybara diese Fehler. Nachdem der redundante </div> gelöscht wurde, funktioniert alles einwandfrei.

19
Mark Huk

Versuchen Sie, js: true in der describe hinzuzufügen. Dies geschieht, wenn Sie kein Formular haben, das die Schaltfläche enthält.

16
bonzofenix

Wenn Sie eine ID für ein Element haben, verwenden Sie einfach den Ansatz von @ bonzofenix, machen Sie es jedoch etwas einfacher:

within 'form' do find('#verify').click end

0
taystack

Haben Sie versucht, die CSS-Selektoren zu "verdoppeln"? Dies ist seit dem Capybara-2.4.3 mein Go-To-Mechanismus

find("#verify").find("[name=verify]").click

jedes andere Attribut zusätzlich zu # id-vale sollte den Trick ausführen, z

find("#verify").find(".button]").click
0
Centzon