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# 13. Mechanizmy lokalizujące: szukanie po id, klasie, atrybucie name i nazwie taga

W tej lekcji poznasz pierwsze proste lokatory. Pokażę Ci szukanie po id elementu, jego klasie, atrybucie name oraz nazwie taga.

 

Szukanie po id, klasie, atrybucie name i nazwie taga: linki i materiały

Timeouty

W tej lekcji bardzo wstępnie pokazałam dwie właściwości, które pozwalają nam ustawić dwa timeouty. Pierwszy to timeout na załadowanie się strony, a drugi na załadowanie się elementu, czyli przez jaki czas driver ma odpytywać stronę o element, jeżeli nie znajdzie go od razu. Więcej na ten temat pojawi się w późniejszych lekcjach, na razie po prostu zaakceptuj to, co widzisz 😉

driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(3);

Metody wyszukujące po atrybutach lub tagu

Metody, o których jest mowa w tej lekcji to:

  • Id(string id) – udostępnia mechanizm do wyszukiwania elementów po jego id;
  • ClassName(string nazwaKlasy) – udostępnia mechanizm do wyszukiwania elementów po nazwie jego klasy (atrybut class); co ważne, jako parametr tej metody można podać tylko pojedynczą klasę – więcej mówię o tym na filmie;
  • Name(string nazwa) – udostępnia mechanizm do wyszukiwania elementów po jego nazwie czyli po atrybucie name;
  • TagName(string nazwaTaga) – udostępnia mechanizm do wyszukiwania elementów po jego tagu;

Szukanie elementu w elemencie

W lekcji pokazuję także jak znając tylko powyższe lokatory poradzić sobie z sytuacją, gdy nie umiemy znaleźć unikatowego lokatora. Można skorzystać z faktu, że w Selenium możemy wyszukiwać elementów w innym elemencie. Oznacza to, że jeżeli potrafimy zbudować unikatowy lokator dla jakiegoś elementu, który znajduje się wyżej w hierarchii od tego, który nas interesuje, to potem w nim możemy użyć nieunikatowego lokatora. Dzieje się tak dlatego, ze mimo iż lokator naszego elementu nie jest unikatowy w kontekście całej strony, może być unikatowy w kontekście jego fragmentu, czyli innego elementu.

Dokumentacja Selenium i materiały

Metody wyjaśnione w dzisiejszej lekcji znajdują się w klasie By. Jeżeli nie jest dla Ciebie jasne co to jest atrybut w HTML i czym jest konsola deweloperska, 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. Czy w metodzie SetUp można dodać możliwość zalogowania się?

    Ja myślałam o czymś takim, aby znaleźć element - tam gdzie jest login, potem tam gdzie jest hasło, potem wpisać hasło i login, czyli już w SetUpie dodać to, co zwykle było w teście. Czy to jest dobra metoda na logowanie się do systemu?

    Odpowiedz
  2. Ja akurat mam taką sytuację, że robię testy aplikacji webowej, którą zawsze trzeba zacząć od logowania. Są to zazwyczaj dwa loginy, bo są różne uprawnienia dla użytkowników. Podejrzewam, że w tej sytuacji logowanie powinnam wrzucić do SetUp, tak?

    Odpowiedz
  3. Czy w mojej sytuacji ma to rozwiązać problem? Ja mam się dostać do aplikacji zanim zacznę testować, więc jaki to ma problem rozwiązywać? Nie bardzo rozumiem.

    Mam taki przypadek:

    1. Chcę powiedzmy napisać test, który sprawdza czy mogę przejść do modułu i edytować coś - nieważne o co dokładnie chodzi, to już jest kwestia aplikacji.

    Loguję się -> wchodzę do modułu poprzez klik w odpowiednim miejscu->potem klik->zapisuję

    2. drugi test:
    Wchodzę do innego modułu, wchodzę w coś w tym module i usuwam

    Mam zatem dwa testy w jednej solucji.

    Jak sobie w setupie wpiszę dane do logowania to przed każdym testem będę się logować, co jest bardzo obciążające dla testów, będą one długo trwać.

    Nie ma lepszego rozwiązania? Np. zalogować się raz i przeprowadzać testy?

    Odpowiedz