Menangani Tabel Web Dinamis Menggunakan Selenium WebDriver

Daftar Isi:

Anonim

Ada dua jenis tabel HTML yang diterbitkan di web-

  1. Tabel statis : Data bersifat statis, yaitu Jumlah baris dan kolom diperbaiki.
  2. Tabel dinamis : Data dinamis yaitu Jumlah baris dan kolom TIDAK tetap.

Sekarang, kita akan belajar bagaimana menangani tabel dinamis di Selenium:

Di bawah ini adalah contoh tabel web dinamis di Selenium untuk Penjualan. Berdasarkan filter tanggal masukan, jumlah baris akan diubah. Jadi, sifatnya dinamis.

Menangani tabel statis itu mudah, tetapi menangani tabel dinamis di Selenium agak sulit karena baris dan kolom tidak konstan.

Dalam tutorial ini, Anda akan belajar-

  • Menggunakan X-Path untuk Menemukan Elemen Tabel Web
  • Contoh: Ambil jumlah baris dan kolom dari Dynamic WebTable
  • Contoh: Ambil nilai sel dari baris dan kolom tertentu dari Tabel Dinamis
  • Contoh: Dapatkan Maksimum dari semua Nilai dalam Kolom Tabel Dinamis
  • Contoh: Dapatkan semua nilai dari Tabel Dinamis

Menggunakan X-Path untuk Menemukan Elemen Tabel Web

Sebelum kita menemukan elemen web, pertama mari kita pahami-

Apa itu elemen web?

Elemen web tidak lain adalah elemen HTML seperti kotak teks, tombol radio dropdown, tombol kirim, dll. Elemen HTML ini ditulis dengan tag awal dan diakhiri dengan tag akhir .

Sebagai contoh,

Dokumen HTML Pertama Saya

.

Langkah-langkah untuk mendapatkan X-path dari elemen web yang ingin kita cari.

Langkah 1) Di Chrome, Buka http://demo.guru99.com/test/web-table-element.php

Langkah 2) Klik kanan pada elemen web yang x-pathnya akan diambil. Dalam kasus kami, klik kanan pada opsi "Perusahaan" Pilih Periksa. Layar berikut akan ditampilkan -

Langkah 3) Klik kanan pada elemen web yang disorot> Pilih Salin -> Salin opsi x-path.

Langkah 4) Gunakan X-path yang disalin "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" di Selenium WebDriver untuk mencari elemen.

Contoh: Ambil jumlah baris dan kolom dari Dynamic WebTable

Sementara penanganan tabel web dinamis di Selenium, kami tidak dapat memprediksi jumlah baris dan kolomnya.

Menggunakan driver web Selenium, kami dapat menemukan

  • Jumlah Baris dan kolom tabel web di Selenium
  • Data baris X atau kolom Y.

Di bawah ini adalah program untuk mengambil jumlah baris dan kolom untuk menangani tabel web di Selenium:

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;impor org.openqa.selenium.chrome.ChromeDriver;kelas publik Noofrowsandcols {public static void main (String [] args) melempar ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");//Jumlah KolomDaftar  col = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Jumlah kolom adalah: + col.size ());// Jumlah barisDaftar  baris = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Jumlah baris adalah: + baris.size ()); wd.close (); }}  

Penjelasan Kode:

  • Di sini kita pertama kali menyatakan objek Web Driver "wd" & menginisialisasinya ke driver chrome.
  • Kami menggunakan Daftar untuk total jumlah kolom di "col".
  • Perintah findElements mengembalikan daftar SEMUA elemen yang cocok dengan pencari lokasi yang ditentukan
  • menggunakan findElements dan X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th kita mendapatkan semua kolom
  • Demikian pula, kami mengulangi proses untuk baris.

Keluaran:

Contoh: Ambil nilai sel dari baris dan kolom tertentu dari Tabel Dinamis

Mari kita asumsikan kita membutuhkan 3 rd baris tabel dan data sel kedua ini. Lihat tabel di bawah-

Pada tabel di atas, data diperbarui secara berkala setelah beberapa waktu. Data yang Anda coba ambil akan berbeda dari tangkapan layar di atas. Namun, kodenya tetap sama. Berikut ini adalah contoh program untuk mendapatkan 3 rd baris dan 2 nd kolom data ini.

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;impor org.openqa.selenium.chrome.ChromeDriver;import java.util.concurrent.TimeUnit;kelas publik RowandCell {public static void main (String [] args) melempar ParseException {WebDriver 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 (). implicitlyWait (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("table"));// Untuk mencari baris ketiga dari tabelWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));String rowtext = tableRow.getText ();System.out.println ("Baris ketiga tabel: + rowtext);// untuk mendapatkan data kolom ke-2 baris ke-3WebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));String valueIneed = cellIneed.getText ();System.out.println ("Nilai sel adalah: + valueIneed);wd.close ();}}

Penjelasan Kode:

  • Tabel ditempatkan menggunakan properti locator "tagname".
  • Menggunakan XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]" menemukan 3 rd baris dan mendapat teks dengan menggunakan getText () fungsi
  • Menggunakan XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]" menemukan 2 sel dalam 3 rd baris dan mendapat teks dengan menggunakan getText () fungsi

Keluaran :

Contoh: Dapatkan Maksimum dari semua Nilai dalam Kolom Tabel Dinamis

Dalam contoh ini, kita akan mendapatkan nilai maksimum dari semua nilai di kolom tertentu.

Lihat tabel berikut -

Ini kodenya

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;impor org.openqa.selenium.chrome.ChromeDriver;impor java.text.NumberFormat;kelas publik MaxFromTable {public static void main (String [] args) melempar ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");String maks;ganda m = 0, r = 0;//Tidak. dari KolomDaftar  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Jumlah Total kolom adalah: + col.size ());// Jumlah barisDaftar  baris = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); System.out.println ("Jumlah Total baris adalah: + baris.size ()); untuk (int i = 1; i  r) {r = m; }} System.out.println ("Harga maksimum saat ini adalah: + r); }}  

Penjelasan Kode:

  • Dengan menggunakan driver chrome, kami mencari tabel web dan mendapatkan jumlah total baris menggunakan XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
  • Menggunakan for loop, kami mengulang melalui jumlah baris dan mengambil nilai satu per satu. Untuk mendapatkan baris berikutnya kami menggunakan (i + 1) di XPath
  • Kami membandingkan nilai lama dengan nilai baru dan nilai maksimum dicetak di akhir perulangan for

Keluaran

Contoh: Dapatkan semua nilai dari Tabel Dinamis

Perhatikan tabel berikut http://demo.guru99.com/test/table.html

Jumlah kolom untuk setiap baris berbeda.

Di sini baris nomor 1, 2 dan 4 memiliki 3 sel, dan baris nomor 3 memiliki 2 sel, dan baris nomor 5 memiliki 1 sel.

Kita perlu mendapatkan nilai dari semua sel

Ini kodenya:

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import java.util.concurrent.TimeUnit;impor org.openqa.selenium.chrome.ChromeDriver;kelas publik NofRowsColmns {public static void main (String [] args) melempar ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.manage (). timeout (). implicitlyWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Untuk mencari tabel.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Untuk menemukan baris tabel.Daftar  row_table = mytable.findElements (By.tagName ("tr"));// Untuk menghitung jumlah baris dalam tabel.int row_count = row_table.size ();// Loop akan dijalankan hingga baris terakhir tabel.untuk (int row = 0; baris  Columns_row = row_table.get (row) .findElements (By.tagName ("td"));// Untuk menghitung tidak ada kolom (sel). Di baris khusus itu.int column_count = Columns_row.size ();System.out.println ("Jumlah sel di Baris" + baris + "adalah" + jumlah_kolom);// Loop akan dijalankan hingga sel terakhir dari baris tertentu itu.untuk (int kolom = 0; kolom 

Penjelasan Kode:

  • row_count memberikan jumlah total baris
  • untuk setiap baris kita mendapatkan jumlah total kolom menggunakan baris_tabel.get (baris) .findElements (By.tagName ("td"));
  • Kami mengulang melalui setiap kolom dan setiap baris dan mengambil nilai.

Keluaran :

Ringkasan

  • By.xpath () biasanya digunakan untuk mengakses elemen tabel.
  • Tabel web statis di Selenium bersifat konsisten. yaitu mereka memiliki jumlah baris tetap serta data sel.
  • Tabel web dinamis tidak konsisten yaitu tidak memiliki jumlah baris dan data sel yang tetap.
  • Dengan menggunakan driver web selenium, kita dapat menangani tabel web dinamis dengan mudah.
  • Selenium Webdriver memungkinkan kita mengakses tabel web dinamis melalui X-path mereka

Artikel ini dikontribusikan oleh Kanchan Kulkarni.