Kako rukovati web tablicom u Selenium
โก Pametni saลพetak
Selenium Obrada web tablica omoguฤuje QA inลพenjerima ฤitanje tabliฤnih podataka iz HTML redaka i stupaca pomoฤu XPath-a, CSS-a i Selenium 4 relativna lokatora. Ovaj ฤlanak prolazi kroz statiฤke tablice, ugnijeลพฤene tablice, predikate atributa i tehnike umjetne inteligencije za dinamiฤke mreลพe.

U ฤemu je web tablica Selenium?
A Web tablica in Selenium je WebElement koji se koristi za tabliฤni prikaz podataka ili informacija. Prikazani podaci mogu biti statiฤki ili dinamiฤki. ฤelijama i retcima web tablice pristupa se putem WebElement metoda u kombinaciji s lokatorima. Tipiฤan primjer je mreลพa specifikacija proizvoda prikazana na stranici proizvoda e-trgovine.
ฤitanje HTML web tablice
Mnogo puta testeri trebaju pristupiti elementima, obiฤno tekstualnim vrijednostima, koji se nalaze unutar HTML tablica. Meฤutim, web dizajneri rijetko daju atribut id ili name na pojedinaฤnim ฤelijama. Stoga metode poput By.id(), By.name() ili By.cssSelector() rijetko funkcioniraju. U ovom scenariju, najpouzdanija opcija je By.xpath() jer prolazi kroz odnose roditelj-dijete unutar oznake tablice.
Kako rukovati web tablicom u Selenium
Razmotrite HTML kod u nastavku za rukovanje web tablicama Selenium.
Koristit ฤemo XPath da biste dobili unutarnji tekst ฤelije koja sadrลพi tekst "ฤetvrta ฤelija".
Korak 1 โ Postavite nadreฤeni element (tablica)
XPath lokatori u WebDriveru uvijek poฤinju s dvostrukom kosom crtom "//" nakon koje slijedi roditeljski element. Buduฤi da se bavimo web tablicama u Selenium, nadreฤeni element bi uvijek trebao biti oznaฤiti. Prva porcija naลกeg Selenium XPath lokator tablice stoga mora zapoฤeti s โ//tableโ.
Korak 2 โ Dodajte podreฤene elemente
Element neposredno ispod je , pa je dijete od Suprotno tome, je roditelj od Svi podreฤeni elementi u XPath-u smjeลกteni su desno od svog roditeljskog elementa, odvojeni jednom kosom crtom "/" kao ลกto je prikazano dolje.
.png)
Korak 3 โ Dodajte predikate
The element sadrลพi dva oznake. Ove dvije oznake su djeca od , pa je roditelj oboje. Dvoje elementi su braฤa i sestre. Braฤa i sestre su podreฤeni elementi koji dijele istog roditelja..
Da biste doลกli do koja sadrลพi โฤetvrtu ฤelijuโ, prvo moramo pristupiti drugi , a ne prvi. Pisanje samo "//table/tbody/tr" ciljalo bi prvi oznaฤiti.
Dakle, kako pristupiti drugom Odgovor je koristiti Predikati. Predikati su brojevi ili HTML atributi zatvoreni u uglatim zagradama โ[ ]โ koji razlikuju podreฤeni element od njegovih srodnih elemenata.Buduฤi da nam je potreban drugi redak, kao predikat koristimo โ[2]โ.
Ako izostavimo predikat, XPath vraฤa prvog brata. Stoga ฤe bilo koji od XPath kodova u nastavku dosegnuti prvog .
Korak 4 โ Dodajte sljedeฤe podreฤene elemente pomoฤu odgovarajuฤih predikata
Sljedeฤi element koji nam treba je drugi Primjenom pravila iz koraka 2 i 3 dolazimo do XPath-a prikazanog u nastavku.
Sada kada imamo ispravan XPath lokator, moลพemo pristupiti ฤeliji i proฤitati njezin unutarnji tekst pomoฤu donjeg koda. To pretpostavlja da ste spremili HTML stranicu kao "newhtml.html" na C pogonu.
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();
}
Pristup ugnijeลพฤenim tablicama
Ista naฤela vrijede i za ugnijeลพฤene tablice. Ugnijeลพฤene tablice su tablice smjeลกtene unutar druge tablice. Primjer je prikazan u nastavku.
Za pristup ฤeliji s tekstom โ4-5-6โ koristeฤi ideje za roditelj/dijete i predikat iz prethodnog odjeljka, moลพemo sastaviti XPath prikazan u nastavku.
WebDriverov kod u nastavku dohvaฤa unutarnji tekst ciljane ฤelije.
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();
}
Ispis u nastavku potvrฤuje da je uspjeลกno pristupljeno unutarnjoj tablici.
Koriลกtenje atributa kao predikata
Ako se element nalazi duboko unutar HTML-a, gdje brojanje braฤe i sestara postaje mukotrpno, umjesto toga moลพemo koristiti atribut unique tog elementa.
U donjem primjeru, ฤelija โNew York do Chicagaโ nalazi se duboko unutar Mercury Poฤetna stranica Tours.
Kao predikat moลพemo koristiti jedinstveni atribut tablice (width=โ270โณ). Atributi se koriste kao predikati tako ลกto im se ispred stavlja simbol @U gornjem primjeru, ฤelija โNew York do Chicagaโ nalazi se u prvoj ฤetvrtog , pa bi naลก XPath trebao izgledati kao ลกto je prikazano dolje.
Imajte na umu da kada stavite XPath unutra Java, dvostruke navodnike oko "270" izbjegnite obrnutom kosom crtom kako se niz By.xpath() ne bi prerano zavrลกio.
Sada smo spremni pristupiti toj ฤeliji pomoฤu donjeg koda.
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();
}
Preฤac: Koristite Inspect Element za pristup tablicama Selenium
Ako je indeks ili atribut elementa teลกko dobiti, najbrลพi naฤin generiranja XPath-a je koriลกtenje Inspect Elementa u modernim DevTools alatima preglednika.
Razmotrite primjer u nastavku iz Mercury Poฤetna stranica Tours.
Korak 1
Desnom tipkom miลกa kliknite ciljnu ฤeliju i odaberite Pregledaj da biste vidjeli DOM putanju, a zatim kopirajte cijeli XPath.
Korak 2
Potraลพite prvi roditeljski element "table" i izbriลกite sve lijevo od njega.
Korak 3
Preostali XPath prefiksirajte dvostrukom kosom crtom "//" i kopirajte ga u svoj WebDriver kod.
WebDriver kod u nastavku dohvaฤa unutarnji tekst duboko ugnijeลพฤenog elementa.
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();
}
Kako prebrojati retke i stupce u dinamiฤkoj web tablici
Dinamiฤke web tablice, kao ลกto su nadzorne ploฤe ili rezultati pretraลพivanja, prikazuju razliฤit broj redaka pri svakom uฤitavanju. Za njihovu obradu koristite findElements dohvatiti svaki u Listu, a zatim kroz nju proฤite kroz petlju kako biste proฤitali svaku ฤeliju. Isjeฤak u nastavku broji retke i ฤita svaku ฤeliju u tablici ฤiji je ID "kupci".
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());
}
}
Zamotajte lokator u WebDriverWait sa visibilityOfAllElementsLocatedBy kada AJAX uฤitava tablicu. To sprjeฤava zastarjele reference elemenata na mreลพama koje se sporo renderiraju.
Selenium 4 relativna lokatora za web tablice
Selenium 4 je uveo relativne lokatore koji ciljaju elemente prema vizualnom poloลพaju. Korisni su kada se XPath indeksi prekidaju zbog promjene redoslijeda redaka. Metode above(), below(), toLeftOf(), toRightOf()i near() svi prihvaฤaju sidreni 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());
Relativni lokatori ostaju ฤitljivi kada se promijeni redoslijed stupaca. Uparite ih s eksplicitnim ฤekanjima za najjaฤe rezultate na stranicama temeljenim na podacima.
AI alati za rukovanje dinamiฤkim web tablicama
Platforme za testiranje potpomognute umjetnom inteligencijom smanjuju odrลพavanje lokatora na mreลพama koje se ฤesto mijenjaju. Alati poput Testim, Mabli Funkcionalizirati koriste raฤunalni vid i DOM modele za otkrivanje pomaka stupaca i samoobnavljajuฤe lokatore. Identificiraju retke prema tekstu zaglavlja i sliฤnosti ฤelija, a ne prema fiksnim XPath indeksima.
Za ฤisto Selenium projekti, knjiลพnice kao ลกto su Healenium Omotajte WebDriver i prepiลกite neispravne lokatore tijekom izvoฤenja. Kombinirajte ove alate s WebDriverWait kako biste odrลพali stabilnost dinamiฤkih skripti tablica bez prepisivanja selektora nakon svake promjene korisniฤkog suฤelja.
Rezime
- By.xpath() je najpouzdaniji naฤin pristupa ฤelijama web tablice u Selenium.
- Ako je brojanje braฤe i sestara teลกko, koristite jedinstveni atribut kao predikat, s prefiksom @.
- findElements vraฤa listu koji podrลพava brojanje redaka u dinamiฤkim tablicama.
- Selenium 4 relativna lokatora (iznad, ispod, blizu) smanjuju ovisnost o pozicijskom XPath-u.
- Inspect Element u DevToolsima ubrzava generiranje XPath-a za duboko zakopane ฤelije.
- AI alati kao ลกto su Testim, Mabl i Healenium lokatori s moguฤnoลกฤu samoobnavljanja za promjenu mreลพe.

.png)
.png)



















