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
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.
Versuchen Sie, js: true
in der describe
hinzuzufügen. Dies geschieht, wenn Sie kein Formular haben, das die Schaltfläche enthält.
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
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