Kuidas käsitleda veebitabelit Selenium

⚡ Nutikas kokkuvõte

Selenium Veebitabelite haldamine võimaldab kvaliteedikontrolli inseneridel lugeda HTML-i ridadest ja veergudest tabelina andmeid, kasutades XPathi, CSS-i ja Selenium 4 suhtelist lokaatorit. See artikkel tutvustab staatilisi tabeleid, pesastatud tabeleid, atribuudipredikaate ja tehisintellekti tehnikaid dünaamiliste ruudustike jaoks.

  • 🧱 XPathi anatoomia: Iga tabeliotsija algab käsuga //table ja süveneb predikaatide abil tabelitesse tbody, tr ja td.
  • 🔁 Dünaamilised read: findElements tagastab veebielementide loendi, et tsüklid saaksid käitusajal ridu lugeda ja lahtreid lugeda.
  • 🪄 Selenium 4: Suhtelised lokaatorid ülalpool, allpool ja lähedal lihtsustavad sihtimislahtrite leidmist teadaoleva ankruelemendi ümber.
  • 🧠 AI lokaatorid: Isetervendavad tööriistad tuvastavad veergude nihkeid ja taastavad rea identiteedi ilma XPath-i käsitsi muutmata.
  • 🛠️ Kontrolli otseteed: Brauseri DevTools kopeerib täieliku XPathi, mille saab usaldusväärsuse huvides esimese tabelini tagasi kärpida.

Selenium Veebitabeli XPath näide

Milles on veebitabel Selenium?

A Veebi tabel in Selenium on veebielement (WebElement), mida kasutatakse andmete või teabe tabelina esitamiseks. Kuvatavad andmed võivad olla kas staatilised või dünaamilised. Veebitabeli lahtritele ja ridadele pääseb juurde veebielemendi meetodite ja lokaatorite abil. Tüüpiline näide on tootespetsifikatsioonide ruudustik, mida kuvatakse e-kaubanduse tootelehel.

HTML-veebiabeli lugemine

Testijad peavad sageli juurde pääsema HTML-tabelites asuvatele elementidele, tavaliselt tekstiväärtustele. Veebidisainerid lisavad aga harva üksikutele lahtritele atribuute id või name. Seetõttu toimivad sellised meetodid nagu By.id(), By.name() või By.cssSelector() harva. Sellisel juhul on kõige usaldusväärsem variant By.xpath(), kuna see käib tabeli sildi sees ülem-lapse suhteid ülem-laps suhteid ülem-laps suhteid ülem-laps suhteid ülem-lapse suhteid tabeli sildi sees kuvamas.

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)

WebDriveri XPath-lokaatorid algavad alati kahekordse kaldkriipsuga „//“, millele järgneb ülemelement.. Kuna me tegeleme veebitabelitega Selenium, peaks emaelement alati olema tag. Esimene osa meie Selenium Seega peab XPathi tabeli lokaator algama „//table“-iga.

Selenium Veebitabeli näide

2. samm – lisage alamelemendid

Element otse selle all on , nii et on laps Vastupidi, on lapsevanem Kõik XPathi tütarelemendid paigutatakse ülemelemendi paremale poole, eraldatuna kaldkriipsuga „/“, nagu allpool näidatud.

Selenium Veebitabeli näide

3. samm – lisage predikaadid

See element sisaldab kahte sildid. Need kaks sildid on alamrühmad , nii et on mõlema vanem. Need kaks elemendid on õed-vennad. Õed-vennad on lapse elemendid, kellel on sama vanem.

Jõudmiseks mis sisaldab „neljandat lahtrit“, peame kõigepealt sellele juurde pääsema teine , mitte esimene. Ainult „//table/tbody/tr” kirjutamine sihtiks esimest silt.

Kuidas me siis teisele poole pääseme? Vastus on kasutada Predikaadid. Predikaadid on nurksulgudes „[ ]” olevad numbrid või HTML-atribuudid, mis eristavad lapseelementi tema õdedest-vendadest.Kuna vajame teist rida, kasutame predikaadina „[2]”.

 Selenium Veebitabeli näide

Kui predikaat välja jätta, tagastab XPath esimese õe-venna. Seega jõuab kumbki allolevatest XPath koodidest esimeseni .

Selenium Veebitabel Xpathi abil

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

Järgmine element, mida vajame, on teine Rakendades 2. ja 3. sammu reegleid, jõuame allpool näidatud XPathini.

Veebitabel sisse Selenium kasutades Xpathi

Nüüd, kui meil on õige XPath-lokaator, saame lahtrile ligi pääseda ja selle sisemist teksti lugeda alloleva koodi abil. See eeldab, et olete HTML-lehe salvestanud oma C-draivi nimega „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 põhimõtted kehtivad ka pesastatud tabelite kohta. Pesastatud tabelid on tabelid, mis on paigutatud teise tabeli sisse. Näide on näidatud allpool.

Kuidas pääseda juurde pesastatud tabelitele Selenium

Eelmises jaotises toodud vanema/lapse ja predikaadi ideede abil tekstiga „4-5-6“ lahtrile juurdepääsuks saame koostada allpool näidatud XPathi.

Kuidas pääseda juurde pesastatud tabelitele Selenium

Allolev WebDriveri kood hangib sihtlahtri sisemise teksti.

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 asub HTML-i sügaval sees, kus õdede-vendade loendamine on tülikas, saame selle asemel kasutada selle elemendi unikaalset atribuuti.

Allolevas näites on lahter „New Yorgist Chicagosse” maetud sügavale Mercury Ekskursioonide koduleht.

Selenium Veebitabeli näide atribuutide predikaatidena

Selenium Veebitabeli näide atribuutide predikaatidena

Predikaadina saame kasutada tabeli unikaalset atribuuti (laius = ”270”). Atribuute kasutatakse predikaatidena, lisades neile sümboli @Ülaltoodud näites asub lahter „New Yorgist Chicagosse” esimeses neljandast , seega peaks meie XPath välja nägema nagu allpool näidatud.

Selenium Veebitabeli näide atribuutidega predikaatidena

Pea meeles, et kui sa XPathi sisse paned Java, asenda „270” ümber olevad jutumärgid kaldkriipsuga, et By.xpath() string ei lõpeks 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 indeksit või atribuuti on raske hankida, on kiireim viis XPathi genereerimiseks kasutada tänapäevases brauseri DevToolsis olevat Inspect Elementi.

Vaatleme allolevat näidet Mercury Ekskursioonide koduleht.

Selenium Veebitabeli näide atribuutidega predikaatidena

Samm 1

Paremklõpsake sihtlahtril ja valige DOM-tee kuvamiseks käsk „Kontrolli“, seejärel kopeerige kogu XPath.

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

Lisage ülejäänud XPath'ile topeltkaldkriips „//“ ja kopeerige see oma WebDriveri koodi.

Selenium Veebitabeli näide atribuutidega

Allolev WebDriveri kood hangib sügavalt pesastatud elemendi sisemise teksti.

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

Kuidas dünaamilises veebitabelis ridu ja veerge loendada

Dünaamilised veebitabelid, näiteks armatuurlauad või otsingutulemused, renderdavad iga laadimise korral erineva arvu ridu. Nende haldamiseks kasutage findElements iga tooma loendisse ja seejärel tehke tsükkel, et iga lahtrit lugeda. Allolev koodilõik loendab ridu ja loeb iga lahtri tabelis, mille ID on „kliendid“.

List<WebElement> rows = driver.findElements(
    By.xpath("//table[@id='customers']//tr"));
System.out.println("Total rows: " + rows.size());

for (int i = 1; i <= rows.size(); i++) {
    List<WebElement> cells = driver.findElements(
        By.xpath("//table[@id='customers']//tr[" + i + "]/td"));
    for (WebElement cell : cells) {
        System.out.println(cell.getText());
    }
}

Mähi lokaator sisse WebDriverWait koos visibilityOfAllElementsLocatedBy kui tabel laaditakse AJAX-i abil. See hoiab ära aegunud elementide viited aeglaselt renderdavatel ruudustikel.

Selenium 4 veebitabelite suhtelist lokaatorit

Selenium 4 tutvustas suhtelisi lokaatoreid, mis sihivad elemente visuaalse positsiooni järgi. Need on kasulikud, kui XPath indeksid rikuvad ridade ümberjärjestamise tõttu. Meetodid above(), below(), toLeftOf(), toRightOf()ja near() kõik aktsepteerivad ankru-veebielementi.

import static org.openqa.selenium.support.locators.RelativeLocator.with;

WebElement emailHeader = driver.findElement(By.xpath("//th[text()='Email']"));
WebElement emailCell = driver.findElement(
    with(By.tagName("td")).below(emailHeader));
System.out.println(emailCell.getText());

Suhtelised lokaatorid jäävad loetavaks ka veerujärjekorra muutudes. Andmepõhistel lehtedel parimate tulemuste saamiseks siduge need selgesõnaliste ooteaegadega.

Dünaamiliste veebitabelite haldamise tehisintellekti tööriistad

Tehisintellektiga toetatud testimisplatvormid vähendavad lokaatori hooldust sageli muutuvatel võrkudel. Tööriistad nagu Testim, Mablja Funktsionaliseerida Kasutavad arvutinägemist koos DOM-mudelitega veergude nihete tuvastamiseks ja iseparanevate lokaatorite loomiseks. Need tuvastavad ridu päise teksti ja lahtrite sarnasuse, mitte fikseeritud XPath-indeksite järgi.

Puhta jaoks Selenium projektid, raamatukogud, näiteks Healenium Mähi WebDriver ja kirjuta käitusajal vigased lokaatorid ümber. Kombineeri need tööriistad WebDriverWaitiga, et hoida dünaamiliste tabelite skriptid stabiilsena ilma selektoreid pärast iga kasutajaliidese muudatust ümber kirjutamata.

kokkuvõte

  • By.xpath() on kõige usaldusväärsem viis veebitabeli lahtritele juurdepääsuks Selenium.
  • Kui õdede-vendade loendamine on keeruline, kasutage predikaadina unikaalset atribuuti, mille eesliide on @-sümbol.
  • findElements tagastab loendi mis toetab ridade loendamist dünaamilistes tabelites.
  • Selenium 4 suhtelist lokaatorit (üleval, all, lähedal) vähendavad sõltuvust positsioonilisest XPathist.
  • DevToolsi funktsioon Inspect Element kiirendab sügaval peidetud lahtrite XPath-i genereerimist.
  • AI tööriistad nagu Testim, Mabl ja Healenium isetervendavad lokaatorid võrkude vahetamiseks.

KKK

Veebitabel Selenium on veebielement (WebElement), mis kuvab tabelina andmeid ridades ja veergudes. See võib olla staatiline või dünaamiline. Testijad pääsevad selle lahtritele ligi veebielemendi meetodite abil, mis on kombineeritud XPathi või CSS-i lokaatoritega, kuna tabelid näitavad harva üksikute lahtrite unikaalseid ID-sid.

Enamikul tabeli lahtritel puudub atribuut „id” või „name”, seega By.id() ja By.name() ei tööta. XPath läbib tabeli, tbody, tr ja td elementide vanema-lapse struktuuri, mis teeb sellest lahtrite kõige usaldusväärsema lokaatori.

Ridade loendamiseks kasutage funktsiooni driver.findElements(By.xpath(“//table[@id='tbl']//tr”)).size() ja veergude loendamiseks funktsiooni //table[@id='tbl']//tr[1]/td. Meetod findElements tagastab loendi. mis toetab rea kokkuvõtete kiireks arvutamiseks funktsiooni size().

Selenium 4 tutvustas suhtelisi lokaatoreid nagu above(), below(), toLeftOf(), toRightOf() ja near(). Need aitavad sihtida teadaoleva ankruraku ümber paiknevaid lahtreid, mis on kasulik, kui XPath indeksid dünaamilistes tabelites muutuvad.

Käi ridade vahel tsüklit funktsiooniga findElements ja loe seejärel iga lahtrit funktsiooniga getText(). Loo XPath dünaamiliselt, kasutades stringide liitmist, näiteks //tr[“+i+”]/td[“+j+”]. Enne väärtuste lugemist oota, kuni tabel laadib funktsiooniga WebDriverWait.

Jah. Tehisintellektil põhinevad tööriistad, näiteks Testim, Mabl ja Functionize kasutavad arvutinägemist ja DOM-mudeleid tabeli piiride tuvastamiseks, päiste järeldamiseks ja iseparanevate lokaatorite loomiseks veergude nihkumisel. See vähendab dünaamiliste armatuurlaudade XPathi hooldust.

Tehisintellekti mudelid õpivad reamustreid eelmistest käivitamistest ja sobitavad lahtrid fikseeritud indeksite asemel teksti sarnasuse abil. Kui rida liigub või veergu järjestatakse ümber, leiab tehisintellekti lokaator sihtmärgi ikkagi ilma XPathi ümber kirjutamata.

findElement tagastab ühe WebElementi ja kui see puudub, siis viskab NoSuchElementException'i. findElements tagastab loendi. ja tagastab tühja loendi, kui vastet ei leita. Kasutage findElements funktsiooni, kui otsiteping tabeli ridade või veergude kohal.

Võta see postitus kokku järgmiselt: