Web-taulukon käsitteleminen Selenium

⚡ Älykäs yhteenveto

Selenium Verkkotaulukoiden käsittely antaa laadunvarmistusinsinöörien lukea taulukkomuotoista dataa HTML-riveiltä ja -sarakkeista XPath-, CSS- ja muiden avulla. Selenium 4 suhteellista paikanninta. Tässä artikkelissa käydään läpi staattiset taulukot, sisäkkäiset taulukot, attribuuttipredikaatit ja tekoälytekniikat dynaamisille ruudukoille.

  • 🧱 XPath-anatomia: Jokainen taulukkopaikannin alkaa //table-metodilla ja porautuu tbody-, tr- ja td-muuttujaan predikaattien avulla.
  • 🔁 Dynaamiset rivit: findElements palauttaa listan WebElements-elementtejä, jotta silmukat voivat laskea rivejä ja lukea soluja suorituksen aikana.
  • 🪄 Selenium 4: Suhteelliset paikantimet ylä-, ala- ja lähellä yksinkertaistavat solujen kohdistamista tunnetun ankkurielementin ympärille.
  • 🧠 Tekoälypaikantimet: Itsekorjaavat työkalut havaitsevat sarakesiirtymät ja palauttavat rivien identiteetin ilman manuaalisia XPath-muokkauksia.
  • 🛠️ Tarkista pikakuvake: Selaimen DevTools kopioi koko XPath-polun, jonka voit rajata takaisin ensimmäiseen taulukkoon luotettavuuden parantamiseksi.

Selenium Verkkotaulukon XPath-esimerkki

Missä Web-taulukko on Selenium?

A Verkkotaulukko in Selenium on WebElement-elementti, jota käytetään datan tai informaation taulukkomuotoiseen esitykseen. Näytettävä data voi olla joko staattista tai dynaamista. Verkkotaulukon soluihin ja riveihin päästään käsiksi WebElement-metodien ja paikantimien avulla. Tyypillinen esimerkki on verkkokaupan tuotesivulla näkyvä tuotetietojen ruudukko.

HTML-verkkotaulukon lukeminen

Testaajien on usein käytettävä HTML-taulukoiden sisällä olevia elementtejä, yleensä tekstiarvoja. Verkkosivujen suunnittelijat kuitenkin harvoin lisäävät id- tai name-attribuuttia yksittäisille soluille. Siksi metodit, kuten By.id(), By.name() tai By.cssSelector(), toimivat harvoin. Tässä tilanteessa luotettavin vaihtoehto on By.xpath(), koska se käy läpi vanhempi-lapsisuhteet taulukkotunnisteen sisällä.

Web-taulukon käsitteleminen Selenium

Harkitse alla olevaa HTML-koodia verkkotaulukoiden käsittelemiseen Selenium.

Kuinka kirjoittaa XPath taulukolle Selenium

Käytämme XPath saada tekstin "neljäs solu" sisältävän solun sisäteksti.

Kuinka kirjoittaa XPath taulukolle Selenium

Vaihe 1 – Aseta yläelementti (taulukko)

WebDriverin XPath-paikantimet alkavat aina kaksoisvinoviivalla "//", jota seuraa pääelementti.. Koska käsittelemme verkkotaulukoita Selenium, pääelementin tulee aina olla tag. Ensimmäinen osa meidän Selenium XPath-taulukon paikantimen on siksi alettava merkeillä “//table”.

Selenium Esimerkki verkkotaulukosta

Vaihe 2 – Lisää alatason elementit

Elementti suoraan alla on , joten on lapsi Kääntäen, on vanhempi Kaikki XPath-elementin alielementit sijoitetaan pääelementin oikealle puolelle ja erotetaan toisistaan ​​yhdellä vinoviivalla "/", kuten alla on esitetty.

Selenium Esimerkki verkkotaulukosta

Vaihe 3 – Lisää predikaatit

The elementti sisältää kaksi tunnisteet. Nämä kaksi tagit ovat ohjelman lapsia , joten on molempien vanhempi. Nämä kaksi elementit ovat sisaruksia. Sisarukset ovat lapsielementtejä, joilla on sama vanhempi.

Päästäkseen joka sisältää ”neljännen solun”, meidän on ensin päästävä käsiksi toinen , ei ensimmäistä. Pelkän “//table/tbody/tr” kirjoittaminen kohdistuisi ensimmäiseen tag.

Joten miten pääsemme käsiksi toiseen Vastaus on käyttää Predikaatit. Predikaatit ovat hakasulkeissa "[ ]" olevia numeroita tai HTML-attribuutteja, jotka erottavat lapsielementin sen sisarelementeistä.Koska tarvitsemme toisen rivin, käytämme predikaattina ”[2]”.

 Selenium Esimerkki verkkotaulukosta

Jos predikaatti jätetään pois, XPath palauttaa ensimmäisen sisaruksen. Näin ollen kumpi tahansa alla olevista XPath-koodeista saavuttaa ensimmäisen .

Selenium Web-taulukko Xpathilla

Vaihe 4 – Lisää seuraavat lapsielementit käyttämällä sopivia predikaatteja

Seuraava tarvitsemamme elementti on toinen Soveltamalla vaiheiden 2 ja 3 sääntöjä pääsemme alla olevaan XPath-polkuun.

Verkkotaulukko sisään Selenium käyttämällä Xpathia

Nyt kun meillä on oikea XPath-paikannin, voimme käyttää solua ja lukea sen sisäisen tekstin alla olevan koodin avulla. Tämä olettaen, että olet tallentanut HTML-sivun nimellä "newhtml.html" C-asemallesi.

Verkkotaulukko sisään Selenium käyttämällä Xpathia

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

Verkkotaulukko sisään Selenium käyttämällä Xpathia

Sisäkkäisten taulukoiden käyttäminen

Samat periaatteet pätevät sisäkkäisiin taulukoihin. Sisäkkäiset taulukot ovat toisen taulukon sisään sijoitettuja taulukoita. Alla on esimerkki.

Sisäkkäisten taulukoiden käyttäminen Selenium

Päästäksemme soluun, jossa on teksti ”4-5-6”, käyttämällä edellisen osion pää-/lapsi- ja predikaatti-ideoita, voimme muodostaa alla olevan XPath-lausekkeen.

Sisäkkäisten taulukoiden käyttäminen Selenium

Alla oleva WebDriver-koodi hakee kohdesolun sisäisen tekstin.

Sisäkkäisten taulukoiden käyttö 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();
}

Alla oleva tuloste vahvistaa, että sisäisen taulukon käyttö onnistui.

Sisäkkäisten taulukoiden käyttö Selenium

Attribuuttien käyttäminen predikaatteina

Jos elementti sijaitsee syvällä HTML-koodissa, jossa sisarusten laskeminen on hankalaa, voimme käyttää kyseisen elementin ainutlaatuista attribuuttia.

Alla olevassa esimerkissä ”New Yorkista Chicagoon” -solu on haudattuna syvälle Mercury Tours kotisivut.

Selenium Esimerkki verkkotaulukosta käyttämällä attribuutteja predikaatteina

Selenium Esimerkki verkkotaulukosta käyttämällä attribuutteja predikaatteina

Voimme käyttää predikaattina taulukon yksilöllistä attribuuttia (width="270"). Attribuutteja käytetään predikaatteina lisäämällä niiden eteen @-symboliYllä olevassa esimerkissä ”New Yorkista Chicagoon” -solu sijaitsee ensimmäisessä neljännen , joten XPath-lausekkeemme pitäisi näyttää alla olevan kaltaiselta.

Selenium Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

Muista, että kun lisäät XPath-funktion sisään Java, korvaa lainausmerkit numeron "270" ympärillä kenoviivalla, jotta By.xpath()-merkkijonoa ei päätetä ennenaikaisesti.

Selenium Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

Olemme nyt valmiita käyttämään tätä solua alla olevan koodin avulla.

Selenium Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

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 Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

Pikanäppäin: Käytä tarkastuselementtiä päästäksesi sisään taulukoihin Selenium

Jos elementin indeksiä tai attribuuttia on vaikea saada, nopein tapa luoda XPath on käyttää Inspect Element -työkalua nykyaikaisissa selaimen DevTools-työkaluissa.

Tarkastellaan alla olevaa esimerkkiä aiheesta Mercury Tours kotisivut.

Selenium Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

Vaihe 1

Napsauta kohdesolua hiiren kakkospainikkeella ja valitse Tarkasta nähdäksesi DOM-polun. Kopioi sitten koko XPath.

Selenium Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

Vaihe 2

Etsi ensimmäinen "taulukon" pääelementti ja poista kaikki sen vasemmalla puolella.

Selenium Esimerkki verkkotaulukosta, jossa attribuutit predikaatteina

Vaihe 3

Lisää jäljellä olevan XPath-patchin etuliitteeksi kaksinkertainen vinoviiva "//" ja kopioi se WebDriver-koodiisi.

Selenium Verkkotaulukkoesimerkki attribuutteilla

Alla oleva WebDriver-koodi hakee syvälle sisäkkäisen elementin sisäisen tekstin.

Selenium Verkkotaulukkoesimerkki attribuutteilla

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

Rivien ja sarakkeiden laskeminen dynaamisessa verkkotaulukossa

Dynaamiset verkkotaulukot, kuten kojelaudat tai hakutulokset, renderöivät eri määrän rivejä jokaisella latauskerralla. Voit käsitellä niitä käyttämällä findElements hakemaan jokaisen listaksi ja lue sitten jokainen solu läpi silmukalla. Alla oleva koodinpätkä laskee rivit ja lukee jokaisen solun taulukosta, jonka tunniste on "asiakkaat".

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

Kääri paikannin WebDriverWait visibilityOfAllElementsLocatedBy kun AJAX lataa taulukon. Tämä estää vanhentuneet elementtiviittaukset hitaasti renderöitävissä ruudukoissa.

Selenium 4 suhteellista paikanninta verkkotaulukoille

Selenium 4 esitteli suhteelliset paikantimet, jotka kohdistavat elementteihin visuaalisen sijainnin perusteella. Ne ovat hyödyllisiä, kun XPath-indeksit rikkoutuvat rivien uudelleenjärjestäytymisen vuoksi. Metodit above(), below(), toLeftOf(), toRightOf()ja near() kaikki hyväksyvät ankkuri-WebElementin.

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

Suhteelliset paikantimet pysyvät luettavina, vaikka sarakejärjestys muuttuisi. Yhdistä ne eksplisiittisiin odotusfunktioihin saadaksesi vahvimmat tulokset datapohjaisilla sivuilla.

Tekoälytyökalut dynaamisten verkkotaulukoiden käsittelyyn

Tekoälyllä avustetut testausalustat vähentävät paikantimen huoltoa usein muuttuvissa verkoissa. Työkalut, kuten Testim, Mablja Toimivat käyttävät konenäköä ja DOM-malleja sarakesiirtymien havaitsemiseen ja itsekorjautuvien paikantimien käyttämiseen. Ne tunnistavat rivit otsikkotekstin ja solujen samankaltaisuuden perusteella kiinteiden XPath-indeksien sijaan.

Puhtaana Selenium projekteja, kirjastoja, kuten Healenium Kääri WebDriver ja kirjoita rikkinäiset paikantimet uudelleen suorituksen aikana. Yhdistä nämä työkalut WebDriverWaitiin pitääksesi dynaamiset taulukkoskriptit vakaina ilman valitsimien uudelleenkirjoittamista jokaisen käyttöliittymämuutoksen jälkeen.

Yhteenveto

  • By.xpath() on luotettavin tapa käyttää verkkotaulukon soluja Selenium.
  • Jos sisarusten laskeminen on vaikeaa, käytä predikaattina yksilöllistä attribuuttia, jonka etuliitteenä on @-merkki.
  • findElements palauttaa listan joka tukee rivien laskentaa dynaamisissa taulukoissa.
  • Selenium Neljä suhteellista paikanninta (yläpuolella, alapuolella, lähellä) vähentävät riippuvuutta sijainnin mukaisesta XPathista.
  • DevToolsin Inspect Element nopeuttaa XPath-lausekkeiden luomista syvälle haudatuille soluille.
  • AI-työkalut, kuten Testim, Mabl- ja Healenium-itsekorjauspaikantimet ruudukoiden vaihtamiseen.

UKK

Verkkotaulukko Selenium on WebElement, joka näyttää taulukkomuotoista dataa riveinä ja sarakkeina. Se voi olla staattinen tai dynaaminen. Testaajat käyttävät sen soluja WebElement-metodien ja XPath- tai CSS-paikantimien avulla, koska taulukoissa on harvoin yksilöllisiä tunnisteita yksittäisille soluille.

Useimmissa taulukon soluissa ei ole id- tai name-attribuuttia, joten By.id() ja By.name() eivät toimi. XPath käy läpi table-, tbody-, tr- ja td-elementtien ylä- ja alaosan rakenteen, mikä tekee siitä luotettavimman solujen paikantimen.

Käytä driver.findElements(By.xpath(“//table[@id='tbl']//tr”)).size() rivien laskemiseen ja //table[@id='tbl']//tr[1]/td sarakkeiden laskemiseen. findElements-metodi palauttaa listan joka tukee size()-funktiota rivien yhteenlaskennan nopeuttamiseksi.

Selenium 4 esitteli suhteelliset paikantimet, kuten above(), below(), toLeftOf(), toRightOf() ja near(). Ne auttavat kohdistamaan tunnetun ankkurisolun ympärillä sijaitsevia soluja, mikä on hyödyllistä, kun XPath-indeksit muuttuvat dynaamisissa taulukoissa.

Käy rivit läpi findElements-funktiolla ja lue sitten jokainen solu getText()-funktiolla. Luo XPath dynaamisesti käyttämällä merkkijonojen ketjutusta, kuten //tr[“+i+”]/td[“+j+”]. Odota taulukon latautumista WebDriverWait-funktiolla ennen arvojen lukemista.

Kyllä. Tekoälyllä toimivat työkalut, kuten Testim, Mabl ja Functionize käyttävät konenäköä ja DOM-malleja taulukoiden rajojen havaitsemiseen, otsikoiden päättelemiseen ja itsekorjaavien paikantimien suorittamiseen sarakkeiden siirtyessä. Tämä vähentää XPath-ylläpitoa dynaamisissa kojelaudoissa.

Tekoälymallit oppivat rivikuvioita aiemmista suorituksista ja yhdistävät solut käyttämällä tekstin samankaltaisuutta kiinteiden indeksien sijaan. Kun rivi siirtyy tai sarake järjestetään uudelleen, tekoälyn paikannin löytää silti kohteen kirjoittamatta XPath-lauseketta uudelleen.

findElement palauttaa yhden WebElement-elementin ja heittää NoSuchElementException-poikkeuksen, jos se puuttuu. findElements palauttaa listan. ja palauttaa tyhjän listan, jos osumia ei löydy. Käytä findElements-funktiota, kun etsitping taulukon rivien tai sarakkeiden yli.

Tiivistä tämä viesti seuraavasti: