Cara Menangani Tabel Web di Selenium webdriver

Apa itu Tabel Web Selenium?

A Tabel Web in Selenium adalah WebElement yang digunakan untuk representasi tabel data atau informasi. Data atau informasi yang ditampilkan dapat bersifat statis atau dinamis. Tabel web dan elemennya dapat diakses menggunakan fungsi dan pencari WebElement di Selenium. Contoh umum tabel web adalah spesifikasi produk yang ditampilkan pada platform eCommerce.

Membaca Tabel Web HTML

Ada kalanya kita perlu mengakses elemen (biasanya teks) yang ada di dalam tabel HTML. Namun, sangat jarang bagi seorang desainer web untuk memberikan atribut id atau nama ke sel tertentu dalam tabel. Oleh karena itu, kita tidak dapat menggunakan metode biasa seperti “By.id()”, “By.name()”, atau “By.cssSelector()”. Dalam hal ini, opsi yang paling dapat diandalkan adalah mengaksesnya menggunakan metode “By.xpath()”.

Cara Menangani Tabel Web di Selenium

Perhatikan kode HTML di bawah ini untuk menangani tabel web Selenium.

Cara menulis XPath untuk Tabel di Selenium

Kami akan gunakan XPath untuk mendapatkan teks bagian dalam sel yang berisi teks "sel keempat".

Cara menulis XPath untuk Tabel di Selenium

Langkah 1 – Tetapkan Elemen Induk (tabel)

Pencari XPath di WebDriver selalu dimulai dengan garis miring ganda “//” dan kemudian diikuti oleh elemen induk. Karena kita berurusan dengan tabel web Selenium, elemen induk harus selalu menjadi menandai. Bagian pertama dari kami Selenium Oleh karena itu, pencari tabel XPath harus dimulai dengan “//tabel”.

Selenium Contoh Tabel Web

Langkah 2 – Tambahkan elemen anak

Elemen tepat di bawah adalah jadi kita bisa mengatakan itu adalah "anak" dari . Dan juga, adalah "orang tua" dari . Semua elemen anak di XPath ditempatkan di sebelah kanan elemen induknya, dipisahkan dengan satu garis miring “/” seperti kode di bawah ini.

Selenium Contoh Tabel Web

Langkah 3 – Tambahkan Predikat

Itu elemen berisi dua tag. Sekarang kita dapat mengatakan keduanya tag adalah "anak-anak" dari . Oleh karena itu, kita dapat mengatakan demikian adalah orang tua dari keduanya elemen.

Hal lain yang bisa kita simpulkan adalah keduanya elemen adalah saudara kandung. Saudara merujuk pada elemen anak yang memiliki orang tua yang sama.

Untuk sampai ke kita ingin mengaksesnya (yang memiliki teks “sel keempat”), kita harus mengaksesnya terlebih dahulu kedua dan bukan yang pertama. Jika kita cukup menulis “//table/tbody/tr”, maka kita akan mengakses yang pertama menandai.

Jadi, bagaimana kita mengakses yang kedua Kemudian? Jawabannya adalah dengan menggunakan Predikat.

Predikat adalah angka atau atribut HTML yang diapit oleh sepasang tanda kurung siku “[ ]” yang membedakan elemen anak dari saudaranya. Sejak itu yang perlu kita akses adalah yang kedua, kita akan menggunakan “[2]” sebagai predikatnya.

Selenium Contoh Tabel Web

Jika kita tidak menggunakan predikat apa pun, XPath akan mengakses saudara pertama. Oleh karena itu, kita dapat mengakses yang pertama menggunakan salah satu kode XPath ini.

Selenium Tabel Web menggunakan Xpath

Langkah 4 – Tambahkan Elemen Anak Berhasil Menggunakan Predikat yang Sesuai

Elemen berikutnya yang perlu kita akses adalah yang kedua . Menerapkan prinsip-prinsip yang telah kita pelajari dari langkah 2 dan 3, kita akan menyelesaikan kode XPath kita menjadi seperti yang ditunjukkan di bawah ini.

Tabel Web di Selenium menggunakan Xpath

Sekarang kita memiliki pencari XPath yang benar, kita sudah dapat mengakses sel yang kita inginkan dan mendapatkan teks dalamnya menggunakan kode di bawah ini. Diasumsikan bahwa Anda telah menyimpan kode HTML di atas sebagai “newhtml.html” di dalam Drive C Anda.

Tabel Web di Selenium menggunakan Xpath

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(
		By.xpath("//table/tbody/tr[2]/td[2]")).getText(); 	
        System.out.println(innerText); 
	driver.quit();
	}
}

Tabel Web di Selenium menggunakan Xpath

Mengakses Tabel Bersarang

Prinsip yang sama yang dibahas di atas juga berlaku untuk tabel bersarang. Tabel bersarang adalah tabel yang terletak di dalam tabel lain. Contohnya ditunjukkan di bawah ini.

Cara Mengakses Tabel Bersarang di Selenium

Untuk mengakses sel dengan teks “4-5-6” menggunakan konsep “//parent/child” dan predikat dari bagian sebelumnya, kita harus dapat menemukan kode XPath di bawah ini.

Cara Mengakses Tabel Bersarang di Selenium


Kode WebDriver di bawah ini seharusnya bisa mengambil teks bagian dalam sel yang kita akses.

Mengakses Tabel Bersarang di Selenium

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(
		By.xpath("//table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]")).getText(); 		
        System.out.println(innerText); 
	driver.quit();
}

Output di bawah ini mengonfirmasi bahwa tabel bagian dalam berhasil diakses.

Mengakses Tabel Bersarang di Selenium

Menggunakan Atribut sebagai Predikat

Jika elemen ditulis jauh di dalam kode HTML sehingga angka yang digunakan untuk predikat sangat sulit ditentukan, kita dapat menggunakan atribut unik elemen tersebut.

Pada contoh di bawah, sel “New York ke Chicago” terletak jauh di dalam Mercury Kode HTML beranda tur.

Selenium Contoh tabel web menggunakan Atribut sebagai Predikat

Selenium Contoh tabel web menggunakan Atribut sebagai Predikat

Dalam hal ini, kita dapat menggunakan atribut unik tabel (width=”270″) sebagai predikat. Atribut digunakan sebagai predikat dengan mengawalinya dengan simbol @. Pada contoh di atas, sel “New York ke Chicago” terletak di sel pertama dari yang keempat , dan XPath kita seharusnya seperti yang ditunjukkan di bawah ini.

Selenium Contoh tabel web dengan Atribut sebagai Predikat

Ingatlah ketika kita memasukkan kode XPath Java, kita harus menggunakan karakter escape garis miring terbalik “\” untuk tanda kutip ganda di kedua sisi “270” sehingga argumen string By.xpath() tidak akan dihentikan sebelum waktunya.

Selenium Contoh tabel web dengan Atribut sebagai Predikat

Kami sekarang siap untuk mengakses sel itu menggunakan kode di bawah ini.

Selenium Contoh tabel web dengan Atribut sebagai Predikat

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/newtours/";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(By
		.xpath("//table[@width=\"270\"]/tbody/tr[4]/td"))
		.getText(); 		
	System.out.println(innerText); 
	driver.quit();
}

Selenium Contoh tabel web dengan Atribut sebagai Predikat

Pintasan: Gunakan Elemen Inspeksi untuk Mengakses Tabel di Selenium

Jika nomor atau atribut suatu elemen sangat sulit atau tidak mungkin diperoleh, cara tercepat untuk menghasilkan kode XPath adalah menggunakan Inspect Element.

Perhatikan contoh di bawah ini dari Mercury Beranda tur.

Selenium Contoh tabel web dengan Atribut sebagai Predikat

Langkah 1

Gunakan Firebug untuk mendapatkan kode XPath.

Selenium Contoh tabel web dengan Atribut sebagai Predikat

Langkah 2

Cari elemen induk “tabel” pertama dan hapus semua yang ada di sebelah kirinya.

Selenium Contoh tabel web dengan Atribut sebagai Predikat

Langkah 3

Tambahkan awalan garis miring ganda “//” pada bagian kode yang tersisa dan salin ke kode WebDriver Anda.

Selenium Contoh tabel web dengan Atribut

Kode WebDriver di bawah ini akan berhasil mengambil teks bagian dalam dari elemen yang kita akses.

Selenium Contoh tabel web dengan Atribut

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/newtours/";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(By
		.xpath("//table/tbody/tr/td[2]"
		+ "//table/tbody/tr[4]/td/"
		+ "table/tbody/tr/td[2]/"
		+ "table/tbody/tr[2]/td[1]/"
		+ "table[2]/tbody/tr[3]/td[2]/font"))
		.getText(); 		
	System.out.println(innerText); 
	driver.quit();
}

Kesimpulan

  • By.xpath() biasanya digunakan untuk mengakses elemen WebTable di Selenium.
  • Jika elemen ditulis jauh di dalam kode HTML sehingga angka yang digunakan untuk predikat sangat sulit ditentukan, kita dapat menggunakan atribut unik elemen tersebut untuk Selenium dapatkan elemen tabel.
  • Atribut digunakan sebagai predikat dengan mengawalinya dengan simbol @.
  • Gunakan Elemen Inspeksi untuk Mengakses WebTable di Selenium