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.

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.
Me kasutame XPath et saada lahtri sisetekst, mis sisaldab teksti "neljas lahter".
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.
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.
.png)
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]”.
Kui predikaat välja jätta, tagastab XPath esimese õe-venna. Seega jõuab kumbki allolevatest XPath koodidest esimeseni .
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.
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”.
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 põhimõtted kehtivad ka pesastatud tabelite kohta. Pesastatud tabelid on tabelid, mis on paigutatud teise tabeli sisse. Näide on näidatud allpool.
Eelmises jaotises toodud vanema/lapse ja predikaadi ideede abil tekstiga „4-5-6“ lahtrile juurdepääsuks saame koostada allpool näidatud XPathi.
Allolev WebDriveri kood hangib sihtlahtri sisemise teksti.
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 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.
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.
Pea meeles, et kui sa XPathi sisse paned Java, asenda „270” ümber olevad jutumärgid kaldkriipsuga, et By.xpath() string ei lõpeks 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 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.
Samm 1
Paremklõpsake sihtlahtril ja valige DOM-tee kuvamiseks käsk „Kontrolli“, seejärel kopeerige kogu XPath.
Samm 2
Otsige üles esimene "tabeli" vanemelement ja kustutage kõik sellest vasakul.
Samm 3
Lisage ülejäänud XPath'ile topeltkaldkriips „//“ ja kopeerige see oma WebDriveri koodi.
Allolev WebDriveri kood hangib sügavalt pesastatud elemendi sisemise teksti.
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.

.png)
.png)



















