• Przejdź do głównej nawigacji
  • Przejdź do treści
  • Przejdź do głównego paska bocznego
  • Przejdź do stopki
Testelka.pl

Testelka.pl

Testelka.pl - o technologiach w testowaniu oprogramowania

  • Kursy
    • DARMOWY: Java dla testerów
    • Selenium w Javie
    • Selenium w C#
    • Testy API w REST Assured
    • Selektory CSS
    • XPath
  • Materiały na raz
  • Blog
  • O Eli
  • Zaloguj się
  • DOŁĄCZ

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

Strona główna > Kursy > Kurs Selenium w C# > 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 aktywnej subskrypcji. Wykup subskrypcję 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.

Reader Interactions

Komentarze

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.

Komentarze

  1. Natalia Nitkowska napisał

    28 sierpnia, 2020 o 11:12 am

    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
    • Ela Sądel napisał

      28 sierpnia, 2020 o 11:38 am

      Halko! A próbowałaś to po prostu sprawdzić zan [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Natalia Nitkowska napisał

        30 sierpnia, 2020 o 8:23 pm

        Dzięki za odpowiedź ; )
        Zadziałało ( driver.FindElement(By.LinkText("Przejdź do kasy")); ) mimo białych znaków 🙂 Niepotrzebnie kombinowałam 😀

        Odpowiedz

Pierwszy Sidebar

LEKCJE W KURSIE

  • Przygotowanie środowiska (DARMOWA LEKCJA)
  • Konfiguracja: Selenium i ChromeDriver (DARMOWA LEKCJA)
  • Demo Selenium i testowanie asercji (DARMOWA LEKCJA)
  • Nawigacja pomiędzy stronami (DARMOWA LEKCJA)
  • Zamykanie sesji i okna przeglądarki (DARMOWA LEKCJA)
  • Zadanie: zamykanie sesji i okna przeglądarki
  • Źródło strony, url i tytuł
  • Zadanie: źródło i tytuł strony
  • Ustawienia okna przeglądarki
  • Zadanie: ustawienia okna przeglądarki
  • Metody lokalizujące
  • Znaczniki i konsola deweloperska
  • Mechanizmy lokalizujące: nazwa klasy, id, atrybut name, nazwa taga
  • Mechanizmy lokalizujące: szukanie po linku
  • Zadanie: proste lokatory
  • Timeouty
  • Klikanie w elementy i wprowadzanie tekstu
  • Zadanie: testy logowania
  • Zasada DRY (Don't Repeat Yourself)
  • Wgrywanie pliku z dysku
  • Explicit Wait, czyli jawne czekanie
  • ExpectedConditions
  • Pobieranie informacji o elementach: położenie, rozmiar, nazwa taga, czy wyświetlony, czy zaznaczony, czy aktywny
  • Pobieranie informacji o elementach: wartości CSS, atrybuty i właściwości JavaScript oraz szukanie elementów w elemencie
  • Zadanie: informacje o elementach
  • Klikanie oraz przesuwanie kursora myszki
  • Prawy przycisk myszy oraz podwójny klik
  • Akcje na klawiaturze: przytrzymanie klawisza i wprowadzenie tekstu
  • Zadanie: akcje na klawiaturze i gesty myszy
  • Przesuwanie elementów
  • Zadanie: przesuwanie elementów
  • Ramki
  • Zadanie: ramki
  • Wykonywanie skryptów JavaScript
  • Zadanie: JavaScript
  • Ciasteczka: pobieranie ciasteczek
  • Usuwanie i dodawanie ciasteczek w Selenium
  • Co, gdy nie mamy pełnej nazwy ciasteczka?
  • Zadanie: Ciasteczka
  • Wyskakujące okienka (alerty)
  • Zadanie: wyskakujące okienka
  • Praca na kilku oknach przeglądarki
  • Zadanie: praca na kilku oknach przeglądarki
  • Listy rozwijane: pobieranie informacji
  • Listy rozwijane: zaznaczanie i odznaczanie opcji
  • Zadanie: listy rozwijane
  • Zrzuty ekranu
  • Zrzuty ekranu: przykład
  • Inicjalizacja driverów: Chrome, Firefox, Opera, Edge, IE
  • Selenium Grid
  • Selenium Grid: RemoteWebDriver
  • Selenium Grid: konfiguracja
  • Selenium Grid: konfiguracja w plikach JSON
  • Projekt testowy: testy koszyka
  • Projekt testowy: testy płatności
  • Projekt testowy: testy kuponów
  • Wprowadzenie do Page Object Model
  • Pierwszy test w POM
  • Pierwsze klasy Page Object
  • "Chainowanie" metod
  • Czekanie po akcji vs czekanie przed akcją
  • Zadanie: dwa kolejne testy w POM
  • Rozszerzenie metody AddToCart() i przepisanie dwóch kolejnych testów
  • Zadanie: testy koszyka w POM
  • Testy płatności w POM
  • Wydzielenie klas Page Object i referencje do projektów
  • Zadanie: testy płatności w POM
  • BaseTest: bazowa klasa testu
  • CustomAssert: niestandardowe asercje
  • TestHelpers: metody pomocnicze
  • Jedna metoda, ale dwa typy zwracane
  • BasePage: bazowa klasa Page Object
  • Page Object: jeden poziom głębiej
  • Parametryzacja drivera
  • Refaktoring: nowy driver
  • Driver factory
  • Konfiguracja z pliku JSON
  • Deserializacja JSONa
  • Refaktoring: system operacyjny w parametrze drivera i URL strony
  • Dane testowe z pliku JSON
  • Użycie w testach danych testowych z pliku

Footer

Elzbieta Natalia Sadel
Calle Marzo 9 1 D
41009 Sevilla
Hiszpania
NIF: Y7882076J

Zostań trenerem!

Regulamin
Polityka prywatności
Polityka wsparcia w ramach członkostwa

Koszulki i torby dla testerów

Pomoc
Kontakt

Poskładane z 💛 przez Automatela.pl

Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.ZgodaNie wyrażam zgodyPolityka prywatności