138 votes

Comment vérifier une case à cocher dans le capybara?

Je suis l'aide de Rspec et le Capybara.

Comment puis-je écrire un pas de cocher une case? J'ai essayé de "vérifier" par valeur, mais il ne peut pas trouver ma case. Je ne suis pas sûr de quoi faire, en fait j'ai même ID avec des valeurs différentes

Merci

Exemple de code html

 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">

160voto

Jon M Points 6455

J'ai trouvé le suivant fonctionné pour moi:

# Check
find(:css, "#cityID[value='62']").set(true)

# Uncheck
find(:css, "#cityID[value='62']").set(false)

150voto

Installero Points 2044

Il est préférable de ne pas créer plusieurs éléments avec le même id, de sorte que (et pas seulement) vous pouvez cocher/décocher une case avec élégant

check 'cityID'
uncheck 'cityID'

Si on ne peut pas éviter plusieurs éléments avec le même id et a encore besoin de cocher une case avec une certaine valeur, il peut le faire avec

find(:css, "#cityID[value='62']").set(true)
find(:css, "#cityID[value='62']").set(false)

Plus d'informations sur le capybara entrée manipulations peuvent être trouvés ici

60voto

burninggramma Points 1733

Lors de l'exécution de capybara test, vous avez obtenu l' page objet. Ce que vous pouvez utiliser pour cocher/décocher toutes les cases. @Buruzaemon déjà mentionné:

pour trouver et cochez une case par nom, id, ou le texte de l'étiquette.

Donc, supposons que vous avez une case à cocher dans votre code html comme:

<label>  
  <input type="checkbox" value="myvalue" name="myname" id="myid">
  MyLabel
</label>

Vous pouvez vérifier cela avec:

page.check('myid')
page.check('MyLabel')
page.check('myname')

Décochez est la même juste utiliser page.uncheck méthode.

27voto

buruzaemon Points 2540

Je pense que vous pourriez avoir à donner unique, ids à vos éléments de formulaire, tout d'abord.

Mais en ce qui concerne le Capybara et des cases à cocher, le Capybara::Node::Actions#vérification de la méthode d'instance va vous permettre de découvrir et de cocher une case par nom, id, ou le texte de l'étiquette.

1voto

kulssaka Points 41

vous pouvez également utiliser :xpath au lieu de :css si vous avez quelques problèmes à trouver.

find(:xpath , '//*[@id="exemple"]').set(vrai)

sur Chrome (et sûrement d'autres navigateurs), vous pouvez "inspecter l'élément", puis par un clic droit sur l'élément qui vous intéresse, il existe un "copier xpath" si vous ne savez pas ce xpath était, maintenant vous le savez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X