Cara Mengendalikan Jadual Web di Selenium WebDriver

Isi kandungan:

Anonim

Membaca Jadual Web HTML

Ada kalanya kita perlu mengakses elemen (biasanya teks) yang terdapat dalam jadual HTML. Walau bagaimanapun, jarang sekali pereka web memberikan atribut id atau nama kepada sel tertentu dalam jadual. Oleh itu, kami tidak dapat menggunakan kaedah biasa seperti "By.id ()", "By.name ()", atau "By.cssSelector ()". Dalam kes ini, pilihan yang paling boleh dipercayai adalah mengaksesnya menggunakan kaedah "By.xpath ()".

Dalam Tutorial ini, anda akan belajar-

  • Cara menulis XPath untuk Jadual
  • Mengakses Jadual Bersarang
  • Menggunakan Atribut sebagai Predikat
  • Jalan pintas: Gunakan Elemen Pemeriksaan untuk Mengakses Jadual di Selenium

Cara menulis XPath untuk Jadual

Pertimbangkan kod HTML di bawah.

Kami akan menggunakan XPath untuk mendapatkan teks dalaman sel yang mengandungi teks "sel keempat."

Langkah 1 - Tetapkan Elemen Ibu Bapa (jadual)

Pencari XPath dalam WebDriver selalu bermula dengan garis miring dua kali ganda "//" dan kemudian diikuti oleh elemen induk . Oleh kerana kita berurusan dengan jadual, elemen induk harus selalu menjadi tag

. Oleh itu, bahagian pertama pencari XPath kami harus dimulakan dengan "// table".

Langkah 2 - Tambahkan elemen kanak-kanak

Elemen yang berada di bawah

adalah sehingga kita dapat mengatakan bahawa adalah "anak" dari
. Dan juga,
adalah "induk" dari . Semua elemen anak di XPath diletakkan di sebelah kanan elemen induknya, dipisahkan dengan satu garis miring "/" seperti kod yang ditunjukkan di bawah.

Langkah 3 - Tambah Predikat

Elemen

mengandungi dua tag . Kita sekarang boleh mengatakan bahawa dua tag ini adalah "anak" dari . Oleh itu, kita boleh mengatakan bahawa adalah induk kedua elemen .

Perkara lain yang dapat kita simpulkan adalah bahawa dua elemen

adalah saudara kandung. Adik beradik merujuk kepada unsur anak yang mempunyai ibu bapa yang sama .

Untuk ke

dan bukan yang pertama. Sekiranya kita hanya menulis "// table / tbody / tr", maka kita akan mengakses tag pertama.

Jadi, bagaimana kita mengakses

kedua kemudian? Jawapan untuk ini adalah menggunakan Predicates .

Predicate adalah nombor atau atribut HTML yang disertakan dalam sepasang tanda kurung persegi "[]" yang membezakan elemen anak dari adik-beradiknya . Oleh kerana

yang perlu kita akses adalah yang kedua, kita akan menggunakan "[2]" sebagai predikat.

Sekiranya kita tidak menggunakan predikat, XPath akan mengakses saudara pertama. Oleh itu, kita dapat mengakses

pertama menggunakan salah satu kod XPath ini.

Langkah 4 - Tambahkan Elemen Anak yang Berjaya Menggunakan Predikat yang Sesuai

Elemen seterusnya yang perlu kita akses adalah

keempat, dan XPath kami harus seperti yang ditunjukkan di bawah.

Ingat bahawa apabila kita meletakkan kod XPath di Java, kita harus menggunakan garis miring karakter pelarian "\" untuk tanda petik berganda di kedua sisi "270" supaya argumen rentetan By.xpath () tidak akan dihentikan sebelum waktunya .

Kami kini bersedia untuk mengakses sel tersebut dengan menggunakan kod di bawah.

utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Pemacu WebDriver = FirefoxDriver baru ();driver.get (baseUrl);String innerText = driver.findElement (Oleh.xpath ("// jadual [@width = \" 270 \ "] / tbody / tr [4] / td")).getTeks ();System.out.println (innerText);driver.quit ();}

Jalan pintas: Gunakan Elemen Pemeriksaan untuk Mengakses Jadual di Selenium

Sekiranya nombor atau atribut elemen sangat sukar atau mustahil diperoleh, cara terpantas untuk menghasilkan kod XPath adalah dengan menggunakan Inspect Element.

Pertimbangkan contoh di bawah dari halaman utama Mercury Tours.

Langkah 1

Gunakan Firebug untuk mendapatkan kod XPath.

Langkah 2

Cari elemen induk "jadual" pertama dan padamkan semuanya di sebelah kiri daripadanya.

Langkah 3

Awal bahagian kod yang tinggal dengan garis miring berganda "//" dan salin ke kod WebDriver anda.

Kod WebDriver di bawah akan berjaya mengambil teks dalaman elemen yang sedang kita akses.

utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Pemacu WebDriver = FirefoxDriver baru ();driver.get (baseUrl);String innerText = driver.findElement (Oleh.xpath ("// table / tbody / tr / td [2]"+ "// meja / tbody / tr [4] / td /"+ "meja / tbody / tr / td [2] /"+ "meja / tbody / tr [2] / td [1] /"+ "jadual [2] / tbody / tr [3] / td [2] / font")).getTeks ();System.out.println (innerText);driver.quit ();}

Ringkasan

  • By.xpath () biasanya digunakan untuk mengakses elemen jadual.
  • Sekiranya elemen ditulis jauh di dalam kod HTML sehingga nombor yang akan digunakan untuk predikat sangat sukar ditentukan, kita boleh menggunakan atribut unik elemen itu.
  • Atribut digunakan sebagai predikat dengan awalannya dengan simbol @.
  • Gunakan Elemen Pemeriksaan untuk Mengakses Jadual di Selenium
kita ingin mengakses (satu dengan teks "sel keempat"), kita perlu mengakses yang kedua
kedua. Dengan menerapkan prinsip yang telah kita pelajari dari langkah 2 dan 3, kita akan menyelesaikan kod XPath kita seperti yang ditunjukkan di bawah.

Sekarang kita mempunyai pencari XPath yang betul, kita sudah dapat mengakses sel yang kita inginkan dan mendapatkan teks dalamannya dengan menggunakan kod di bawah. Ini mengandaikan bahawa anda telah menyimpan kod HTML di atas sebagai "newhtml.html" dalam C Drive anda.

utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Pemacu WebDriver = FirefoxDriver baru ();driver.get (baseUrl);String innerText = driver.findElement (Oleh.xpath ("// table / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}

Mengakses Jadual Bersarang

Prinsip yang sama yang dibincangkan di atas berlaku untuk jadual bersarang. Jadual bersarang adalah jadual yang terletak di dalam jadual lain . Contohnya ditunjukkan di bawah.

Untuk mengakses sel dengan teks "4-5-6" menggunakan konsep "// induk / anak" dan predikat dari bahagian sebelumnya, kita seharusnya dapat menghasilkan kod XPath di bawah.

Kod WebDriver di bawah seharusnya dapat mengambil teks dalaman sel yang sedang kita akses.

utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";Pemacu WebDriver = FirefoxDriver baru ();driver.get (baseUrl);String innerText = driver.findElement (Oleh.xpath ("// table / tbody / tr [2] / td [2] / table / tbody / tr / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}

Output di bawah mengesahkan bahawa jadual dalaman berjaya diakses.

Menggunakan Atribut sebagai Predikat

Sekiranya elemen ditulis jauh di dalam kod HTML sehingga nombor yang akan digunakan untuk predikat sangat sukar ditentukan, kita boleh menggunakan atribut unik elemen itu.

Dalam contoh di bawah, sel "New York to Chicago" terletak jauh ke dalam kod HTML beranda Mercury Tours.

Dalam kes ini, kita dapat menggunakan atribut unik tabel (lebar = "270") sebagai predikat. Atribut digunakan sebagai predikat dengan awalannya dengan simbol @ . Dalam contoh di atas, sel "New York to Chicago" terletak di

pertama