Web'de yayınlanan iki tür HTML tablosu vardır:
- Statik tablolar : Veriler statiktir, yani satır ve sütun sayısı sabittir.
- Dinamik tablolar : Veriler dinamiktir, yani satır ve sütun sayısı SABİT DEĞİLDİR.
Şimdi Selenium'da dinamik tabloyu nasıl kullanacağımızı öğreneceğiz:
Aşağıda Selenium for Sales'te dinamik bir web tablosu örneği verilmiştir. Giriş tarihi filtrelerine bağlı olarak, satır sayısı değiştirilecektir. Yani doğası gereği dinamiktir.
Statik tabloyu işlemek kolaydır, ancak Selenium'da dinamik tabloları işlemek, satırlar ve sütunlar sabit olmadığından biraz zordur.
Bu eğitimde öğreneceksiniz-
- Web Tablosu Öğelerini Bulmak için X-Yolunu Kullanma
- Örnek: Dinamik WebTable'dan satır ve sütun sayısını getir
- Örnek: Dinamik Tablonun belirli bir satırının ve sütununun hücre değerini getir
- Örnek: Dinamik Tablonun Bir Sütunundaki tüm Değerlerin Maksimumunu Alın
- Örnek: Bir Dinamik Tablonun tüm değerlerini alın
Web Tablosu Öğelerini Bulmak için X-Yolunu Kullanma
Web öğesini bulmadan önce, ilk önce anlayalım-
Web öğesi nedir?
Web öğeleri, metin kutusu, açılır menüler radyo düğmeleri, gönderme düğmeleri vb. Gibi HTML öğelerinden başka bir şey değildir. Bu HTML öğeleri, başlangıç etiketiyle yazılır ve bir bitiş etiketiyle biter .
Örneğin,
İlk HTML Belgem
.Bulmak istediğimiz web öğesinin X yolunu alma adımları.
Adım 1) Chrome'da http://demo.guru99.com/test/web-table-element.php adresine gidin.
Adım 2) x-yolu getirilecek web öğesine sağ tıklayın. Bizim durumumuzda, "Şirket" Denetle seçeneğine sağ tıklayın. Aşağıdaki ekran gösterilecektir -
Adım 3) Vurgulanan web öğesine sağ tıklayın> Kopyala -> x-yolunu kopyala seçeneğini seçin.
Adım 4) Öğeyi bulmak için Selenium WebDriver'da kopyalanan X-yolunu "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" kullanın.
Örnek: Dinamik WebTable'dan satır ve sütun sayısını getir
Selenium'da dinamik web tablosu işlerken, satır ve sütun sayısını tahmin edemiyoruz.
Selenium web sürücüsünü kullanarak bulabiliriz
- Selenium'daki web tablosunun Satır ve sütun sayısı
- X satırı veya Y sütunun verileri.
Aşağıda, Selenium'daki web tablosunu işlemek için toplam satır ve sütun sayısını getirme programı bulunmaktadır:
import java.text.ParseException;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;public class Noofrowsandcols {public static void main (String [] args) ParseException {atarWebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");//No.of ColumnsListecol = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Sütun sayısı: + sütun.size ());// Satır sayısıListe rows = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Satır sayısı: + rows.size ()); wd.close (); }}
Kod Açıklaması:
- Burada ilk olarak Web Sürücüsü nesnesini "wd" olarak tanımladık ve onu krom sürücüsüne başlattık.
- "Col" daki toplam sütun sayısı için List
kullanıyoruz. - findElements komutları, belirtilen konumlandırıcıyla eşleşen TÜM öğelerin bir listesini döndürür
- findElements ve X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th kullanarak tüm sütunları alıyoruz
- Benzer şekilde, işlemi satırlar için tekrar ederiz.
Çıktı:
Örnek: Dinamik Tablonun belirli bir satırının ve sütununun hücre değerini getir
Tablonun 3. satırına ve ikinci hücresinin verilerine ihtiyacımız olduğunu varsayalım . Aşağıdaki tabloya bakın-
Yukarıdaki tabloda, veriler bir süre sonra düzenli olarak güncellenir. Almayı denediğiniz veriler yukarıdaki ekran görüntüsünden farklı olacaktır. Ancak kod aynı kalır. İşte 3. satır ve 2. sütunun verilerini almak için örnek program .
import java.text.ParseException;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;içe aktar java.util.concurrent.TimeUnit;public class RowandCell {public static void main (String [] args) ParseException {atarWebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). timeout (). örtük olarak Bekleme (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("tablo"));// Üçüncü tablo satırını bulmak içinWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));String rowtext = tableRow.getText ();System.out.println ("Tablonun üçüncü satırı: + satır metni);// 3. satırın 2. sütun verilerini almak içinWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));String valueIneed = cellIneed.getText ();System.out.println ("Hücre değeri: + değerİhtiyaç duyulan);wd.close ();}}
Kod Açıklaması:
- Tablo, "tagname" konumlandırıcı özelliği kullanılarak bulunur.
- XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]" kullanarak 3. satırı bulun ve getText () işlevini kullanarak metnini alın
- Xpath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]" kullanarak 3. satırdaki 2. hücreyi bulun ve getText () işlevini kullanarak metnini alın
Çıktı :
Örnek: Dinamik Tablonun Bir Sütunundaki tüm Değerlerin Maksimumunu Alın
Bu örnekte, belirli bir sütundaki tüm değerlerin maksimumunu alacağız.
Aşağıdaki tabloya bakın -
İşte kod
import java.text.ParseException;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;içe aktar java.text.NumberFormat;public class MaxFromTable {public static void main (String [] args) ParseException {atarWebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");Dize max;çift m = 0, r = 0;//Hayır. Sütun SayısıListecol = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Toplam sütun sayısı: + col.size ());// Satır sayısıListe rows = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); System.out.println ("Toplam Satır sayısı: + rows.size ()); for (int i = 1; i r) {r = m; }} System.out.println ("Maksimum cari fiyat: + r); }}
Kod Açıklaması:
- Chrome sürücüsünü kullanarak web tablosunu buluruz ve XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]" kullanarak toplam satır sayısını alırız.
- For döngüsünü kullanarak, toplam satır sayısını yineliyoruz ve değerleri birer birer getiriyoruz. Sonraki satırı almak için XPath'de (i + 1) kullanıyoruz
- Eski değeri yeni değerle karşılaştırıyoruz ve maksimum değer for döngüsünün sonunda yazdırılıyor
Çıktı
Örnek: Bir Dinamik Tablonun tüm değerlerini alın
Aşağıdaki tabloyu inceleyin http://demo.guru99.com/test/table.html
Her satırın sütun sayısı farklıdır.
Burada 1, 2 ve 4 numaralı satır 3 hücreye ve 3 numaralı satır 2 hücreye ve 5 numaralı satır 1 hücreye sahiptir.
Tüm hücrelerin değerlerini almalıyız
İşte kod:
import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;içe aktar java.util.concurrent.TimeUnit;import org.openqa.selenium.chrome.ChromeDriver;public class NofRowsColmns {public static void main (String [] args) ParseException {atarWebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.manage (). timeout (). örtük olarak Bekleme (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Tabloyu bulmak için.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Tablonun satırlarını bulmak için.Listrows_table = mytable.findElements (By.tagName ("tr"));// Tablodaki satır sayısını hesaplamak için.int rows_count = rows_table.size ();// Döngü, tablonun son satırına kadar çalışacaktır.for (int row = 0; row Columns_row = rows_table.get (row) .findElements (By.tagName ("td"));// Sütun (hücre) sayısını hesaplamak için. Bu belirli satırda.int column_count = Columns_row.size ();System.out.println ("Satırdaki hücre sayısı" + satır + "," + sütun_sayısı "dır);// Döngü, söz konusu satırın son hücresine kadar çalışacaktır.for (int sütun = 0; sütun Kod Açıklaması:
- rows_count, toplam satır sayısını verir
- her satır için rows_table.get (row) .findElements (By.tagName ("td")) kullanarak toplam sütun sayısını elde ederiz;
- Her sütunu ve her satırı yineliyoruz ve değerleri alıyoruz.
Çıktı :
Özet
- By.xpath () genellikle tablo öğelerine erişmek için kullanılır.
- Selenium'daki statik web tabloları yapı olarak tutarlıdır. yani, sabit sayıda satıra ve Hücre verilerine sahiptirler.
- Dinamik web tabloları tutarsızdır, yani sabit sayıda satır ve hücre verisine sahip değildirler.
- Selenyum web sürücüsünü kullanarak dinamik web tablolarını kolayca yönetebiliriz.
- Selenium Webdriver, dinamik web tablolarına X-yolu ile erişmemizi sağlar
Makaleye Kanchan Kulkarni katkıda bulunuyor.