Kuidas käsitleda veebitabelit Selenium Veebidraiver

Milles on veebitabel Selenium?

A Veebi tabel in Selenium on veebielement, mida kasutatakse andmete või teabe tabelina esitamiseks. Kuvatavad andmed või teave võivad olla kas staatilised või dünaamilised. Veebitabelile ja selle elementidele pääseb juurde WebElement funktsioonide ja lokaatorite abil Selenium. Veebitabeli tüüpiline näide on e-kaubanduse platvormil kuvatavad toote spetsifikatsioonid.

HTML-i veebitabeli lugemine

Mõnikord peame pääsema juurde elementidele (tavaliselt tekstidele), mis asuvad HTML-i tabelites. Siiski juhtub väga harva, et veebidisainer esitab tabeli teatud lahtrile ID või nime atribuudi. Seetõttu ei saa me kasutada tavalisi meetodeid, nagu "By.id()", "By.name()" või "By.cssSelector()". Sel juhul on kõige usaldusväärsem võimalus neile juurde pääseda meetodi „By.xpath()” abil.

Kuidas käsitleda veebitabelit Selenium

Veebitabelite haldamiseks kaaluge allolevat HTML-koodi Selenium.

Kuidas kirjutada tabeli jaoks XPath Selenium

Me kasutame XPath et saada lahtri sisetekst, mis sisaldab teksti "neljas lahter".

Kuidas kirjutada tabeli jaoks XPath Selenium

1. samm – määrake ülemelement (tabel)

XPathi lokaatorid WebDriveris algavad alati kahekordse kaldkriipsuga „//” ja seejärel emaelemendiga. Kuna me tegeleme veebitabelitega Selenium, peaks emaelement alati olema tag. Esimene osa meie Selenium XPathi tabeliotsija peaks seetõttu algama tähega "//table".

Selenium Veebitabeli näide

2. samm – lisage alamelemendid

Element kohe all on nii et me võime seda öelda on "laps". . Ja ka, on "vanem". . Kõik XPathi alamelemendid paigutatakse nende emaelemendist paremale, eraldatuna ühe kaldkriipsuga „/”, nagu allpool näidatud kood.

Selenium Veebitabeli näide

3. samm – lisage predikaadid

The element sisaldab kahte sildid. Nüüd võime öelda, et need kaks sildid on "lapsed". . Järelikult võime nii öelda on mõlema vanem elemendid.

Teine asi, mida võime järeldada, on see, et need kaks elemendid on õed-vennad. Õed-vennad viitavad alamelementidele, millel on sama vanem.

Et jõuda soovime juurde pääseda (see, mille tekst on "neljas lahter"), peame esmalt pääsema juurde teine ja mitte esimene. Kui kirjutame lihtsalt "//table/tbody/tr", pääseme juurde esimesele tag.

Niisiis, kuidas me pääseme teisele siis? Vastus sellele on kasutada Predikaadid.

Predikaadid on numbrid või HTML-i atribuudid, mis on suletud nurksulgudesse „[ ]”, mis eristavad alamelementi selle õdedest-vendadest. Alates on teine, kasutame predikaadina "[2]".

Selenium Veebitabeli näide

Kui me ei kasuta ühtegi predikaati, pääseb XPath juurde esimesele vennale. Seetõttu pääseme juurde esimesele kasutades ühte neist XPathi koodidest.

Selenium Veebitabel Xpathi abil

4. samm – lisage järgnevad alamelemendid, kasutades sobivaid predikaate

Järgmine element, millele peame juurde pääsema, on teine . Rakendades 2. ja 3. sammust õpitud põhimõtteid, viimistleme XPathi koodi selliseks, nagu allpool näidatud.

Veebitabel sisse Selenium kasutades Xpathi

Nüüd, kui meil on õige XPathi lokaator, pääseme juba lahtrisse, mida tahtsime, ja hankime selle sisemise teksti, kasutades allolevat koodi. See eeldab, et olete ülaltoodud HTML-koodi salvestanud oma C-draivi kui "newhtml.html".

Veebitabel sisse Selenium kasutades Xpathi

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();
	}
}

Veebitabel sisse Selenium kasutades Xpathi

Juurdepääs pesastatud tabelitele

Samad ülalkirjeldatud põhimõtted kehtivad pesastatud tabelite kohta. Pesastatud tabelid on tabelid, mis asuvad teises tabelis. Näide on näidatud allpool.

Kuidas pääseda juurde pesastatud tabelitele Selenium

Et pääseda lahtrisse tekstiga "4-5-6", kasutades eelmises jaotises "//vanem/laps" ja predikaatmõisteid, peaksime suutma leida alloleva XPathi koodi.

Kuidas pääseda juurde pesastatud tabelitele Selenium


Allolev WebDriveri kood peaks suutma tuua selle lahtri sisemise teksti, millele me juurde pääseme.

Juurdepääs pesastatud tabelitele 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();
}

Allolev väljund kinnitab, et sisemisele tabelile juurdepääs õnnestus.

Juurdepääs pesastatud tabelitele Selenium

Atribuutide kasutamine predikaatidena

Kui element on kirjutatud sügavale HTML-koodi sisse nii, et predikaadi jaoks kasutatavat numbrit on väga raske määrata, saame selle asemel kasutada selle elemendi kordumatut atribuuti.

Allolevas näites asub lahter „New Yorgist Chicagosse” sügaval Mercury Toursi kodulehe HTML-kood.

Selenium Veebitabeli näide atribuutide predikaatidena

Selenium Veebitabeli näide atribuutide predikaatidena

Sel juhul saame predikaadina kasutada tabeli kordumatut atribuuti (width=”270″). Atribuute kasutatakse predikaatidena, lisades neile sümboli @. Ülaltoodud näites asub lahter „New Yorgist Chicagosse” esimeses neljandast , ja seega peaks meie XPath olema selline, nagu allpool näidatud.

Selenium Veebitabeli näide atribuutidega predikaatidena

Pidage seda meeles XPathi koodi sisestamisel Java, peaksime kasutama paomärki tagurpidi kaldkriipsu "\" topeltjutumärkide jaoks "270" mõlemal küljel, et faili By.xpath() stringargument ei katkeks enneaegselt.

Selenium Veebitabeli näide atribuutidega predikaatidena

Oleme nüüd valmis sellele lahtrile juurde pääsema, kasutades allolevat koodi.

Selenium Veebitabeli näide atribuutidega predikaatidena

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 Veebitabeli näide atribuutidega predikaatidena

Otsetee: kasutage tabelitele juurdepääsuks kontrolli elementi Selenium

Kui elemendi numbrit või atribuuti on äärmiselt raske või võimatu hankida, on XPathi koodi genereerimiseks kiireim viis elemendi kontrollimine.

Vaatleme allolevat näidet Mercury Ekskursioonide koduleht.

Selenium Veebitabeli näide atribuutidega predikaatidena

Samm 1

XPathi koodi hankimiseks kasutage Firebugi.

Selenium Veebitabeli näide atribuutidega predikaatidena

Samm 2

Otsige üles esimene "tabeli" vanemelement ja kustutage kõik sellest vasakul.

Selenium Veebitabeli näide atribuutidega predikaatidena

Samm 3

Kinnitage ülejäänud koodiosa ees topeltkaldkriips "//" ja kopeerige see oma WebDriveri koodi.

Selenium Veebitabeli näide atribuutidega

Allolev WebDriveri kood suudab edukalt hankida selle elemendi sisemise teksti, millele me juurde pääseme.

Selenium Veebitabeli näide atribuutidega

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();
}

kokkuvõte

  • By.xpath() kasutatakse tavaliselt WebTable'i elementidele juurdepääsuks Selenium.
  • Kui element on kirjutatud sügavale HTML-koodi nii, et predikaadi jaoks kasutatavat numbrit on väga raske määrata, saame selle asemel kasutada selle elemendi ainulaadset atribuuti Selenium hankige tabeli element.
  • Atribuute kasutatakse predikaatidena, lisades neile sümboli @.
  • Kasutage WebTable'i juurdepääsuks Inspect Elementi Selenium