• 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# 24. Pobieranie informacji o elementach cz.2

Strona główna > Kursy > Kurs Selenium w C# > Selenium w C# 24. Pobieranie informacji o elementach cz.2

W tej lekcji kontynuujemy temat pobierania informacji o elementach. Na warsztat weźmiemy pobieranie wartości CSS, atrybutów i właściwości JavaScript oraz szukanie elementów w elemencie.

Pobieranie informacji o elementach w C#: linki i materiały

Pobieranie atrybutu

Atrybutem danego elementu może być np. klasa, id czy type z tych najbardziej popularnych, ale może się tam znaleźć właściwie cokolwiek. Jeżeli nie pamiętasz czym są atrybuty, wróć proszę do lekcji o znacznikach i konsoli deweloperskiej. Tam tłumaczę dokładniej co się może znaleźć w elemencie.

W Selenium można pobrać wartość dowolnego atrybutu i możemy zrobić to korzystając z metody GetAttribute().

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Pobieranie wartości CSS

Wartości CSS odnoszą się do stylów, które aplikują do danego elementu. Te style można sobie podejrzeć w zakładce „Styles” w konsoli developerskiej po zaznaczeniu elementu. W Selenium możemy sobie wyciągnąć wartość dowolnego stylu, np. kolory tła, podobnie jak robimy to w przypadku atrybutów. Tym razem jednak użyjemy metody GetCssValue().

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Na filmie zobaczysz też jak sobie poradzić z tym, że z tej metody dostajemy kolor w RGBA, a znamy go w Hex.

Pobieranie właściwości JavaScript

Na filmie zobaczysz dokładniej czym mogą być te właściwości, do czego mogą nam być potrzebne i jak sobie je wcześniej podejrzeć zanim zaczniemy je pobierać za pomocą Selenium. Natomiast w Selenium możemy pobrać wybraną właściwość korzystając z metody GetProperty().

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Szukanie elementu (albo elementów) w elemencie

O tym wspomniałam już bardzo krótko przy okazji lekcji dotyczącej XPatha, bo właśnie tutaj może pojawić się problem jeżeli nie poprzedzimy naszego XPatha kropką.

Czasami może być nam wygodniej wyodrębnić najpierw jeden element, a później „w środku”, czyli wśród jego potomków, w takim właśnie ograniczonym fragmencie dokumentu HTML, szukać innego elementu niż budować lokator bezpośrednio dla niego. Może być tak np. wtedy gdy już i tak mamy wyodrębnionego przodka, bo potrzebowaliśmy go w testach. Możemy go wtedy użyć ponownie, żeby wyszukać jego potomka bez budowania skomplikowanego (ale tez nie zawsze) lokatora.

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Przykład, po którym bardziej Ci się rozjaśni o czym mówię, pokazuję na filmie.

Kod z lekcji

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Reader Interactions

Komentarze

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

Komentarze

  1. Michał Snakowski napisał

    20 października, 2020 o 3:27 pm

    Próbuję pobrać tekst "OPEN" który umiejscowiony jest jak niżej po divie (taki "zrzut" tekstowy z zakładki Elementy z narzędzi developerskich)

    <div class="mat-chip-ripple"></div>
    Open
    

    Jaki selektor powinienem zastosować aby pobrać taki tekst ?
    Obecnie gdy próbuję wywołać driver.findelement za pomocą poniższego xpath
    ("//div/mat-chip/text()")

    to wówczas wyrzucany jest wyjątek
    Failed: invalid selector: The result of the xpath expression "//div/mat-chip/text()" is: [object Text]. It should be an element.

    Jak powinienem napisać selektor aby pozbyć się takiego wyjątku ?

    Odpowiedz
    • Ela Sądel napisał

      20 października, 2020 o 4:44 pm

      Halko! Gdzie na naszej stronie widzisz taki elemen [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Michał Snakowski napisał

        20 października, 2020 o 9:07 pm

        To akurat nie jest element ze strony testelki 😉

        Odpowiedz
        • Ela Sądel napisał

          21 października, 2020 o 10:04 am

          Halko! W takim wypadku odeślę Cię do 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