Używam Rspec i Capybara.
Jak mogę napisać krok, aby sprawdzić checkbox
? Próbowałem check
według wartości, ale nie mogę znaleźć mojego checkbox
. Nie jestem pewien, co robić, ponieważ mam w rzeczywistości ten sam identyfikator z różnymi wartościami
Oto kod:
<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">
Odpowiedzi:
Zauważyłem, że działa dla mnie:
źródło
find(:css, "#cityID[value='62']").set(true)
będzie działać, alefind(:css, "#cityID[][value='62']").set(true)
nie zostanie znaleziony i nie powiedzie się. Jak uruchomić tę samą funkcję z pustym identyfikatorem nawiasu?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
Lepiej nie tworzyć wielu elementów o tym samym identyfikatorze , aby (i nie tylko) można było łatwo zaznaczyć / odznaczyć checkbox eleganckim
Jeśli nie można uniknąć wielu elementów o tym samym identyfikatorze i nadal trzeba zaznaczyć pole wyboru o określonej wartości , może to zrobić za pomocą
Więcej informacji na temat manipulacji przy wprowadzaniu kapibary można znaleźć tutaj
źródło
Podczas testu kapibary otrzymałeś
page
obiekt. Możesz tego użyć, aby zaznaczyć / odznaczyć dowolne pola wyboru. Jak już wspomniał @buruzaemon:Załóżmy więc, że masz pole wyboru w swoim html:
Możesz to sprawdzić za pomocą:
Odznacz to to samo, co po prostu użyj
page.uncheck
metody.źródło
check
sposób metoda została zaimplementowana w Kapibara.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Myślę, że przede wszystkim będziesz musiał nadać unikalne wartości
id
swoim elementom formularza .Ale w odniesieniu do Kapibary i pól wyboru, metoda instancji sprawdzania Capybara :: Node :: Actions # pozwoli Ci znaleźć i zaznaczyć pole wyboru według nazwy, identyfikatora lub tekstu etykiety.
źródło
Jeśli pole jest powiązane z tekstem, np. „Opcja 3”,
capybara 3.0.3
możesz po prostu zrobićźródło
Wiem, że to starsze pytanie, ale pracowałem nad tym osobiście i po wypróbowaniu wszystkich powyższych, oto, co w końcu zadziałało:
Mam nadzieję, że to komuś pomoże. Używam Kapibary 2.4.4.
źródło
Stary temat, ale inne rozwiązanie to:
check('Option 3', allow_label_click: true)
źródło
możesz też użyć: xpath zamiast: css, jeśli masz problemy ze znalezieniem go.
w Chrome (i na pewno w innych przeglądarkach) możesz „sprawdzić element”, a następnie klikając prawym przyciskiem myszy element, który Cię interesuje, jest „kopiuj xpath”, jeśli nie wiesz, czym była xpath, teraz to robisz.
źródło
Możesz również sprawdzić, czy wszystkie pola wyboru nie są zaznaczone w tym przykładzie.
all ('input [type = checkbox]'). each do | checkbox | checkbox.should_not be_checked end
źródło
.set (true) nie działało dla mnie, więc musiałem zadzwonić .click:
find(...).click
źródło
click
sama w sobie jest prawidłową komendą kapibary (a przynajmniej jeśli tak jest, nie wydaje się, aby była w dokumentach) i (2) jeśli była, prawdopodobnie zmieniłaby pole wyboru, nie upewnij się, że jest włączony lub wyłączonyWystąpiły problemy z niestandardowym polem wyboru, które jest ukryte za elementem etykiety. Potrzebowałem
allow_label_click: true
.W nawiązaniu do tego posta na blogu ,
źródło
Myślę, że spowoduje to, że kapibara będzie czekać na dowolny odbiornik zdarzeń dołączony do tego wejścia, co czasami jest uciążliwe, jeśli nie czeka .... Jeśli to wejście nie ma identyfikatora, wybierz inną właściwość (musi być) ...
źródło
aby zaznaczyć pole wyboru
źródło