Sprawdź obecność elementu i poczekaj na polecenie Selenium
⚡ Inteligentne podsumowanie
Sprawdź obecność elementu i wykonaj polecenia waitFor w Selenium IDE sprawdza, czy strona zawiera elementy i tekst oczekiwane przez test, a następnie wstrzymuje odtwarzanie, dopóki dynamiczny warunek nie stanie się prawdziwy, przed uruchomieniem następnego kroku.
nagrany Selenium IDE Skrypt klika i pisze, ale sam nigdy nie decyduje, czy aplikacja działała poprawnie. Zajmują się tym dwie rodziny poleceń: zweryfikować polecenia, które sprawdzają stan strony i czekać polecenia, które wstrzymują wykonywanie do momentu, aż strona będzie gotowa do sprawdzenia.
⚠️ Uwaga dotycząca wersji: poniższe zrzuty ekranu pochodzą z oryginału Firefox-podłącz Selenium IDE, które nie jest już dystrybuowane, i używa nazw camelCase w Selenese. Obecnym IDE jest Chrome, Firefox i Edge'a rozszerzenie przeglądarkiOpisane tutaj zachowanie nadal obowiązuje, ale zmieniono kilka nazw poleceń — mapaping tabela znajduje się później w tym artykule, a każde oryginalne polecenie i zrzut ekranu są zachowane dokładnie w takiej formie, w jakiej zostały opublikowane.
Sprawdź obecność elementu
Aby sprawdzić obecność elementu, możemy użyć następujących dwóch poleceń:
- zweryfikuj element obecny – zwraca TRUE, jeśli określony element został ZNALEZIONY na stronie; FALSE, jeśli jest inaczej
- zweryfikujElementNotPresent – zwraca TRUE jeśli podany element NIE ZNALEZIŁ się nigdzie na stronie; FAŁSZ, jeśli występuje.
Oba polecenia przyjmują element lokalizator Target pole — identyfikator, nazwa, selektor CSS, tekst łącza lub XPath wyrażenie — i żadne z nich nie potrzebuje wartości.
Poniższy skrypt testowy sprawdza, czy pole tekstowe Nazwa użytkownika znajduje się w Mercury Strona główna wycieczek, podczas gdy pole tekstowe Imię nie jest. Pole tekstowe Imię jest w rzeczywistości elementem obecnym na stronie Rejestracja Mercury Wycieczki, nie na stronie głównej.
Ponieważ to są zweryfikować polecenia, a nie zapewniać Po wykonaniu poleceń błąd zostaje zapisany w dzienniku, a pozostałe kroki są nadal wykonywane. To rozróżnienie zostanie szczegółowo omówione poniżej.
Sprawdź obecność określonego tekstu w poleceniu w Selenium
Samo sprawdzenie istnienia elementu nie zawsze wystarczy — często konieczne jest przeprowadzenie testu w celu potwierdzenia słów wyświetlanych użytkownikowi. Dwa polecenia tekstowe rozwiązują ten problem.
- zweryfikujTextPresent – zwraca TRUE, jeśli określony ciąg tekstowy został ZNALEZIONY gdzieś na stronie; FALSE, jeśli jest inaczej
- zweryfikujTextNotPresent – zwraca PRAWDA, jeśli podany ciąg tekstowy NIE ZNALEZIONO się nigdzie na stronie; FAŁSZ, jeśli został znaleziony
Pamiętaj, że w tych poleceniach rozróżniana jest wielkość liter.
Poniższy dziennik pokazuje tę samą stronę sprawdzoną dwukrotnie i zawierającą dwa różne zapisy tej samej frazy.
W powyższym scenariuszu, „Atlanta – Las Vegas” zostało potraktowane inaczej niż „Atlanta – Las Vegas”, ponieważ litera „A” w „Atlancie” była wielka w pierwszym przypadku, a mała w drugim. Po użyciu polecenia verifyTextPresent w obu przypadkach, jedno zakończyło się powodzeniem, a drugie niepowodzeniem.
Sprawdź konkretną pozycję elementu
Wady układu rzadko powodują awarię lokalizatora, więc kontrole obecności je pomijają. Polecenia pozycjonujące wypełniają tę lukę.
Selenium IDE wskazuje położenie elementu poprzez pomiar (w pikselach) jego odległości od lewej lub górnej krawędzi okna przeglądarki.
- zweryfikuj pozycję elementu po lewej stronie – sprawdza, czy podana liczba pikseli odpowiada odległości elementu od lewej krawędzi strony. To zwróci FAŁSZ, jeśli określona wartość nie odpowiada odległości od lewej krawędzi.
- zweryfikujElementPozycjaNa górze – sprawdza, czy podana liczba pikseli odpowiada odległości elementu od górnej krawędzi strony. To zwróci FAŁSZ, jeśli określona wartość nie odpowiada odległości od górnej krawędzi.
Poniższy skrypt rejestruje oczekiwane przesunięcia pikseli w kolumnie Wartość.
Należy obchodzić się z tymi dwoma poleceniami ostrożnie. Przesunięcie pikseli zmienia się w zależności od rozmiaru okna, poziomu powiększenia i zainstalowanych czcionek, więc zakodowana na stałe wartość, która jest poprawna na jednym komputerze, może nie zadziałać na innym.
Czekaj na polecenie Selenium
Polecenie verify może sprawdzić tylko to, co jest już na ekranie, więc sprawdzenie wykonane zbyt wcześnie kończy się niepowodzeniem, nawet gdy aplikacja działa. Polecenia wait rozwiązują ten problem z synchronizacją.
Poniżej przedstawiono typy poleceń wait w Selenium
i polecenia Czekaj
Są to polecenia, które będą czekać na załadowanie nowej strony przed przejściem do następnego polecenia.
Przykładami są
- kliknijI czekaj
- wpiszAndWait
- wybierz i czekaj
Każdy z nich to zwykłe polecenie akcji z dołączonym sufiksem AndWait, jak pokazano w zapisanym poniżej kroku.
czekaj na polecenia
Są to polecenia oczekujące na spełnienie określonego warunku przed przejściem do kolejnego polecenia (niezależnie od załadowania nowej strony). Polecenia te są bardziej odpowiednie do stosowania w dynamicznych witrynach internetowych opartych na technologii AJAX, które zmieniają wartości i elementy bez ponownego ładowania całej strony. Przykłady obejmują:
- poczekaj na tytuł
- poczekaj na tekst obecny
- poczekaj na alert
Rozważmy poniższy scenariusz z Facebookiem.
Możemy użyć kombinacji „kliknij” i „waitForTextPresent”, aby zweryfikować obecność tekstu „Podaj swoje urodziny”.
Nie możemy skorzystać z funkcji clickAndWait, ponieważ po kliknięciu opcji „Dlaczego muszę podać swoją datę urodzenia?” nie została załadowana żadna strona. połączyć. Jeśli to zrobimy, test się nie powiedzie
Ta sama zasada dotyczy każdej treści wstrzykiwanej przez skrypt, a nie przez nawigację, dlatego Ekrany sterowane AJAX-em prawie zawsze należy użyć polecenia waitFor zamiast andWait.
Polecenia Assert, Verify i waitFor w Selenium IDE
Początkujący często wybierają niewłaściwą rodzinę, a potem zastanawiają się, dlaczego zestaw zatrzymuje się przy pierwszym błędzie lub dlaczego zgłasza dwadzieścia błędów, z których wszystkie tracWracamy do jednego. Te trzy prefiksy odpowiadają na trzy różne pytania.
| Prefiks | Co to robi | W przypadku niepowodzenia | Najlepiej stosować do |
|---|---|---|---|
| zapewniać | Natychmiast sprawdza stan | Rejestruje awarię i zatrzymuje przypadek testowy | Warunki wstępne — logowanie musi się powieść, zanim cokolwiek innego będzie miało sens |
| zweryfikować | Natychmiast sprawdza stan | Rejestruje awarię i kontynuuje wykonywanie następnego polecenia | Niezależne kontrole, np. kilka etykiet na jednej stronie potwierdzenia |
| czekać na | Ankiety są przeprowadzane do momentu spełnienia warunku | Rejestruje awarię po upływie limitu czasu, a następnie kontynuuje działanie | Wszystko, co pojawia się późno — odpowiedzi AJAX, spinnery, okna dialogowe |
Praktyczny schemat łączy wszystkie trzy: potwierdź stronę, na którą trafiłeś, poczekaj na element, który pojawi się asynchronicznie, a następnie zweryfikuj każde pole z osobna. Robiąc to w tej kolejności, jedna uszkodzona nawigacja zatrzymuje test przedwcześnie, a kilka kosmetycznych niezgodności jest zgłaszanych w jednym przebiegu. Ta sama dyscyplina ma zastosowanie do Selenium testy napisane w kodzie, gdzie odpowiednikami są twarde asercje, miękkie asercje i jawne oczekiwania.
Polecenia weryfikacji i oczekiwania w bieżącym Selenium IDE
FirefoxŚrodowisko IDE wtyczki, które wygenerowało powyższe zrzuty ekranu, zostało wycofane, a zestaw poleceń został przebudowany dla obecnego rozszerzenia przeglądarki. Kilka nazw selenskich przetrwało, niektóre zostały przemianowane, a kilka usunięto. Poniższa tabela mapuje polecenia użyte w tym artykule do ich współczesnych odpowiedników, zaczerpniętych z oficjalnej wersji. Selenium Odwołanie do poleceń IDE.
| Dowództwo Legacy Selenese | Polecenie w bieżącym środowisku IDE |
|---|---|
| zweryfikuj element obecny | sprawdź obecność elementu |
| zweryfikujElementNotPresent | sprawdź, czy element nie jest obecny |
| zweryfikujTextPresent | zweryfikuj tekst (zasięgowo do lokalizatora elementów, a nie całej strony) |
| zweryfikujTextNotPresent | zweryfikuj, czy tekst nie jest ograniczony do lokalizatora elementów |
| zweryfikuj tytuł | zweryfikuj tytuł |
| sprawdź pozycję elementu po lewej stronie / sprawdź pozycję elementu na górze | Brak odpowiednika — porzucono stwierdzenia dotyczące pozycji |
| kliknij i czekaj, wpisz i czekaj, wybierz i czekaj | Brak sufiksu AndWait — polecenie otwarcia już czeka na załadowanie strony |
| poczekaj na element obecny | czekaj na obecność elementu, z czasem oczekiwania w milisekundach |
| poczekaj na alert | potwierdź alert lub zweryfikuj tekst alertu po wyświetleniu okna dialogowego |
W codziennej pracy najważniejsze są dwie różnice. Po pierwsze, obecne polecenia wait – wait for element present, wait for element visible, wait for element editable i ich ujemne odpowiedniki – wymagają jawnego czasu oczekiwania w milisekundach, więc powolny krok nie musi już współdzielić jednego globalnego limitu czasu. Po drugie, zniknęło wyszukiwanie tekstu na całej stronie: weryfikacja tekstu wymaga lokalizatora, co zazwyczaj zapewnia dokładniejsze sprawdzenie.
Typowe błędy w poleceniach Verify i waitFor
Większość zgłaszanych problemów z tymi poleceniami nie jest defektami w środowisku IDE. Poniższa lista zawiera najczęściej występujące błędy i sposoby ich rozwiązania.
- Element istnieje, ale sprawdzenie nadal kończy się niepowodzeniem. Obecność i widoczność to różne stany. Element ukryty za regułą CSS jest nadal obecny w DOM, dlatego należy połączyć sprawdzanie obecności z oczekiwaniem na widoczność elementu, gdy test zależy od faktycznego wyświetlenia go przez użytkownika.
- Kontrola tekstu kończy się niepowodzeniem w przypadku sformułowań, które wyglądają identycznie. Nierozdzielane spacje, spacje na końcu i apostrofy kręcone skopiowane z dokumentu projektowego powodują przerwanie dokładnego dopasowania. Wpisz oczekiwany ciąg znaków ręcznie, zamiast go wklejać.
- Polecenie wait przekracza limit czasu na stronie, która najwyraźniej została załadowana. Element zazwyczaj znajduje się w ramce iframe. Najpierw uruchom polecenie select frame, w przeciwnym razie lokalizator zostanie porównany z niewłaściwym dokumentem.
- clickAndWait zawiesza się w aplikacji jednostronicowej. Nawigacja nie działa, więc nie ma na co czekać. Zastąp to kliknięciem i odpowiednim poleceniem waitFor.
- Sprawdzanie pozycji przebiega lokalnie, ale nie na serwerze kompilacji. Rozmiar ekranu i renderowanie czcionek różnią się. Preferuj sprawdzanie obecności lub tekstu albo ustaw konkretny rozmiar okna na początku testu.
- Cały zestaw zatrzymuje się przy pierwszym niedopasowaniu. Zarejestrowano polecenie assert w miejscu, w którym powinno być polecenie verify. Zmień prefiks, a uruchomienie będzie raportować każdą awarię zamiast tylko pierwszej.
Gdy skrypt przetrwa te pułapki, następnym krokiem jest zazwyczaj przechowuj wartości czasu wykonania w zmiennych dzięki temu kontrole są porównywane z rzeczywistymi danymi, a nie z zakodowanymi na stałe ciągami znaków.






