Terdapat dua jenis jadual HTML yang diterbitkan di web-
- Jadual statik : Data adalah statik iaitu Jumlah baris dan lajur tetap.
- Jadual dinamik : Data dinamik iaitu Bilangan baris dan lajur TIDAK tetap.
Sekarang, kita akan belajar bagaimana mengendalikan jadual dinamik di Selenium:
Berikut adalah contoh jadual web dinamik di Selenium for Sales. Berdasarkan penapis tarikh input, bilangan baris akan diubah. Jadi, ia bersifat dinamik.
Mengendalikan jadual statik memang mudah, tetapi mengendalikan jadual dinamik di Selenium agak sukar kerana baris dan lajur tidak tetap.
Dalam tutorial ini, anda akan belajar-
- Menggunakan X-Path untuk Mencari Elemen Jadual Web
- Contoh: Ambil bilangan baris dan lajur dari Dynamic WebTable
- Contoh: Ambil nilai sel baris dan lajur tertentu dari Jadual Dinamik
- Contoh: Dapatkan Maksimum semua Nilai dalam Lajur Jadual Dinamik
- Contoh: Dapatkan semua nilai Jadual Dinamik
Menggunakan X-Path untuk Mencari Elemen Jadual Web
Sebelum kita mencari elemen web, pertama mari kita faham-
Apa itu elemen web?
Elemen web tidak lain adalah elemen HTML seperti kotak teks, butang radio dropdown, butang hantar, dan lain-lain. Elemen HTML ini ditulis dengan tag permulaan dan diakhiri dengan tag akhir .
Sebagai contoh,
Dokumen HTML Pertama Saya
.Langkah-langkah untuk mendapatkan X-path elemen web yang ingin kita cari.
Langkah 1) Di Chrome, Pergi ke http://demo.guru99.com/test/web-table-element.php
Langkah 2) Klik kanan pada elemen web yang x-path akan diambil. Dalam kes kami, klik kanan pada "Syarikat" Pilih pilihan Pemeriksaan. Skrin berikut akan ditunjukkan -
Langkah 3) Klik kanan pada elemen web yang disorot> Pilih Salin -> Salin pilihan x-path.
Langkah 4) Gunakan X-path yang disalin "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" di Selenium WebDriver untuk mencari elemen tersebut.
Contoh: Ambil bilangan baris dan lajur dari Dynamic WebTable
Walaupun pengendalian jadual web dinamik di Selenium, kami tidak dapat meramalkan bilangan baris dan lajurnya.
Dengan menggunakan pemacu web Selenium, kita dapat mencari
- Bilangan Baris dan lajur jadual web di Selenium
- Data baris X atau lajur Y.
Berikut adalah program untuk mendapatkan jumlah baris dan lajur untuk mengendalikan jadual 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;import org.openqa.selenium.chrome.ChromeDriver;kelas awam Noofrowsandcols {main statik kekosongan awam (String [] args) melemparkan ParseException {Pemandu Web wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = ChromeDriver baru ();wd.get ("http://demo.guru99.com/test/web-table-element.php");//No.of LajurSenaraikancol = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("No cols adalah: + col.size ());// Tiada barisSenaraikan baris = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Tiada baris adalah: + rows.size ()); wd.tutup (); }}
Penjelasan Kod:
- Di sini kita pertama kali menyatakan objek Pemandu Web "wd" & menginisialisasi ke pemacu krom.
- Kami menggunakan List
untuk jumlah lajur dalam "col". - perintah findElements mengembalikan senarai SEMUA elemen yang sepadan dengan pencari yang ditentukan
- menggunakan findElements dan X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th kita mendapat semua lajur
- Begitu juga, kami mengulangi proses untuk baris.
Pengeluaran:
Contoh: Ambil nilai sel baris dan lajur tertentu dari Jadual Dinamik
Anggaplah kita memerlukan baris ketiga jadual dan data sel keduanya. Lihat jadual di bawah-
Dalam jadual di atas, data dikemas kini secara berkala setelah beberapa jangka masa. Data yang anda cuba dapatkan akan berbeza dengan tangkapan skrin di atas. Walau bagaimanapun, kodnya tetap sama. Berikut adalah program sampel untuk mendapatkan 3 rd baris dan 2 nd data lajur.
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;import java.util.concurrent.TimeUnit;kelas awam RowandCell {main statik kekosongan awam (String [] args) melemparkan ParseException {Pemandu Web wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = ChromeDriver baru ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). timeout (). secara implisitWait (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("jadual"));// Untuk mencari baris ketiga jadualWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));String rowtext = tableRow.getText ();System.out.println ("Baris ketiga jadual: + baris teks);// untuk mendapatkan data lajur 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.tutup ();}}
Penjelasan Kod:
- Jadual terletak menggunakan sifat pencari "nama tag"
- Menggunakan "// * [@ id = \" leftcontainer \ "] / meja / tbody / tr [3]" mencari 3 XPath rd baris dan mendapat teks dengan menggunakan Gettext fungsi ()
- Menggunakan "* [@ id = \ //" leftcontainer \ "] / meja / tbody / tr / td [2] [3]" mencari sel-2 dalam 3 xpath rd baris dan mendapat teks dengan menggunakan Gettext () fungsi
Keluaran :
Contoh: Dapatkan Maksimum semua Nilai dalam Lajur Jadual Dinamik
Dalam contoh ini, kita akan mendapat maksimum semua nilai dalam lajur tertentu.
Rujuk jadual berikut -
Inilah kodnya
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;import java.text.NumberFormat;kelas awam MaxFromTable {main statik kekosongan awam (String [] args) melemparkan ParseException {Pemandu Web wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = ChromeDriver baru ();wd.get ("http://demo.guru99.com/test/web-table-element.php");Rentetan maks;berganda m = 0, r = 0;// Tidak. TiangSenaraikancol = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Jumlah Jumlah lajur adalah: + col.size ());// Tiada barisSenaraikan baris = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); System.out.println ("Jumlah Jumlah baris adalah: + rows.size ()); untuk (int i = 1; i r) {r = m; }} System.out.println ("Harga semasa maksimum ialah: + r); }}
Penjelasan Kod:
- Dengan menggunakan pemacu krom, kami mencari jadual web dan mendapat jumlah baris menggunakan XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
- Dengan menggunakan gelung, kami mengulangi jumlah baris dan mengambil nilai satu persatu. Untuk mendapatkan baris seterusnya kami menggunakan (i + 1) di XPath
- Kami membandingkan nilai lama dengan nilai baru dan nilai maksimum dicetak pada akhir gelung
Pengeluaran
Contoh: Dapatkan semua nilai Jadual Dinamik
Pertimbangkan jadual berikut http://demo.guru99.com/test/table.html
Bilangan lajur untuk setiap baris berbeza.
Di sini baris nombor 1, 2 dan 4 mempunyai 3 sel, dan baris nombor 3 mempunyai 2 sel, dan baris nombor 5 mempunyai 1 sel.
Kita perlu mendapatkan nilai semua sel
Inilah kodnya:
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;import org.openqa.selenium.chrome.ChromeDriver;kelas awam NofRowsColmns {main statik kekosongan awam (String [] args) melemparkan ParseException {Pemandu Web wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = ChromeDriver baru ();wd.manage (). timeout (). secara implisitWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Untuk mencari jadual.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Untuk mencari barisan jadual.Senarairows_table = mytable.findElements (By.tagName ("tr"));// Untuk mengira bilangan baris Dalam jadual.int rows_count = rows_table.size ();// Loop akan dilaksanakan hingga baris terakhir jadual.untuk (int baris = 0; baris Columns_row = rows_table.get (baris) .findElements (By.tagName ("td"));// Untuk mengira bilangan lajur (sel). Dalam baris tertentu.int columns_count = Columns_row.size ();System.out.println ("Jumlah sel Dalam Baris" + baris + "adalah" + columns_count);// Loop akan dijalankan hingga sel terakhir baris tertentu.untuk (int kolom = 0; lajur Penjelasan Kod:
- rows_count memberikan jumlah baris
- untuk setiap baris kita mendapat jumlah lajur menggunakan rows_table.get (baris) .findElements (By.tagName ("td"));
- Kami mengulangi setiap lajur dan setiap baris dan mengambil nilai.
Keluaran :
Ringkasan
- By.xpath () biasanya digunakan untuk mengakses elemen jadual.
- Jadual web statik di Selenium bersifat konsisten. iaitu bilangan baris tetap serta data Sel.
- Jadual web dinamik tidak konsisten iaitu tidak mempunyai bilangan baris dan sel data yang tetap.
- Dengan menggunakan pemacu web selenium, kita dapat mengendalikan jadual web dinamik dengan mudah.
- Selenium Webdriver membolehkan kita mengakses jadual web dinamik dengan X-path mereka
Artikel itu disumbangkan oleh Kanchan Kulkarni.