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().
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().
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().
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.
Przykład, po którym bardziej Ci się rozjaśni o czym mówię, pokazuję na filmie.
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)
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 ?
Halko! Gdzie na naszej stronie widzisz taki elemen [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
To akurat nie jest element ze strony testelki 😉
Halko! W takim wypadku odeślę Cię do