Są chwile, kiedy musimy uzyskać dostęp do elementów (zwykle tekstów), które znajdują się w tabelach HTML. Jednak projektant stron internetowych bardzo rzadko podaje identyfikator lub atrybut nazwy do określonej komórki w tabeli. Dlatego nie możemy używać zwykłych metod, takich jak „By.id ()”, „By.name ()” lub „By.cssSelector ()”. W tym przypadku najbardziej niezawodną opcją jest uzyskanie do nich dostępu za pomocą metody „By.xpath ()”.
W tym samouczku nauczysz się:
Jak napisać XPath dla tabeli
Dostęp do tabel zagnieżdżonych
Używanie atrybutów jako predykatów
Skrót: Użyj elementu Sprawdź, aby uzyskać dostęp do tabel w Selenium
Jak napisać XPath dla tabeli
Rozważ poniższy kod HTML.
Użyjemy XPath, aby uzyskać wewnętrzny tekst komórki zawierającej tekst „czwarta komórka”.
Krok 1 - Ustaw element nadrzędny (tabela)
Lokalizatory XPath w WebDriver zawsze zaczynają się od podwójnego ukośnika „//”, po którym następuje element nadrzędny . Ponieważ mamy do czynienia z tabelami, elementem nadrzędnym powinien być zawsze tag
. Dlatego pierwsza część naszego lokalizatora XPath powinna zaczynać się od „// table”.
Krok 2 - Dodaj elementy podrzędne
Element bezpośrednio pod
to
, więc możemy powiedzieć, że
jest „dzieckiem”
. Ponadto
jest „rodzicem”
. Wszystkie elementy podrzędne w XPath są umieszczane po prawej stronie ich elementu nadrzędnego, oddzielone jednym ukośnikiem „/”, jak w kodzie pokazanym poniżej.
Krok 3 - Dodaj predykaty
Element
zawiera dwa tagi
. Możemy teraz powiedzieć, że te dwa znaczniki
są „dziećmi” elementu
. W konsekwencji możemy powiedzieć, że
jest rodzicem obu elementów
.
Inną rzeczą, którą możemy wywnioskować, jest to, że dwa
elementy są rodzeństwem. Rodzeństwo odnosi się do elementów potomnych mających tego samego rodzica .
Aby dostać się do
, do którego chcemy uzyskać dostęp (tego z tekstem „czwarta komórka”), musimy najpierw uzyskać dostęp do drugiej
, a nie do pierwszej. Jeśli po prostu napiszemy „// table / tbody / tr”, uzyskamy dostęp do pierwszego znacznika
.
Jak więc uzyskamy dostęp do drugiego
? Odpowiedzią na to jest użycie predykatów .
Predykaty to liczby lub atrybuty HTML ujęte w parę nawiasów kwadratowych „[]”, które odróżniają element podrzędny od jego rodzeństwa . Ponieważ
, do którego musimy uzyskać dostęp, jest drugim, użyjemy „[2]” jako predykatu.
Jeśli nie użyjemy żadnego predykatu, XPath uzyska dostęp do pierwszego rodzeństwa. Dlatego możemy uzyskać dostęp do pierwszego
za pomocą jednego z tych kodów XPath.
Krok 4 - Dodaj kolejne elementy potomne za pomocą odpowiednich predykatów
Następnym elementem, do którego musimy uzyskać dostęp, jest drugi element
. Stosując zasady, których nauczyliśmy się w krokach 2 i 3, sfinalizujemy nasz kod XPath tak, aby był podobny do pokazanego poniżej.
Teraz, gdy mamy właściwy lokalizator XPath, możemy już uzyskać dostęp do komórki, do której chcieliśmy, i uzyskać jej tekst wewnętrzny za pomocą poniższego kodu. Zakłada się, że zapisałeś powyższy kod HTML jako „newhtml.html” na swoim dysku C.
Te same zasady, które omówiono powyżej, dotyczą tabel zagnieżdżonych. Tabele zagnieżdżone to tabele znajdujące się w innej tabeli . Przykład jest pokazany poniżej.
Aby uzyskać dostęp do komórki z tekstem „4-5-6” przy użyciu „// rodzic / dziecko” i pojęć predykatów z poprzedniej sekcji, powinniśmy być w stanie wymyślić poniższy kod XPath.
Poniższy kod WebDriver powinien być w stanie pobrać wewnętrzny tekst komórki, do której uzyskujemy dostęp.
Poniższe dane wyjściowe potwierdzają, że pomyślnie uzyskano dostęp do tabeli wewnętrznej.
Używanie atrybutów jako predykatów
Jeśli element jest zapisany głęboko w kodzie HTML w taki sposób, że numer używany w predykacie jest bardzo trudny do określenia, możemy zamiast tego użyć unikalnego atrybutu tego elementu.
W poniższym przykładzie komórka „Nowy Jork do Chicago” jest umieszczona głęboko w kodzie HTML strony głównej Mercury Tours.
W tym przypadku możemy użyć unikalnego atrybutu tabeli (szerokość = "270") jako predykatu. Atrybuty są używane jako predykaty, poprzedzając je symbolem @ . W powyższym przykładzie komórka „New York to Chicago” znajduje się w pierwszym
czwartego
, więc nasz XPath powinien wyglądać tak, jak pokazano poniżej.
Pamiętaj, że kiedy umieścimy kod XPath w Javie, powinniśmy użyć znaku ucieczki odwrotnego ukośnika "\" dla podwójnych cudzysłowów po obu stronach "270", aby argument By.xpath () nie został zakończony przedwcześnie .
Jesteśmy teraz gotowi, aby uzyskać dostęp do tej komórki za pomocą poniższego kodu.
Skrót: Użyj elementu Sprawdź, aby uzyskać dostęp do tabel w Selenium
Jeśli numer lub atrybut elementu jest niezwykle trudny lub niemożliwy do uzyskania, najszybszym sposobem wygenerowania kodu XPath jest użycie elementu Inspect.
Rozważ poniższy przykład ze strony głównej Mercury Tours.
Krok 1
Użyj programu Firebug, aby uzyskać kod XPath.
Krok 2
Poszukaj pierwszego elementu nadrzędnego „table” i usuń wszystko, co znajduje się po jego lewej stronie.
Krok 3
Poprzedź pozostałą część kodu podwójnym ukośnikiem „//” i skopiuj go do swojego kodu WebDriver.
Poniższy kod WebDriver będzie mógł pomyślnie pobrać wewnętrzny tekst elementu, do którego uzyskujemy dostęp.
By.xpath () jest powszechnie używana do uzyskiwania dostępu do elementów tabeli.
Jeśli element jest zapisany głęboko w kodzie HTML w taki sposób, że numer używany w predykacie jest bardzo trudny do określenia, możemy zamiast tego użyć unikalnego atrybutu tego elementu.
Atrybuty są używane jako predykaty, poprzedzając je symbolem @.
Użyj elementu Sprawdź, aby uzyskać dostęp do tabel w Selenium