Selenium WebDriver Kullanarak Dinamik Web Tablolarını Yönetme

İçindekiler:

Anonim

Web'de yayınlanan iki tür HTML tablosu vardır:

  1. Statik tablolar : Veriler statiktir, yani satır ve sütun sayısı sabittir.
  2. 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 ColumnsListe  col = 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ıListe  col = 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.List  rows_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.