J'utilise Rspec et Capybara.
Comment puis-je écrire une étape pour vérifier un checkbox
? J'ai essayé check
par valeur mais il ne trouve pas mon checkbox
. Je ne sais pas quoi faire, car j'ai en fait le même identifiant avec des valeurs différentes
Voici le code:
<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">
Réponses:
J'ai trouvé que ce qui suit fonctionnait pour moi:
la source
find(:css, "#cityID[value='62']").set(true)
fonctionnera maisfind(:css, "#cityID[][value='62']").set(true)
ne sera pas trouvé et échouera. Comment exécuter la même fonction avec un identifiant de parenthèse vide?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
Il vaut mieux ne pas créer plusieurs éléments avec le même identifiant , de sorte que (et pas seulement pour cela) vous puissiez facilement cocher / décocher une case avec élégant
Si l'on ne peut pas éviter plusieurs éléments avec le même identifiant et doit quand même cocher une case avec une certaine valeur , il peut le faire avec
Plus d'informations sur les manipulations d'entrée capybara peuvent être trouvées ici
la source
Lors de l'exécution du test capybara, vous obtenez l'
page
objet. Vous pouvez l'utiliser pour cocher / décocher toutes les cases. Comme @buruzaemon l'a déjà mentionné:Supposons donc que vous ayez une case à cocher dans votre html comme:
Vous pouvez vérifier cela avec:
Décocher est la même
page.uncheck
méthode d' utilisation .la source
check
méthode est mise en œuvre à Capybara.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Je pense que vous devrez peut-être donner des éléments uniques
id
à vos éléments de formulaire , tout d'abord.Mais en ce qui concerne Capybara et les cases à cocher, la méthode d'instance Capybara :: Node :: Actions # check vous permettra de trouver et de cocher une case par nom, identifiant ou texte d'étiquette.
la source
Si la boîte est associée à du texte, par exemple 'Option 3', alors à partir de
capybara 3.0.3
vous pouvez simplement fairela source
Je sais que c'est une question plus ancienne, mais j'y ai travaillé moi-même, et après avoir essayé tout ce qui précède, c'est ce qui a finalement fonctionné pour moi:
J'espère que cela est utile à quelqu'un. J'utilise Capybara 2.4.4.
la source
Un vieux sujet mais une autre solution est:
check('Option 3', allow_label_click: true)
la source
vous pouvez également utiliser: xpath au lieu de: css si vous rencontrez des problèmes pour le trouver.
sur Chrome (et sûrement d'autres navigateurs), vous pouvez "inspecter l'élément" et puis en faisant un clic droit sur l'élément qui vous intéresse, il y a "copier xpath" si vous ne savez pas ce qu'était xpath, maintenant vous le faites.
la source
Vous pouvez également vérifier que toutes les cases à cocher ne sont pas cochées avec cet exemple.
all ('input [type = checkbox]'). each do | checkbox | checkbox.should_not be_checked end
la source
.set (true) ne fonctionnait pas pour moi, j'ai donc dû appeler .click:
find(...).click
la source
click
ce soit une commande capybara valide en soi (ou du moins si c'est le cas, cela ne semble pas être sur la documentation), et (2) si c'était le cas, cela activerait probablement la case à cocher, pas assurez-vous qu'il étaitJ'ai eu quelques problèmes avec la case à cocher personnalisée qui est cachée derrière l'élément d'étiquette. Besoin d'un
allow_label_click: true
.En référence à cet article de blog ,
la source
Je pense que cela fera attendre capybara pour tout écouteur d'événement attaché à cette entrée, ce qui est parfois pénible s'il n'attend pas ... Si cette entrée n'a pas d'ID, choisissez une autre propriété (il doit y en avoir un) ...
la source
pour cocher la case
la source