Ich benutze Rspec und Capybara.
Wie kann ich einen Schritt schreiben, um a zu überprüfen checkbox
? Ich habe es check
nach Wert versucht , aber es kann meinen nicht finden checkbox
. Ich bin mir nicht sicher, was ich tun soll, da ich tatsächlich dieselbe ID mit unterschiedlichen Werten habe
Hier ist der 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">
Antworten:
Ich fand, dass Folgendes für mich funktioniert hat:
quelle
find(:css, "#cityID[value='62']").set(true)
funktioniert, aberfind(:css, "#cityID[][value='62']").set(true)
nicht gefunden wird und fehlschlägt. Wie führe ich dieselbe Funktion mit einer leeren Klammer-ID aus?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
Es ist besser, nicht mehrere Elemente mit derselben ID zu erstellen , damit Sie (und nicht nur dafür) ein Kontrollkästchen mit elegant einfach aktivieren / deaktivieren können
Wenn man nicht mehrere Elemente mit derselben ID vermeiden kann und dennoch ein Kontrollkästchen mit einem bestimmten Wert aktivieren muss , kann man dies mit tun
Weitere Informationen zu Eingabemanipulationen bei Capybara finden Sie hier
quelle
Beim Ausführen des Capybara-Tests haben Sie das
page
Objekt erhalten. Hiermit können Sie alle Kontrollkästchen aktivieren / deaktivieren. Wie bereits erwähnt @buruzaemon:Nehmen wir also an, Sie haben ein Kontrollkästchen in Ihrem HTML-Code wie folgt:
Sie können dies überprüfen mit:
Das Deaktivieren ist die gleiche
page.uncheck
Methode.quelle
check
Implementierung der Methode in Capybara.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Ich denke, Sie müssen möglicherweise zuerst Ihren Formularelementen eindeutige
id
s geben .In Bezug auf Capybara und Kontrollkästchen können Sie mit der Instanzmethode Capybara :: Node :: Actions # check ein Kontrollkästchen nach Name, ID oder Beschriftungstext suchen und aktivieren.
quelle
Wenn das Feld mit Text verknüpft ist, z. B. 'Option 3',
capybara 3.0.3
können Sie dies ab sofort tunquelle
Ich weiß, dass dies eine ältere Frage ist, aber ich habe sie selbst durchgearbeitet, und nachdem ich alle oben genannten Fragen ausprobiert habe, hat dies letztendlich für mich funktioniert:
Hoffe das ist hilfreich für jemanden. Ich benutze Capybara 2.4.4.
quelle
Ein altes Thema, aber eine andere Lösung ist:
check('Option 3', allow_label_click: true)
quelle
Sie können auch: xpath anstelle von: css verwenden, wenn Sie Probleme beim Auffinden haben.
In Chrome (und sicherlich auch in anderen Browsern) können Sie das Element "inspizieren". Wenn Sie dann mit der rechten Maustaste auf das gewünschte Element klicken, wird "xpath kopieren" angezeigt. Wenn Sie nicht wissen, was xpath war, tun Sie dies jetzt.
quelle
Sie können in diesem Beispiel auch überprüfen, ob nicht alle Kontrollkästchen aktiviert sind.
all ('input [type = checkbox]'). each do | checkbox | checkbox.should_not be_checked end
quelle
.set (true) hat bei mir nicht funktioniert, daher musste ich .click anrufen:
find(...).click
quelle
click
allein um einen gültigen Capybara-Befehl handelt (oder zumindest, wenn dies der Fall ist, scheint er nicht in den Dokumenten enthalten zu sein), und (2) wenn dies der Fall wäre, würde das Kontrollkästchen wahrscheinlich umgeschaltet. nicht sicher, ob esIch denke, dies lässt Capybara auf jeden Ereignis-Listener warten, der an diese Eingabe angehängt ist. Dies ist manchmal ein Problem, wenn es nicht wartet. Wenn diese Eingabe keine ID hat, wählen Sie eine andere Eigenschaft (es muss einen geben) ...
quelle
um das Kontrollkästchen zu aktivieren
quelle
Hatte einige Probleme mit dem benutzerdefinierten Kontrollkästchen, das hinter dem Beschriftungselement versteckt ist. Benötigt a
allow_label_click: true
.In Bezug auf diesen Blog-Beitrag ,
quelle