Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

Selenium w C# 14. Mechanizmy lokalizujące: szukanie po linku

W tej lekcji kontynuujemy temat prostych lokatorów. Pokażę Ci szukanie po linku, a konkretnie po jego tekście lub fragmencie tekstu.

 

Szukanie po linku: linki i materiały

W Selenium mamy możliwość wyszukiwać po linku, a właściwie po jego tekście. Służą do tego dwie metody: LinkText oraz PartialLinkText. Obie metody, jak sama ich nazwa już wskazuje, dotyczą linków, czyli elementów o tagu <a>.

Asercje potwierdzające, że metoda rzuca wyjątek (lub nie)

Szukanie po linku użyte w metodzie FindBy, powinno nam zwrócić element (tak samo jak i w przypadku dotychczas już poznanych lokatorów). Jeżeli element nie zostanie znaleziony, otrzymamy wyjątek. Co w sytuacji, gdy będziemy chcieli sprawdzić w asercji, czy element został znaleziony?

W NUnicie możliwe jest użycie asercji, która odniesie się do faktu rzucenia jakiegoś wyjątku (lub właśnie nie). Są to asercje DoesNotThrow(delegata) oraz Throws<TActual>(delegata). Pierwsza z nich sprawi, że test przejdzie z sukcesem, jeżeli wyjątek nie poleci w trakcie wykonywania metody, na którą wskazuje podana w parametrze delegata. Druga natomiast sprawi, że test przejdzie z sukcesem jeżeli metoda rzuci wyjątkiem ale takiego typu, jaki podamy (TActual).

Delegaty

Delegata, której będzie używać w powyższych asercjach, jest wskaźnikiem do określonej (podanej przez nas) metody, czyli przechowuje referencję do niej. Delegata i metoda, na którą ma wskazywać delegata, muszą mieć taką sama sygnaturę, czyli musi się zgadzać typ zwracany i parametry. Delegata pozwala nam na użycie jakiejś metody jako parametru do innej metody i tego właśnie potrzebujemy, żeby móc użyć asercji DosNotThrow albo Throws.

Na filmie pokazuję jak stworzyć delegatę i potem jak jej użyć w asercji.

Wyrażenia lambda

Wyrażenia lambda to sposób na zdefiniowanie funkcji anonimowej, czyli takiej, która nie ma nazwy. Może ona zostać użyta jako zmienna albo przekazana jako parametr w metodzie. Wyrażenie lambda to inny sposób na zapisanie delegaty. Jest też dużo krótszy i wygodniejszy. To właśnie z wyrażeń lambda będziemy korzystać, gdy będziemy chcieli przekazać jakąś metodę jako parametr np. w asercji. Jak używać wyrażeń lambda zobaczysz w filmie.

Szukanie po linku: klasa testowa

Poniżej znajdziesz kod, który pojawił się w lekcji.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Dokumentacja Selenium i materiały

Metody wyjaśnione w dzisiejszej lekcji znajdują się w klasie By. Jeżeli nie znasz pozostałych lokatorów, których używam w tej lekcji, zajrzyj do poprzedniej lekcji.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.

  1. Cześć!
    Przerabiam własnie tę lekcję i mam wrażenie, że coś jest nie tak -> przycisk "Przejdź do kasy" ma tekst linku z białymi znakami CRLF:
    "
    Przejdź do kasy"
    Z czymś takim chyba nie można skorzystać z FindElement By.LinkText : ) ?
    Jeśli można, to chętnie dowiem się jak. Próbowałam z opcją @"\r\n Przejdź do kasy" ale ten potworek nie działa. Docelowo skorzystałam z (By.PartialLinkText("Przejdź do kasy")) i to działa bez zarzutu.

    Odpowiedz