Jak obsługiwać tabelę internetową w Selenium Sterownik sieciowy

W czym jest tabela internetowa Selenium?

A Tabela internetowa in Selenium jest WebElement używanym do tabelarycznej reprezentacji danych lub informacji. Wyświetlane dane lub informacje mogą być statyczne lub dynamiczne. Do tabeli Web i jej elementów można uzyskać dostęp za pomocą funkcji WebElement i lokalizatorów w SeleniumTypowym przykładem tabeli internetowej są specyfikacje produktu wyświetlane na platformie handlu elektronicznego.

Czytanie tabeli internetowej HTML

Są chwile, kiedy musimy uzyskać dostęp do elementów (zwykle tekstów) znajdujących się w tabelach HTML. Jednak bardzo rzadko projektant stron internetowych podaje atrybut id lub name 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 dostęp do nich za pomocą metody „By.xpath()”.

Jak obsługiwać tabelę internetową w Selenium

Rozważ poniższy kod HTML do obsługi tabel internetowych Selenium.

Jak napisać XPath dla tabeli w Selenium

Użyjemy XPath aby uzyskać tekst wewnętrzny komórki zawierającej tekst „czwarta komórka”.

Jak napisać XPath dla tabeli w Selenium

Krok 1 – Ustaw element nadrzędny (tabelę)

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 internetowymi w Selenium, elementem nadrzędnym powinien zawsze być etykietka. Pierwsza część naszego Selenium Dlatego lokalizator tabel XPath powinien zaczynać się od „//table”.

Selenium Przykład tabeli internetowej

Krok 2 – Dodaj elementy podrzędne

Element bezpośrednio pod Jest więc możemy to powiedzieć jest „dzieckiem”. . I również, jest „rodzicem”. . Wszystkie elementy podrzędne w XPath są umieszczane na prawo od elementu nadrzędnego, oddzielone jednym ukośnikiem „/”, jak w kodzie pokazanym poniżej.

Selenium Przykład tabeli internetowej

Krok 3 – Dodaj predykaty

The element zawiera dwa tagi. Możemy teraz powiedzieć, że te dwa tagi są „dziećmi” . W związku z tym możemy tak powiedzieć jest rodzicem obojga elementy.

Kolejną rzeczą, którą możemy stwierdzić, jest to, że jedno i drugie elementy są rodzeństwem. Rodzeństwo odnosi się do elementów podrzędnych mających tego samego rodzica.

Aby dostać się do chcemy uzyskać dostęp (ten z tekstem „czwarta komórka”), musimy najpierw uzyskać dostęp do Dopiero i nie pierwszy. Jeśli po prostu napiszemy „//table/tbody/tr”, wówczas uzyskamy dostęp do pierwszego etykietka.

Jak więc uzyskać dostęp do drugiego Następnie? Odpowiedzią na to jest użycie Predykaty.

Predykaty to liczby lub atrybuty HTML ujęte w parę nawiasów kwadratowych „[ ]”, które odróżniają element podrzędny od jego elementów pokrewnych.. Od potrzebujemy dostępu, to drugi, użyjemy „[2]” jako predykatu.

Selenium Przykład tabeli internetowej

Jeśli nie użyjemy żadnego predykatu, XPath uzyska dostęp do pierwszego rodzeństwa. Dlatego możemy uzyskać dostęp do pierwszego przy użyciu jednego z tych kodów XPath.

Selenium Tabela internetowa przy użyciu Xpath

Krok 4 – Dodaj kolejne elementy potomne, używając odpowiednich predykatów

Kolejnym elementem, do którego musimy uzyskać dostęp, jest drugi . Stosując zasady, których nauczyliśmy się w krokach 2 i 3, ukończymy nasz kod XPath tak, aby wyglądał jak ten pokazany poniżej.

Tabela internetowa w Selenium za pomocą Xpatha

Teraz, gdy mamy poprawny lokalizator XPath, możemy już uzyskać dostęp do komórki, którą chcieliśmy i uzyskać jej tekst wewnętrzny, korzystając z poniższego kodu. Zakłada się, że zapisałeś powyższy kod HTML jako „newhtml.html” na dysku C.

Tabela internetowa w Selenium za pomocą Xpatha

public static void main(String[] args) {
	String baseUrl = "https://demo.guru99.com/test/write-xpath-table.html";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(
		By.xpath("//table/tbody/tr[2]/td[2]")).getText(); 	
        System.out.println(innerText); 
	driver.quit();
	}
}

Tabela internetowa w Selenium za pomocą Xpatha

Dostęp do zagnieżdżonych tabel

Te same zasady omówione 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.

Jak uzyskać dostęp do zagnieżdżonych tabel w Selenium

Aby uzyskać dostęp do komórki zawierającej tekst „4-5-6” za pomocą „//parent/child” i koncepcji predykatów z poprzedniej sekcji, powinniśmy być w stanie utworzyć poniższy kod XPath.

Jak uzyskać dostęp do zagnieżdżonych tabel w Selenium


Poniższy kod WebDrivera powinien być w stanie pobrać wewnętrzny tekst komórki, do której uzyskujemy dostęp.

Dostęp do tabel zagnieżdżonych w Selenium

public static void main(String[] args) {
	String baseUrl = "https://demo.guru99.com/test/accessing-nested-table.html";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(
		By.xpath("//table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]")).getText(); 		
        System.out.println(innerText); 
	driver.quit();
}

Poniższe dane wyjściowe potwierdzają, że pomyślnie uzyskano dostęp do tabeli wewnętrznej.

Dostęp do tabel zagnieżdżonych w Selenium

Używanie atrybutów jako predykatów

Jeśli element jest zapisany głęboko w kodzie HTML i bardzo trudno jest określić liczbę, która ma zostać użyta jako predykat, możemy zamiast tego użyć unikalnego atrybutu tego elementu.

W poniższym przykładzie komórka „Nowy Jork do Chicago” jest zlokalizowana głęboko w Mercury Kod HTML strony głównej wycieczek.

Selenium Przykład tabeli internetowej wykorzystującej atrybuty jako predykaty

Selenium Przykład tabeli internetowej wykorzystującej atrybuty jako predykaty

W tym przypadku możemy użyć unikalnego atrybutu tabeli (width=”270″) jako predykatu. Atrybuty są używane jako predykaty poprzez poprzedzenie ich symbolem @. W powyższym przykładzie komórka „Nowy Jork do Chicago” znajduje się w pierwszej z czwartego , dlatego nasza ścieżka XPath powinna wyglądać tak, jak pokazano poniżej.

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

Pamiętaj o tym, kiedy umieścimy kod XPath Java, powinniśmy użyć znaku ucieczki odwrotnego ukośnika „\” dla podwójnych cudzysłowów po obu stronach „270”, aby argument ciągu By.xpath() nie został zakończony przedwcześnie.

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

Jesteśmy teraz gotowi, aby uzyskać dostęp do tej komórki za pomocą poniższego kodu.

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

public static void main(String[] args) {
	String baseUrl = "https://demo.guru99.com/test/newtours/";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(By
		.xpath("//table[@width=\"270\"]/tbody/tr[4]/td"))
		.getText(); 		
	System.out.println(innerText); 
	driver.quit();
}

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

Skrót: użyj elementu Inspect, 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 Inspekcji Elementu.

Rozważ poniższy przykład z Mercury Strona główna wycieczek.

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

Krok 1

Użyj Firebuga, aby uzyskać kod XPath.

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

Krok 2

Poszukaj pierwszego elementu nadrzędnego „tabeli” i usuń wszystko po jego lewej stronie.

Selenium Przykład tabeli internetowej z atrybutami jako predykatami

Krok 3

Pozostałą część kodu poprzedź podwójnym ukośnikiem „//” i skopiuj ją do kodu WebDriver.

Selenium Przykładowa tabela internetowa z atrybutami

Poniższy kod WebDrivera będzie w stanie pomyślnie pobrać wewnętrzny tekst elementu, do którego uzyskujemy dostęp.

Selenium Przykładowa tabela internetowa z atrybutami

public static void main(String[] args) {
	String baseUrl = "https://demo.guru99.com/test/newtours/";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(By
		.xpath("//table/tbody/tr/td[2]"
		+ "//table/tbody/tr[4]/td/"
		+ "table/tbody/tr/td[2]/"
		+ "table/tbody/tr[2]/td[1]/"
		+ "table[2]/tbody/tr[3]/td[2]/font"))
		.getText(); 		
	System.out.println(innerText); 
	driver.quit();
}

Podsumowanie

  • By.xpath() jest powszechnie używana do uzyskiwania dostępu do elementów WebTable w Selenium.
  • Jeśli element jest zapisany głęboko w kodzie HTML tak, że bardzo trudno jest określić liczbę, która ma zostać użyta jako predykat, możemy zamiast tego użyć unikalnego atrybutu tego elementu Selenium pobierz element tabeli.
  • Atrybuty są używane jako predykaty poprzez poprzedzenie ich symbolem @.
  • Użyj elementu Inspekcja, aby uzyskać dostęp do tabeli WebTable w Selenium