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.
Me kasutame XPath et saada lahtri sisetekst, mis sisaldab teksti "neljas lahter".
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".
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.
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]".
Kui me ei kasuta ühtegi predikaati, pääseb XPath juurde esimesele vennale. Seetõttu pääseme juurde esimesele kasutades ühte neist XPathi koodidest.
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.
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".
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(); } }
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.
Et pääseda lahtrisse tekstiga "4-5-6", kasutades eelmises jaotises "//vanem/laps" ja predikaatmõisteid, peaksime suutma leida alloleva XPathi koodi.
Allolev WebDriveri kood peaks suutma tuua selle lahtri sisemise teksti, millele me juurde pääseme.
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.
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.
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.
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.
Oleme nüüd valmis sellele lahtrile juurde pääsema, kasutades allolevat koodi.
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(); }
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.
Samm 1
XPathi koodi hankimiseks kasutage Firebugi.
Samm 2
Otsige üles esimene "tabeli" vanemelement ja kustutage kõik sellest vasakul.
Samm 3
Kinnitage ülejäänud koodiosa ees topeltkaldkriips "//" ja kopeerige see oma WebDriveri koodi.
Allolev WebDriveri kood suudab edukalt hankida selle elemendi sisemise teksti, millele me juurde pääseme.
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