Hvordan håndtere webtabell i Selenium

⚡ Smart oppsummering

Selenium Webtabellhåndtering lar QA-ingeniører lese tabelldata fra HTML-rader og -kolonner ved hjelp av XPath, CSS og Selenium 4 relative lokatorer. Denne artikkelen går gjennom statiske tabeller, nestede tabeller, attributtpredikater og AI-teknikker for dynamiske rutenett.

  • 🧱 XPath-anatomi: Hver tabellsøker starter med //table og borer seg inn i tbody, tr og td ved hjelp av predikater.
  • 🔁 Dynamiske rader: findElements returnerer en liste over WebElements slik at løkker kan telle rader og lese celler under kjøretid.
  • 🪄 Selenium 4: Relative lokaliseringspunkter over, under og nær forenkler målretting av celler rundt et kjent ankerelement.
  • 🧠 AI-lokaliseringsverktøy: Selvreparerende verktøy oppdager kolonneskift og gjenoppretter radidentitet uten manuelle XPath-redigeringer.
  • 🛠️ Inspiser snarvei: Nettleserutviklerverktøy kopierer en fullstendig XPath som du kan trimme tilbake til den første tabellen for pålitelighet.

Selenium Eksempel på webtabell XPath

Hva er en netttabell i Selenium?

A Webtabell in Selenium er et WebElement som brukes til tabellformet representasjon av data eller informasjon. Dataene som vises kan være enten statiske eller dynamiske. Webtabellceller og -rader nås via WebElement-metoder kombinert med posisjoneringsverktøy. Et typisk eksempel er produktspesifikasjonsrutenettet som vises på en e-handelsproduktside.

Lese en HTML-netttabell

Det er mange ganger testere trenger tilgang til elementer, vanligvis tekstverdier, som ligger i HTML-tabeller. Nettdesignere oppgir imidlertid sjelden et id- eller name-attributt på individuelle celler. Derfor fungerer metoder som By.id(), By.name() eller By.cssSelector() sjelden. I dette scenariet er det mest pålitelige alternativet By.xpath() fordi det leder foreldre-barn-relasjonene inne i tabelltaggen.

Hvordan håndtere webtabell i Selenium

Tenk på HTML-koden nedenfor for å håndtere netttabeller i Selenium.

Hvordan skrive XPath for Table i Selenium

Vi vil bruke XPath for å få den indre teksten i cellen som inneholder teksten "fjerde celle."

Hvordan skrive XPath for Table i Selenium

Trinn 1 – Angi det overordnede elementet (tabell)

XPath-lokaliseringsverktøy i WebDriver starter alltid med en dobbel skråstrek «//» etterfulgt av det overordnede elementet.. Siden vi har å gjøre med netttabeller i Selenium, bør det overordnede elementet alltid være tag. Den første delen av vår Selenium XPath-tabellsøkeren må derfor starte med «//tabell».

Selenium Eksempel på netttabell

Trinn 2 – Legg til de underordnede elementene

Elementet rett under er , så er barnet til Omvendt, er forelderen til Alle underelementer i XPath plasseres til høyre for foreldreelementet, atskilt med én skråstrek «/» som vist nedenfor.

Selenium Eksempel på netttabell

Trinn 3 – Legg til predikater

De elementet inneholder to tagger. Disse to taggene er barn av , så er forelderen til begge. De to elementene er søsken. Søsken er underordnede elementer som deler samme forelder.

For å nå som inneholder «fjerde celle», må vi først få tilgang til sekund , ikke den første. Å bare skrive «//table/tbody/tr» ville målrette den første tagg.

Så hvordan får vi tilgang til den andre Svaret er å bruke Predikater. Predikater er tall eller HTML-attributter omsluttet av hakeparenteser «[]» som skiller et underelement fra dets søsken.Siden raden vi trenger er den andre, bruker vi «[2]» som predikat.

 Selenium Eksempel på netttabell

Hvis vi utelater predikatet, returnerer XPath den første søskenkoden. Derfor vil en av XPath-kodene nedenfor nå den første. .

Selenium Webtabell ved hjelp av Xpath

Trinn 4 – Legg til de etterfølgende underordnede elementene ved å bruke de passende predikatene

Det neste elementet vi trenger er det andre Ved å bruke reglene fra trinn 2 og 3 kommer vi frem til XPath-en som er vist nedenfor.

Webtabell i Selenium bruker Xpath

Nå som vi har riktig XPath-lokaliseringsverktøy, kan vi få tilgang til cellen og lese den indre teksten ved hjelp av koden nedenfor. Dette forutsetter at du har lagret HTML-siden som «newhtml.html» på C-stasjonen.

Webtabell i Selenium bruker Xpath

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

Webtabell i Selenium bruker Xpath

Få tilgang til nestede tabeller

De samme prinsippene gjelder for nestede tabeller. Nestede tabeller er tabeller plassert inni en annen tabell. Et eksempel er vist nedenfor.

Slik får du tilgang til nestede tabeller i Selenium

For å få tilgang til cellen med teksten «4-5-6» ved å bruke foreldre-/barn- og predikatideene fra forrige avsnitt, kan vi sette sammen XPath-en som vises nedenfor.

Slik får du tilgang til nestede tabeller i Selenium

WebDriver-koden nedenfor henter den indre teksten i den målrettede cellen.

Få tilgang til nestede tabeller i 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();
}

Utdataene nedenfor bekrefter at den indre tabellen ble åpnet.

Få tilgang til nestede tabeller i Selenium

Bruke attributter som predikater

Hvis elementet sitter dypt inne i HTML-koden, der det blir smertefullt å telle søsken, kan vi bruke elementets unike attributt i stedet.

I eksemplet nedenfor er cellen «New York til Chicago» begravd langt inne i Mercury Turens hjemmeside.

Selenium Eksempel på netttabell som bruker attributter som predikater

Selenium Eksempel på netttabell som bruker attributter som predikater

Vi kan bruke tabellens unike attributt (width=”270″) som predikat. Attributter brukes som predikater ved å sette dem foran med @-symboletI eksemplet ovenfor er cellen «New York til Chicago» plassert i den første av den fjerde , så XPath-en vår skal se ut som den som er vist nedenfor.

Selenium Eksempel på netttabell med attributter som predikater

Husk at når du legger inn XPath-koden Java, omgå doble anførselstegn rundt «270» med en omvendt skråstrek slik at By.xpath()-strengen ikke avsluttes tidlig.

Selenium Eksempel på netttabell med attributter som predikater

Vi er nå klare til å få tilgang til den cellen ved å bruke koden nedenfor.

Selenium Eksempel på netttabell med attributter som predikater

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 Eksempel på netttabell med attributter som predikater

Snarvei: Bruk Inspiser element for å få tilgang til tabeller i Selenium

Hvis indeksen eller attributtet til et element er vanskelig å få tak i, er den raskeste måten å generere XPath på å bruke Inspect Element i moderne nettleser-DevTools.

Tenk på eksemplet nedenfor fra Mercury Turens hjemmeside.

Selenium Eksempel på netttabell med attributter som predikater

Trinn 1

Høyreklikk på målcellen og velg Inspiser for å se DOM-banen, og kopier deretter hele XPath-filen.

Selenium Eksempel på netttabell med attributter som predikater

Trinn 2

Se etter det første "tabell" overordnede elementet og slett alt til venstre for det.

Selenium Eksempel på netttabell med attributter som predikater

Trinn 3

Sett dobbelt skråstrek «//» foran den gjenværende XPath-en, og kopier den inn i WebDriver-koden din.

Selenium Eksempel på netttabell med attributter

WebDriver-koden nedenfor henter den indre teksten til det dypt nestede elementet.

Selenium Eksempel på netttabell med attributter

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

Slik teller du rader og kolonner i en dynamisk webtabell

Dynamiske netttabeller, som dashbord eller søkeresultater, gjengir ulikt antall rader ved hver innlasting. Bruk for å håndtere dem findElements å hente hver inn i en liste, og deretter gå gjennom den i løkke for å lese hver celle. Kodeutdraget nedenfor teller rader og leser hver celle i en tabell med ID-en «kunder».

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

Pakk inn posisjoneringsenheten i en WebDriverWait med visibilityOfAllElementsLocatedBy når tabellen lastes inn av AJAX. Dette forhindrer foreldede elementreferanser på rutenett med langsom gjengivelse.

Selenium 4 relative lokaliseringspunkter for netttabeller

Selenium 4 introduserte relative lokatorer som målretter elementer etter visuell posisjon. De er nyttige når XPath-indekser brytes fordi rader omordnes. Metodene above(), below(), toLeftOf(), toRightOf()og near() alle aksepterer et anker-WebElement.

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

Relative lokatorer forblir lesbare selv om kolonnerekkefølgen endres. Kombiner dem med eksplisitte ventetider for de sterkeste resultatene på datadrevne sider.

AI-verktøy for håndtering av dynamiske webtabeller

AI-assisterte testplattformer reduserer vedlikehold av lokatorer på nett som endres ofte. Verktøy som Testim, Mablog Funksjonere bruker datasyn pluss DOM-modeller for å oppdage kolonneskift og selvreparerende lokatorer. De identifiserer rader etter overskriftstekst og cellelikhet i stedet for faste XPath-indekser.

For ren Selenium prosjekter, biblioteker som f.eks. Healenium Pakk inn WebDriver og skriv om ødelagte lokatorer under kjøring. Kombiner disse verktøyene med WebDriverWait for å holde dynamiske tabellskript stabile uten å skrive om selektorer etter hver brukergrensesnittendring.

Sammendrag

  • By.xpath() er den mest pålitelige måten å få tilgang til celler i en webtabell på Selenium.
  • Hvis det er vanskelig å telle søsken, bruk et unikt attributt som predikat, med @-tegnet som prefiks.
  • findElements returnerer en liste som støtter radtelling i dynamiske tabeller.
  • Selenium 4 relative lokatorer (over, under, nær) reduserer avhengigheten av posisjonell XPath.
  • Inspect Element i DevTools akselererer XPath-generering for dypt begravde celler.
  • AI-verktøy som f.eks Testim, Mabl og Healenium selvreparerende lokaliseringsverktøy for å endre rutenett.

Spørsmål og svar

En netttabell i Selenium er et WebElement som viser tabelldata i rader og kolonner. Det kan være statisk eller dynamisk. Testere får tilgang til cellene via WebElement-metoder kombinert med XPath- eller CSS-lokaliseringsverktøy fordi tabeller sjelden eksponerer unike ID-er på individuelle celler.

De fleste tabellceller har ikke et id- eller name-attributt, så By.id() og By.name() vil ikke fungere. XPath går gjennom foreldre-barn-strukturen til table-, tbody-, tr- og td-elementene, noe som gjør den til den mest pålitelige søknaden for celler.

Bruk driver.findElements(By.xpath(“//table[@id='tbl']//tr”)).size() for å telle rader og //table[@id='tbl']//tr[1]/td for kolonneantall. findElements-metoden returnerer en liste som støtter size() for raske radsummer.

Selenium 4 introduserte relative lokatorer som above(), below(), toLeftOf(), toRightOf() og near(). De hjelper med å målrette celler plassert rundt en kjent ankercelle, noe som er nyttig når XPath-indekser endres i dynamiske tabeller.

Gå gjennom rader i løkker med findElements, og les deretter hver celle med getText(). Bygg XPath dynamisk ved hjelp av strengsammenkobling som //tr[“+i+”]/td[“+j+”]. Vent til tabellen lastes inn med WebDriverWait før du leser verdier.

Ja. AI-drevne verktøy som Testim, Mabl og Functionize bruker datasyn og DOM-modeller til å oppdage tabellgrenser, utlede overskrifter og selvreparerende lokatorer når kolonner forskyves. Dette reduserer XPath-vedlikehold for dynamiske dashbord.

AI-modeller lærer radmønstre fra tidligere kjøringer og matcher celler ved hjelp av tekstlikhet i stedet for faste indekser. Når en rad flyttes eller en kolonne blir omorganisert, finner AI-lokaliseringsverktøyet fortsatt målet uten å omskrive XPath.

findElement returnerer et enkelt WebElement og kaster NoSuchElementException hvis det mangler. findElements returnerer en liste og returnerer en tom liste hvis ingen treff blir funnet. Bruk findElements når du leter etterping over tabellrader eller -kolonner.

Oppsummer dette innlegget med: