Kétféle HTML táblázatot lehet közzétenni az interneten:
- Statikus táblák : Az adatok statikusak, azaz rögzített sorok és oszlopok száma.
- Dinamikus táblák : Az adatok dinamikusak, azaz a sorok és oszlopok száma NEM rögzített.
Most megtanuljuk, hogyan kell kezelni a dinamikus táblázatot a szelénben:
Az alábbiakban látható egy példa a Selenium for Sales dinamikus webtáblájára. A beviteli dátumszűrők alapján a sorok száma megváltozik. Tehát dinamikus jellegű.
A statikus asztal kezelése egyszerű, de a dinamikus táblák kezelése a Szelénben kissé nehéz, mivel a sorok és oszlopok nem állandóak.
Ebben az oktatóanyagban megtanulja-
- Az X-Path használata a webtábla-elemek megkereséséhez
- Példa: Sorok és oszlopok számának lekérése a Dynamic WebTable alkalmazásból
- Példa: A Dinamikus táblázat egy adott sorának és oszlopának cellájának értéke
- Példa: Az összes érték maximális megszerzése a dinamikus táblázat oszlopában
- Példa: Szerezzen be egy dinamikus tábla összes értékét
Az X-Path használata a webtábla-elemek megkereséséhez
Mielőtt megtalálnánk a web elemet, először értsük meg-
Mi az a webes elem?
A webes elemek nem más, mint HTML elemek, például szövegdoboz, legördülő menü rádiógombok, beküldési gombok stb. Ezek a HTML elemek kezdő címkével vannak írva, és befejező címkével végződnek .
Például,
Az első HTML dokumentumom
.Lépések a keresni kívánt webes elem X-elérési útjának megszerzéséhez.
1. lépés: A Chrome-ban lépjen a http://demo.guru99.com/test/web-table-element.php webhelyre
2. lépés: Kattintson a jobb gombbal arra a webes elemre, amelynek x-elérési útját be kell tölteni. Esetünkben kattintson a jobb gombbal a "Vállalat" gombra. A következő képernyő jelenik meg -
3. lépés: Kattintson jobb gombbal a kijelölt webelemre, majd válassza a Másolás -> X-út másolása opciót.
4. lépés: Használja a Selenium WebDriver másolt "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" X-útvonalát az elem megkereséséhez.
Példa: Sorok és oszlopok számának lekérése a Dynamic WebTable alkalmazásból
A dinamikus webtáblák kezelése a Seleniumban nem tudja megjósolni a sorok és oszlopok számát.
A Selenium web-illesztőprogram használatával megtalálhatjuk
- A szelén webtáblájának sorainak és oszlopainak száma
- X sor vagy Y oszlop adatai.
Az alábbiakban a szelén webtáblájának kezeléséhez szükséges sorok és oszlopok teljes számának lekérésére szolgáló program található:
java.text.ParseException importálása;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;nyilvános osztály Noofrowsandcols {public static void main (String [] args) dobja a ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = új ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");// Oszlopok számaListacol = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th");System.out.println ("A colok száma: + col.size ());// sorok számaLista sorok = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("A sorok száma: + rows.size ()); wd.close (); }}
Kód Magyarázat:
- Itt először deklaráltuk a Web Driver objektumot "wd" -ként és inicializáltuk chrome illesztőprogramra.
- A
listát használjuk a "col" oszlopainak összes számához. - A findElements parancsok a megadott lokátorhoz illő MINDEN elem listáját adják vissza
- a findElements és az X-path // // [[id = \ "leftcontainer \"] / table / thead / tr / th használatával megkapjuk az összes oszlopot
- Hasonlóképpen megismételjük a folyamatot a soroknál.
Kimenet:
Példa: A Dinamikus táblázat egy adott sorának és oszlopának cellájának értéke
Tegyük fel, hogy szükségünk van a táblázat harmadik sorára és annak második cellájának adataira. Lásd az alábbi táblázatot
A fenti táblázatban az adatok bizonyos idő elteltével rendszeresen frissülnek. A visszakeresni kívánt adatok eltérnek a fenti képernyőképtől. A kód azonban ugyanaz marad. Itt mintaprogram, hogy a 3 rd sor és 2 nd oszlop adatait.
java.text.ParseException importálása;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;importálja a java.util.concurrent.TimeUnit;nyilvános osztály RowandCell {public static void main (String [] args) dobja a ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = új ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). timeouts (). implicitWait (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("tábla"));// A táblázat harmadik sorának megkereséséhezWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Karakterlánc sorszöveg = tableRow.getText ();System.out.println ("A táblázat harmadik sora: + sorszöveg);// a 3. sor 2. oszlopának adatainak megszerzéséhezWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));String valueIneed = cellIneed.getText ();System.out.println ("A cella értéke: + valueIneed);wd.close ();}}
Kód Magyarázat:
- A táblázat a "tagname" lokátor tulajdonság használatával található.
- Az XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]" használatával keresse meg a harmadik sort, és a getText () függvény segítségével kapja meg a szövegét
- XPath "// * [@ id = \" leftcontainer \ "] / asztal / tbody / TR [3] / td [2]" megtalálja a 2. cella 3 rd sorban, és megkapja a szöveget gettext () funkció
Kimenet :
Példa: Az összes érték maximális megszerzése a dinamikus táblázat oszlopában
Ebben a példában megkapjuk az összes oszlop összes értékének maximumát.
Lásd az alábbi táblázatot -
Itt van a kód
java.text.ParseException importálása;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;java.text.NumberFormat importálása;nyilvános osztály MaxFromTable {public static void main (String [] args) dobja a ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = új ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");Karakterlánc max;kettős m = 0, r = 0;//Nem. oszlopokListacol = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th");System.out.println ("Az oszlopok teljes száma: + col.size ());// sorok számaLista sorok = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]"); System.out.println ("A sorok teljes száma: + rows.size ()); for (int i = 1; i r) {r = m; }} System.out.println ("A jelenlegi maximális ár: + r); }}
Kód Magyarázat:
- A chrome illesztőprogram segítségével megkeresjük a webtáblát, és megkapjuk a sorok teljes számát az XPath használatával. "////[@Id='leftcontainer']/table/tbody/tr/td[1] "
- A ciklushoz használva végigvezetjük a sorok teljes számát, és egyesével lekérjük az értékeket. A következő sor megszerzéséhez az (i + 1) szót használjuk az XPath-ban
- Összehasonlítjuk a régi értéket az új értékkel, és a maximális érték kinyomtatásra kerül a ciklus végén
Kimenet
Példa: Szerezzen be egy dinamikus tábla összes értékét
Vegye figyelembe a következő táblázatot: http://demo.guru99.com/test/table.html
Az egyes sorok oszlopainak száma eltérő.
Itt az 1., 2. és 4. sor 3 cellával rendelkezik, a 3. sor 2 cellával, az 5. sor pedig 1 cellával rendelkezik.
Meg kell kapnunk az összes sejt értékét
Itt van a kód:
java.text.ParseException importálása;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;importálja a java.util.concurrent.TimeUnit;import org.openqa.selenium.chrome.ChromeDriver;nyilvános osztály NofRowsColmns {public static void main (String [] args) dobja a ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = új ChromeDriver ();wd.manage (). timeouts (). implicitWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// A táblázat megkereséséhez.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// A táblázat sorainak megkereséséhez.Sorolja fel asorokat_tábla = mytable.findElements (By.tagName ("tr"));// A táblák sorainak számának kiszámításához.int sorok száma = sorok_táblája.méret ();// A hurok a táblázat utolsó soráig fog végrehajtani.for (int sor = 0; sor Oszlopok_sor = sorok_táblája.get (sor) .findElements (By.tagName ("td"));// Oszlopok (cellák) számának kiszámításához. Abban a konkrét sorban.int oszlopok_szám = Oszlopok_sor.size ();System.out.println ("A sorban lévő cellák száma" + a sor + "a" + oszlopok száma);// A hurok az adott sor utolsó cellájáig fog végrehajtani.for (int oszlop = 0; oszlop Kód Magyarázat:
- A rows_count megadja a sorok teljes számát
- minden sorhoz megkapjuk az oszlopok teljes számát a rows_table.get (row) .findElements (By.tagName ("td")) használatával;
- Minden oszlopot, minden sort végigvezetünk, és lekérjük az értékeket.
Kimenet :
Összegzés
- A By.xpath () általánosan használt táblázatelemek elérésére.
- A szelén statikus webes táblázatai következetes természetűek. azaz van rögzített sorszámuk, valamint Cell adataik.
- A dinamikus webes táblázatok nem konzisztensek, azaz nincs rögzített sor- és cellaadatuk.
- A szelén web-illesztőprogram segítségével könnyen kezelhetjük a dinamikus web-táblázatokat.
- A Selenium Webdriver lehetővé teszi számunkra, hogy az X-útvonalukon keresztül hozzáférjünk a dinamikus web-táblákhoz
A cikkhez Kanchan Kulkarni írt.