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

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

Reader Interactions

Komentarze

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

Komentarze

  1. Karolina napisał

    10 grudnia, 2019 o 10:30 am

    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
    • Elżbieta Sądel napisał

      10 grudnia, 2019 o 11:21 am

      Do SetUp wejdzie wszystko i wszystko można tam da [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  2. Karolina napisał

    10 grudnia, 2019 o 11:50 am

    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
    • Elżbieta Sądel napisał

      10 grudnia, 2019 o 12:01 pm

      Powinnaś, jeżeli rozwiązuje to jakiś Twój pro [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  3. Karolina napisał

    16 grudnia, 2019 o 2:12 pm

    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
    • Elżbieta Sądel napisał

      16 grudnia, 2019 o 2:40 pm

      Jeżeli Twoim problemem jest to, że testy się ni [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      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
Av. de las Postas 21 6 C
29014 Málaga
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