Używam Ruby on Rails z ogórkiem i kapibarą.
Jak bym zabrał się do testowania prostego polecenia potwierdzenia („Czy na pewno?”)?
Gdzie mogę znaleźć dalszą dokumentację dotyczącą tego problemu?
automated-tests
capybara
integration-testing
Yuval Karmi
źródło
źródło
Odpowiedzi:
Wygląda na to, że w Kapibara nie da się tego zrobić niestety. Ale jeśli przeprowadzasz testy ze sterownikiem Selenium (i prawdopodobnie innymi sterownikami obsługującymi JavaScript), możesz go zhakować. Tuż przed wykonaniem akcji, która spowodowałaby wyświetlenie okna dialogowego potwierdzenia, nadpisz
confirm
metodę, aby zawsze zwracała wartość true. W ten sposób okno dialogowe nigdy nie zostanie wyświetlone, a testy będą kontynuowane tak, jakby użytkownik nacisnął przycisk OK. Jeśli chcesz zasymulować odwrotność, po prostu zmień to na wartość false.źródło
Sterownik selenu teraz to obsługuje
Z Kapibary można uzyskać do niego dostęp w następujący sposób:
lub
lub
źródło
page.driver.browser
w odpowiedzi DerekaZaimplementowałem te dwa kroki internetowe w
/features/step_definitions/web_steps.rb
:źródło
Jeśli chcesz dokładnie przetestować wyświetlaną wiadomość, oto szczególnie hakerski sposób na zrobienie tego. Nie polecam tego jako pięknego kodu, ale spełnia swoje zadanie. Będziesz musiał załadować http://plugins.jquery.com/node/1386/release lub zmienić go tak, aby robił pliki cookie natywnie, jeśli nie chcesz korzystać z jQuery.
Użyj tego rodzaju historii:
I te kroki
źródło
Aktualizuję to dla aktualnych wydań Kapibary. Większość dzisiejszych sterowników Capybara obsługuje modalne API. Aby zaakceptować potwierdzenie modalne, zrobiłbyś
Można go użyć w ogórku z czymś w rodzaju
który kliknie nazwany przycisk, a następnie zaakceptuje pole potwierdzenia z dopasowaniem tekstu
źródło
Kapibary-WebKit kierowca obsługuje to za dobrze.
źródło
źródło
Prickle dodaje kilka wygodnych metod pracy z wyskakującymi okienkami w selenie i webkicie
źródło
W tym streszczeniu opisano kroki, aby przetestować okno dialogowe potwierdzenia JS w Railsach 2 i 3 z dowolnym sterownikiem Capybara.
Jest to adaptacja poprzedniej odpowiedzi, ale nie wymaga wtyczki jQuery Cookie.
źródło
Wypróbowałem powyższe odpowiedzi bez powodzenia. W końcu to zadziałało dla mnie:
źródło