XPath Mengandungi, Mengikuti Saudara, Leluhur & Selenium DAN / ATAU

Isi kandungan:

Anonim

Sekiranya XPath sederhana tidak dapat mencari elemen web yang rumit untuk skrip ujian kami, kami perlu menggunakan fungsi dari perpustakaan XPath 1.0. Dengan gabungan fungsi ini, kita dapat membuat XPath yang lebih spesifik. Mari kita bincangkan 3 fungsi tersebut -

  1. Mengandungi
  2. Adik beradik
  3. Leluhur
  4. Dan ATAU
  5. Ibu bapa
  6. Bermula dengan
  7. Paksi XPath

Mari kaji secara terperinci -

Apa yang mengandungi () dalam Selenium?

mengandung () dalam Selenium adalah fungsi dalam ekspresi Xpath yang digunakan untuk mencari elemen web yang berisi teks tertentu. Kita dapat mengekstrak semua elemen yang sesuai dengan nilai teks yang diberikan menggunakan fungsi XPath mengandung () di seluruh laman web. Mengandungi dalam XPath mempunyai keupayaan untuk mencari elemen dengan teks separa.

Cth. Di sini kita mencari sauh. Mengandungi teks sebagai 'SAP M'.

"// h4 / a [mengandungi (teks (), 'SAP M')]"

CATATAN: Anda boleh melakukan latihan XPath berikut di http://demo.guru99.com/test/selenium-xpath.html ini

Apa itu Saudara di Selenium Webdriver?

A Adik-beradik dalam Selenium Webdriver adalah fungsi yang digunakan untuk mengambil elemen web yang merupakan adik-beradik kepada unsur induk. Sekiranya elemen induk diketahui maka elemen web dapat dijumpai atau dijumpai dengan mudah yang boleh menggunakan atribut saudara dari ungkapan Xpath dalam pemacu web selenium.

Adik beradik di XPath Contoh: Di sini berdasarkan elemen saudara dari 'a' kita menjumpai 'h4'

"// div [@ class = 'canvas- graph'] // a [@href = '/ accounting.html'] [i [@ class = 'icon-usd']] / following-saudara :: h4"

Leluhur : Untuk mencari elemen berdasarkan elemen induk kita boleh menggunakan atribut nenek moyang XPath.

Mari kita fahami 3 fungsi ini menggunakan contoh -

Langkah Ujian

Catatan: Sejak tarikh pembuatan tutorial, Laman Utama Guru99 telah dikemas kini, jadi gunakan laman demo sebagai ganti untuk menjalankan ujian

  1. Pergi ke http://demo.guru99.com/test/guru99home/
  2. Di bahagian 'Beberapa kursus kami yang paling popular', cari semua Elemen Web yang merupakan saudara dari WebElement yang teksnya adalah 'SELENIUM'
  3. Kita akan menemui elemen menggunakan teks XPath berisi, fungsi leluhur dan saudara.

MENGGUNAKAN Mengandungi dan XPath Sibling

import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;kelas awam SiblingAndParentInXpath {@ Ujianujian kekosongan awamSiblingAndParentInXpath () {Pemacu WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);driver = FirefoxDriver baru ();driver.manage (). timeout (). secara implisitWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Cari elemen di dalam 'Kursus popular' yang merupakan saudara kawalan 'SELENIUM', Di sini pertama kita akan menjumpai h2 yang teksnya adalah '' Beberapa kursus paling popular kami ', kemudian kita beralih ke elemen induknya yang merupakan' div ', di dalam div ini kita akan menemui pautan yang teksnya adalah' SELENIUM 'dan akhirnya kita akan menjumpai semua unsur saudara dari pautan ini (' SELENIUM ')Senaraikan  dateBox = driver.findElements (By.xpath ("// h2 [mengandungi (teks (), 'Beberapa kursus kami yang paling popular')] / ibu bapa :: div // div [// a [teks () = 'SELENIUM']] / saudara-saudara berikut :: div [@ class = 'rt-grid-2 rt-omega'] "));// Cetak semua elemen dari elemen yang dinamakan sebagai 'SELENIUM' dalam 'Kursus popular'untuk (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}pemandu.tutup ();}}

Keluaran akan seperti:

Leluhur di Selenium Webdriver

Leluhur dalam Selenium Webdriver adalah fungsi yang digunakan untuk mencari nenek moyang anggota tertentu pada lapisan yang ditentukan. Tahap nenek moyang yang akan dikembalikan atau tahap nenek moyang yang relatif dengan tahap anggota dapat dinyatakan dengan jelas. Ia mengembalikan sejumlah langkah hierarki dari nenek moyang, mencari nenek moyang yang ditentukan yang dikehendaki pengguna.

Sekarang anggap kita perlu Cari Semua elemen di bahagian 'Kursus popular' dengan bantuan nenek moyang jangkar yang teksnya adalah 'SELENIUM'

Berikut adalah pertanyaan xpath kami

"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega '] / following-sibling :: div"

Kod Lengkap

import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;kelas awam AncestorInXpath {@ Ujianujian kekosongan awamAncestorInXpath () {Pemacu WebDriver = FirefoxDriver baru ();driver.manage (). timeout (). secara implisitWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Cari Semua elemen di bahagian 'Kursus popular'// dengan bantuan nenek moyang jangkar yang teksnya adalah 'SELENIUM'Senaraikan  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / leluhur :: div [@ class = 'rt-grid-2 rt- omega '] / following-saudara :: div "));// Cetak semua elemen saudara yang dinamakan sebagai 'SELENIUM' dalam 'Kursus popular'untuk (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Output akan kelihatan seperti-

Menggunakan DAN dan ATAU

Dengan menggunakan AND dan ATAU anda boleh meletakkan 2 syarat dalam ekspresi XPath kami.

  • Sekiranya AND dan kedua-dua syarat itu mesti benar maka hanya ia yang akan menemukan unsurnya.
  • Sekiranya terdapat salah satu daripada 2 syarat, maka hanya elemen yang dijumpai.

Berikut adalah pertanyaan XPath kami

Xpath = // * [@ type = 'submit' ATAU @ name = 'btnReset']
Xpath = // input [@ type = 'submit' dan @ name = 'btnLogin']

Langkah Ujian:

  1. Pergi ke http://demo.guru99.com/v1/
  2. Pada bahagian tersebut, akan menggunakan laman demo di atas untuk mencari elemen dengan fungsi XPath yang berbeza.

Anda akan menemui unsur menggunakan paksi AND dan OR, induk, permulaan, dan XPath

DAN ATAU Contoh

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;kelas awam AND_OR {utama kekosongan statik awam (String [] args) {Pemacu WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");pemacu = ChromeDriver baru ();// Lancarkan aplikasidriver.get ("https://www.guru99.com/");// Cari elemen menggunakan ATAU di xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Cetak teks elemenSystem.out.println (w.getText ());// Cari elemen menggunakan AND di xpathx = driver.findElement (By.xpath ("// input [@ type = 'submit' dan @ name = 'btnLogin']"));// Cetak teks elemen yang dicariSystem.out.println (x.getText ());// Tutup penyemak imbasdriver.quit ();}}

Apa itu Ibu Bapa di Selenium?

Parent in Selenium adalah kaedah yang digunakan untuk mengambil simpul induk node semasa yang dipilih di halaman web. Ia sangat berguna dalam keadaan ketika anda memilih elemen dan perlu mendapatkan elemen induk menggunakan Xpath. Kaedah ini juga digunakan untuk mendapatkan ibu bapa ibu bapa.

Berikut adalah pertanyaan XPath kami

Xpath = // * [@ id = 'rt-feature'] // induk :: div

XPath menggunakan Ibu Bapa

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;Ibu bapa kelas awam {utama kekosongan statik awam (String [] args) {Pemacu WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");pemacu = ChromeDriver baru ();// Lancarkan aplikasidriver.get ("https://www.guru99.com/");// Cari elemen dengan menggunakan PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // induk :: div"));// Cetak teks elemen yang dicariSystem.out.println (w.getText ());// Tutup penyemak imbasdriver.quit ();}}

Bermula dengan

Dengan menggunakan fungsi Starts-with, anda dapat mencari elemen yang atributnya berubah secara dinamik pada penyegaran atau operasi lain seperti klik, hantar, dll.

Berikut adalah pertanyaan XPath kami

Xpath = // label [dimulakan dengan (@ id, 'message')]

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;kelas awam StartsWith {utama kekosongan statik awam (String [] args) {Pemacu WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");pemacu = ChromeDriver baru ();// Lancarkan aplikasidriver.get ("https://www.guru99.com/");// Cari elemen dengan menggunakan permulaanw = driver.findElement (By.xpath ("// label [dimulakan dengan (@ id, 'message')]"));// Cetak teks elemen yang dicariSystem.out.println (w.getText ());// Tutup penyemak imbasdriver.quit ();}}

Paksi Xpath

Dengan menggunakan paksi XPath, anda dapat menemui elemen dinamik dan sangat kompleks di laman web. Paksi XPath mengandungi beberapa kaedah untuk mencari unsur. Di sini, akan membincangkan beberapa kaedah.

berikut : Fungsi ini akan mengembalikan unsur langsung komponen tertentu.

Berikut adalah pertanyaan XPath kami

Xpath = // * [@ type = 'text'] // berikut :: input

XPath menggunakan berikut

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;kelas awam Mengikuti {utama kekosongan statik awam (String [] args) {Pemacu WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");pemacu = ChromeDriver baru ();// Lancarkan aplikasidriver.get ("https://www.guru99.com/");// Cari elemen dengan menggunakan kaedah Mengikutiw = driver.findElement (By.xpath ("// * [@ type = 'text'] // berikut :: input"));// Cetak teks elemen yang dicariSystem.out.println (w.getText ());// Tutup penyemak imbasdriver.quit ();}}

Preding: Fungsi ini akan mengembalikan elemen sebelumnya dari elemen tertentu.

Berikut adalah pertanyaan XPath kami

Xpath = // * [@ type = 'submit'] // sebelum :: input

XPath menggunakan Preceding

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;kelas awam Terdahulu {utama kekosongan statik awam (String [] args) {Pemacu WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");pemacu = ChromeDriver baru ();// Lancarkan aplikasidriver.get ("https://www.guru99.com/");// Cari elemen dengan menggunakan kaedah sebelumnyaw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // sebelumnya :: input"));// Cetak elemen yang dicariSystem.out.println (w.getText ());// Tutup penyemak imbasdriver.quit ();}}

d) Keturunan: Fungsi ini akan mengembalikan unsur keturunan unsur tertentu.

Berikut adalah pertanyaan XPath kami

Xpath = // * [@ id = 'rt-feature'] // keturunan :: a

XPath menggunakan Descendant

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;keturunan kelas awam {utama kekosongan statik awam (String [] args) {Pemacu WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");pemacu = ChromeDriver baru ();// Lancarkan aplikasidriver.get ("https://www.guru99.com/");// Cari elemen dengan menggunakan kaedah keturunanw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // keturunan :: a"));// Cetak elemen yang dicariSystem.out.println (w.getText ());// Tutup penyemak imbasdriver.quit ();}}

Ringkasan

  • Terdapat beberapa situasi ketika XPath biasa tidak dapat digunakan untuk mencari elemen. Dalam keadaan seperti itu, kita memerlukan fungsi yang berbeza dari pertanyaan xpath.
  • Terdapat beberapa fungsi penting XPath seperti XPath, ibu bapa, nenek moyang, saudara-saudara, dll.
  • Dengan bantuan fungsi ini, anda dapat membuat ekspresi XPath yang kompleks.