Hur man hanterar webbtabell i Selenium
โก Smart sammanfattning
Selenium Webbtabellhantering lรฅter QA-ingenjรถrer lรคsa tabelldata frรฅn HTML-rader och -kolumner med hjรคlp av XPath, CSS och Selenium 4 relativa positionerare. Den hรคr artikeln gรฅr igenom statiska tabeller, kapslade tabeller, attributpredikat och AI-tekniker fรถr dynamiska rutnรคt.

Vad รคr en webbtabell i Selenium?
A Webbtabell in Selenium รคr ett WebElement som anvรคnds fรถr tabellformad representation av data eller information. Data som visas kan vara antingen statiska eller dynamiska. Webbtabellceller och rader nรฅs via WebElement-metoder i kombination med positionerare. Ett typiskt exempel รคr produktspecifikationsrutnรคtet som visas pรฅ en e-handelsproduktsida.
Lรคsa en HTML-webbtabell
Det finns mรฅnga tillfรคllen dรฅ testare behรถver komma รฅt element, vanligtvis textvรคrden, som finns inuti HTML-tabeller. Webbdesigners tillhandahรฅller dock sรคllan ett id- eller name-attribut pรฅ enskilda celler. Dรคrfรถr fungerar metoder som By.id(), By.name() eller By.cssSelector() sรคllan. I det hรคr scenariot รคr det mest tillfรถrlitliga alternativet By.xpath() eftersom det leder fรถrรคlder-barn-relationerna inuti tabelltaggen.
Hur man hanterar webbtabell i Selenium
Tรคnk pรฅ HTML-koden nedan fรถr att hantera webbtabeller i Selenium.
Vi kommer anvรคnda XPath fรถr att fรฅ den inre texten i cellen som innehรฅller texten "fjรคrde cellen".
Steg 1 โ Stรคll in det รถverordnade elementet (tabell)
XPath-lokaliseringar i WebDriver bรถrjar alltid med ett dubbelt snedstreck "//" fรถljt av fรถrรคldraelementet.. Eftersom vi har att gรถra med webbtabeller i Selenium, bรถr det รถverordnade elementet alltid vara mรคrka. Den fรถrsta delen av vรฅr Selenium XPath-tabellsรถkaren mรฅste dรคrfรถr bรถrja med โ//tabellโ.
Steg 2 โ Lรคgg till de underordnade elementen
Elementet direkt under รคr , sรฅ รคr barnet till Omvรคnt, รคr fรถrรคlder till Alla underordnade element i XPath placeras till hรถger om sitt รถverordnade element, separerade med ett snedstreck "/" som visas nedan.
.png)
Steg 3 โ Lรคgg till predikat
De elementet innehรฅller tvรฅ taggar. Dessa tvรฅ taggarna รคr underordnade , sรฅ รคr fรถrรคlder till bรฅda. De tvรฅ elementen รคr syskon. Syskon รคr underordnade element som delar samma fรถrรคlder.
Fรถr att nรฅ som innehรฅller "fjรคrde cellen", mรฅste vi fรถrst komma รฅt 2:a , inte den fรถrsta. Att bara skriva "//table/tbody/tr" skulle rikta in sig pรฅ den fรถrsta mรคrka.
Sรฅ hur fรฅr vi tillgรฅng till den andra Svaret รคr att anvรคnda Predikat. Predikat รคr siffror eller HTML-attribut inom hakparenteser "[]" som skiljer ett underordnat element frรฅn dess syskon.Eftersom raden vi behรถver รคr den andra, anvรคnder vi "[2]" som predikat.
Om vi โโutelรคmnar predikatet returnerar XPath det fรถrsta syskonet. Dรคrfรถr kommer endera av XPath-koderna nedan att nรฅ det fรถrsta .
Steg 4 โ Lรคgg till de efterfรถljande underordnade elementen med hjรคlp av lรคmpliga predikat
Nรคsta element vi behรถver รคr det andra Genom att tillรคmpa reglerna frรฅn steg 2 och 3 kommer vi fram till XPath som visas nedan.
Nu nรคr vi har rรคtt XPath-lokaliseringsverktyg kan vi komma รฅt cellen och lรคsa dess inre text med hjรคlp av koden nedan. Detta fรถrutsรคtter att du har sparat HTML-sidan som "newhtml.html" pรฅ din C-enhet.
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();
}
ร tkomst till kapslade tabeller
Samma principer gรคller fรถr kapslade tabeller. Kapslade tabeller รคr tabeller placerade inuti en annan tabell. Ett exempel visas nedan.
Fรถr att komma รฅt cellen med texten "4-5-6" med hjรคlp av fรถrรคlder-/barn- och predikatidรฉerna frรฅn fรถregรฅende avsnitt kan vi komponera XPath som visas nedan.
WebDriver-koden nedan hรคmtar den inre texten i den aktuella cellen.
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();
}
Utdata nedan bekrรคftar att den inre tabellen lyckades nรฅs.
Anvรคnda attribut som predikat
Om elementet sitter djupt inne i HTML-koden, dรคr det blir smรคrtsamt att rรคkna syskon, kan vi anvรคnda elementets unika attribut istรคllet.
I exemplet nedan รคr cellen "New York till Chicago" begravd lรฅngt inuti Mercury Tours hemsida.
Vi kan anvรคnda tabellens unika attribut (width=โ270โณ) som predikat. Attribut anvรคnds som predikat genom att prefixet @-symbolenI exemplet ovan finns cellen โNew York till Chicagoโ i den fรถrsta av den fjรคrde , sรฅ vรฅr XPath bรถr se ut som den som visas nedan.
Kom ihรฅg att nรคr du lรคgger in XPath-filen Java, omvandla citattecken runt "270" med ett bakรฅtsnedstreck sรฅ att By.xpath()-strรคngen inte avslutas i fรถrtid.
Vi รคr nu redo att komma รฅt den cellen med koden nedan.
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();
}
Genvรคg: Anvรคnd Inspektera element fรถr att komma รฅt tabeller i Selenium
Om indexet eller attributet fรถr ett element รคr svรฅrt att fรฅ tag pรฅ รคr det snabbaste sรคttet att generera XPath att anvรคnda Inspect Element i moderna webblรคsares DevTools.
Betrakta exemplet nedan frรฅn Mercury Tours hemsida.
steg 1
Hรถgerklicka pรฅ mรฅlcellen och vรคlj Inspektera fรถr att visa DOM-sรถkvรคgen och kopiera sedan hela XPath-filen.
steg 2
Leta efter det fรถrsta "tabell" รถverordnade elementet och ta bort allt till vรคnster om det.
steg 3
Prefixera รฅterstรฅende XPath med dubbelt snedstreck "//" och kopiera det till din WebDriver-kod.
WebDriver-koden nedan hรคmtar den inre texten i det djupt kapslade elementet.
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();
}
Hur man rรคknar rader och kolumner i en dynamisk webbtabell
Dynamiska webbtabeller, som instrumentpaneler eller sรถkresultat, renderar olika antal rader vid varje inlรคsning. Anvรคnd fรถr att hantera dem findElements att hรคmta varje in i en lista och loopa sedan igenom fรถr att lรคsa varje cell. Kodavsnittet nedan rรคknar rader och lรคser varje cell i en tabell vars id รคr "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());
}
}
Linda in lokaliseringsanordningen i en WebDriverWait med visibilityOfAllElementsLocatedBy nรคr tabellen laddas av AJAX. Detta fรถrhindrar inaktuella elementreferenser pรฅ lรฅngsamt รฅtergivande rutnรคt.
Selenium 4 Relativa lokaliseringspunkter fรถr webbtabeller
Selenium 4 introducerade relativa positioner som riktar in sig pรฅ element efter visuell position. De รคr anvรคndbara nรคr XPath-index bryts pรฅ grund av att rader รคr omordnade. Metoderna above(), below(), toLeftOf(), toRightOf()och near() alla accepterar ett ankare 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());
Relativa positioner fรถrblir lรคsbara รคven nรคr kolumnordningen รคndras. Kombinera dem med explicita vรคntetider fรถr de starkaste resultaten pรฅ datadrivna sidor.
AI-verktyg fรถr hantering av dynamiska webbtabeller
AI-assisterade testplattformar minskar underhรฅllet av lokaliseringsenheter pรฅ nรคt som รคndras ofta. Verktyg som Testim, Mabloch Funktionera anvรคnder datorseende plus DOM-modeller fรถr att upptรคcka kolumnfรถrskjutningar och sjรคlvlรคkande positioner. De identifierar rader genom rubriktext och celllikhet snarare รคn fasta XPath-index.
Fรถr ren Selenium projekt, bibliotek som t.ex. Healenium Slรฅ om WebDriver och skriv om trasiga locatorer vid kรถrning. Kombinera dessa verktyg med WebDriverWait fรถr att hรฅlla dynamiska tabellskript stabila utan att skriva om selektorer efter varje UI-รคndring.
Sammanfattning
- By.xpath() รคr det mest pรฅlitliga sรคttet att komma รฅt celler i en webbtabell i Selenium.
- Om det รคr svรฅrt att rรคkna syskon, anvรคnd ett unikt attribut som predikat, med @-tecknet som prefix.
- findElements returnerar en lista som stรถder radrรคkning i dynamiska tabeller.
- Selenium 4 relativa positioner (ovan, nedan, nรคra) minskar beroendet av positionell XPath.
- Inspect Element i DevTools accelererar XPath-generering fรถr djupt begravda celler.
- AI-verktyg som t.ex Testim, Mabl och Healenium sjรคlvlรคkande lokaliseringsverktyg fรถr att รคndra nรคt.

.png)
.png)



















