XPath Berisi: Teks, Mengikuti Saudara Kandung & Leluhur di Selenium
Apa Isi XPath?
XPath berisi adalah fungsi dalam ekspresi Xpath yang digunakan untuk mencari elemen web yang berisi teks tertentu. Kita dapat mengekstrak semua elemen yang cocok dengan nilai teks yang diberikan menggunakan fungsi XPath berisi() di seluruh halaman web. Berisi di XPath memiliki kemampuan untuk menemukan elemen dengan sebagian teks.
Contoh – berisi teks
Di sini kita mencari jangkar. berisi teks sebagai 'SAP M'.
"//h4/a[contains(text(),'SAP M')]"
CATATAN: Anda dapat mempraktikkan latihan XPath berikut di sini https://demo.guru99.com/test/selenium-xpath.html
Jika sederhana XPath tidak dapat menemukan elemen web yang rumit untuk skrip pengujian kami, kami perlu menggunakan fungsi dari perpustakaan XPath 1.0. Dengan kombinasi fungsi-fungsi ini, kita dapat membuat XPath yang lebih spesifik.
Mengikuti Saudara di XPath
A Saudara masuk Selenium Driver web adalah fungsi yang digunakan untuk mengambil elemen web yang merupakan saudara dari elemen induk. Jika elemen induk diketahui maka elemen web dapat dengan mudah ditemukan atau ditemukan yang dapat menggunakan atribut saudara dari ekspresi Xpath di selenium webdriver.
Contoh Saudara di XPath:
Di sini berdasarkan elemen saudara 'a' kita menemukan 'h4'
"//div[@class='canvas- graph']//a[@href='/accounting.html'][i[@class='icon-usd']]/following-sibling::h4"
Leluhur: Untuk menemukan elemen berdasarkan elemen induk kita dapat menggunakan atribut leluhur dari XPath.
Mari kita pahami 3 fungsi ini menggunakan contoh –
Langkah Tes:
Catatan: Sejak tanggal pembuatan tutorial, Beranda Guru99 telah diperbarui jadi gunakan situs demo untuk menjalankan tes
- Pergi ke https://demo.guru99.com/test/guru99home/
- Di bagian 'Beberapa kursus kami yang paling populer', cari semua Elemen Web yang merupakan saudara dari WebElement yang teksnya adalah 'SELENIUM'
- Kita akan menemukan elemen menggunakan teks XPath yang berisi fungsi leluhur dan saudara.
PENGGUNAAN Berisi Teks dan Saudara XPath
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; public class SiblingAndParentInXpath { @Test public void testSiblingAndParentInXpath(){ WebDriver driver; String driverPath = "C:\\geckodriver.exe"; System.setProperty("webdriver.gecko.driver", driverPath); driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get("https://demo.guru99.com/test/guru99home/"); //Search element inside 'Popular course' which are sibling of control 'SELENIUM' ,Here first we will find a h2 whose text is ''A few of our most popular courses' ,then we move to its parent element which is a 'div' , inside this div we will find a link whose text is 'SELENIUM' then at last we will find all of the sibling elements of this link('SELENIUM') List <WebElement> dateBox = driver.findElements(By.xpath("//h2[contains(text(),'A few of our most popular courses')]/parent::div//div[//a[text()='SELENIUM']]/following-sibling::div[@class='rt-grid-2 rt-omega']")); //Print all the which are sibling of the the element named as 'SELENIUM' in 'Popular course' for (WebElement webElement : dateBox) { System.out.println(webElement.getText()); } driver.close(); } }
Outputnya akan seperti:
Leluhur XPath di Selenium
Leluhur XPath di Selenium adalah fungsi yang digunakan untuk menemukan leluhur dari anggota tertentu pada lapisan yang ditentukan. Tingkat leluhur yang akan dikembalikan atau tingkat leluhur relatif terhadap tingkat anggota dapat ditentukan secara eksplisit. Fungsi ini mengembalikan sejumlah langkah hierarkis dari leluhur, menemukan leluhur yang ditentukan yang diinginkan pengguna.
Sekarang misalkan kita perlu Mencari Semua elemen di bagian 'Kursus populer' dengan bantuan leluhur jangkar yang teksnya adalah 'SELENIUM'
Di sini permintaan xpath kita akan seperti itu
"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega']/following-sibling::div"
Kode 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; public class AncestorInXpath{ @Test public void testAncestorInXpath(){ WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get("https://demo.guru99.com/test/guru99home/"); //Search All elements in 'Popular course' section //with the help of ancestor of the anchor whose text is 'SELENIUM' List <WebElement> dateBox = driver.findElements(By.xpath("//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega']/following-sibling::div")); //Print all the which are sibling of the element named as 'SELENIUM' in 'Popular course' for (WebElement webElement : dateBox) { System.out.println(webElement.getText()); } driver.quit(); } }
Outputnya akan terlihat seperti-
Menggunakan DAN dan ATAU
Dengan menggunakan AND dan OR Anda dapat memasukkan 2 kondisi dalam ekspresi XPath kami.
- Dalam kasus AND kedua kondisi harus benar maka hanya ia yang menemukan elemennya.
- Dalam kasus OR salah satu dari 2 kondisi tersebut harus benar maka hanya ia yang menemukan elemennya.
Di sini kueri XPath kita akan seperti itu
Xpath=//*[@type='submit' OR @name='btnReset']
Xpath=//input[@type='submit' and @name='btnLogin']
Langkah Tes:
- Pergi ke https://demo.guru99.com/v1/
- Pada bagian ini, akan menggunakan situs demo di atas untuk mencari elemen dengan fungsi XPath yang berbeda.
Anda akan menemukan elemen menggunakan sumbu AND dan OR, induk, dimulai dengan, 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; public class AND_OR { public static void main(String[] args) { WebDriver driver; WebElement w,x; System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe"); driver= new ChromeDriver(); // Launch the application driver.get("https://www.guru99.com/"); //Search element using OR in the xpath w=driver.findElement(By.xpath("//*[@type='submit' OR @name='btnReset']")); //Print the text of the element System.out.println(w.getText()); //Search element using AND in the xpath x=driver.findElement(By.xpath("//input[@type='submit' and @name='btnLogin']")); //Print the text of the searched element System.out.println(x.getText()); //Close the browser driver.quit(); } }
XPath Induk di Selenium
Orang tua di Selenium adalah metode yang digunakan untuk mengambil node induk dari node saat ini yang dipilih di halaman web. Ini sangat berguna ketika Anda memilih elemen dan perlu mendapatkan elemen induk menggunakan Xpath. Cara ini juga digunakan untuk mendapatkan induk orang tua.
Di sini kueri XPath kita akan seperti itu
Xpath=//*[@id='rt-feature']//parent::div
XPath menggunakan Induk
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Parent { public static void main(String[] args) { WebDriver driver; WebElement w; System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe"); driver= new ChromeDriver(); // Launch the application driver.get("https://www.guru99.com/"); //Search the element by using PARENT w=driver.findElement(By.xpath("//*[@id='rt-feature']//parent::div")); //Print the text of the searched element System.out.println(w.getText()); //Close the browser driver.quit(); } }
Dimulai dengan
Menggunakan fungsi Mulai dengan, Anda dapat menemukan elemen yang atributnya berubah secara dinamis saat penyegaran atau operasi lain seperti klik, kirim, dll.
Di sini kueri XPath kita akan seperti itu
Xpath=//label[starts-with(@id,'message')]
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class StartsWith { public static void main(String[] args) { WebDriver driver; WebElement w; System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe"); driver= new ChromeDriver(); // Launch the application driver.get("https://www.guru99.com/"); //Search the element by using starts-with w=driver.findElement(By.xpath("//label[starts-with(@id,'message')]")); //Print the text of the searched element System.out.println(w.getText()); //Close the browser driver.quit(); } }
sumbu Xpath
Dengan menggunakan sumbu XPath, Anda dapat menemukan elemen yang dinamis dan sangat kompleks pada halaman web. Sumbu XPath berisi beberapa metode untuk menemukan elemen. Berikut ini akan dibahas beberapa metode.
berikut: Fungsi ini akan mengembalikan elemen langsung dari komponen tertentu.
Di sini kueri XPath kita akan seperti itu
Xpath=//*[@type='text']//following::input
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Following { public static void main(String[] args) { WebDriver driver; WebElement w; System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe"); driver= new ChromeDriver(); // Launch the application driver.get("https://www.guru99.com/"); //Search the element by using Following method w=driver.findElement(By.xpath("//*[@type='text']//following::input")); //Print the text of the searched element System.out.println(w.getText()); //Close the browser driver.quit(); } }
Mendahului: Fungsi ini akan mengembalikan elemen sebelumnya dari elemen tertentu.
Di sini kueri XPath kita akan seperti itu
Xpath= //*[@type='submit']//preceding::input
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Preceding { public static void main(String[] args) { WebDriver driver; WebElement w; System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe"); driver= new ChromeDriver(); // Launch the application driver.get("https://www.guru99.com/"); //Search the element by using preceding method w=driver.findElement(By.xpath("//*[@type='submit']//preceding::input")); //Print the searched element System.out.println(w.getText()); //Close the browser driver.quit(); } }
d) Keturunan: Fungsi ini akan mengembalikan elemen turunan dari elemen tertentu.
Di sini kueri XPath kita akan seperti itu
Xpath= //*[@id='rt-feature']//descendant::a
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Descendant { public static void main(String[] args) { WebDriver driver; WebElement w; System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe"); driver= new ChromeDriver(); // Launch the application driver.get("https://www.guru99.com/"); //Search the element by using descendant method w=driver.findElement(By.xpath("//*[@id='rt-feature']//descendant::a")); //Print the searched element System.out.println(w.getText()); //Close the browser driver.quit(); } }
Ringkasan
- Ada beberapa situasi ketika XPath biasa tidak dapat digunakan untuk menemukan elemen. Dalam situasi seperti ini, kita memerlukan fungsi yang berbeda dari query xpath.
- Ada beberapa fungsi XPath yang penting seperti XPath berisi, induk, leluhur, saudara kandung berikutnya, dan lain-lain.
- Dengan bantuan fungsi-fungsi ini, Anda dapat membuat ekspresi XPath yang kompleks. Jika Anda perlu memahami cara menggunakan contains dalam XPath secara khusus, fungsi contains dalam selenium menyediakan cara mudah untuk mencari elemen web berdasarkan kecocokan teks parsial.