web-dev-qa-db-fra.com

Comment puis-je cliquer sur ce bouton dans capybara

S'il vous plaît aidez-moi à résoudre ce problème avec capybara

J'ai un bouton comme ça dans capybara:

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

J'ai essayé avec

click_button "verify"

mais cela donne une erreur:

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

Réponse de l'auteur

Le problème réside dans le code html:

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

Comme il existe un </div> redondant, le <input> était traité en dehors du formulaire, par conséquent capybara provoquait ces erreurs. Après avoir supprimé le </div> redondant, tout fonctionne correctement.

19
Mark Huk

Essayez d’ajouter js: true dans la describe. Cela se produit lorsque vous n'avez pas de formulaire contenant le bouton.

16
bonzofenix

Si vous avez un ID pour un élément, utilisez simplement l'approche de @ bonzofenix, mais simplifiez-la un peu:

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

0
taystack

Avez-vous essayé de "doubler" les sélecteurs CSS? Cela a été mon mécanisme préféré depuis capybara-2.4.3

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

tout autre attribut en plus du # id-vale devrait faire l'affaire, par exemple

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