XPath Berisi: Teks, Mengikuti Saudara Kandung & Leluhur di Selenium

๐Ÿš€ Ringkasan Cerdas

XPath Berisi, Saudara Kandung, dan Leluhur di Selenium Memungkinkan identifikasi elemen web yang presisi menggunakan hubungan terstruktur dan pola teks. Fungsi XPath ini meningkatkan keandalan, fleksibilitas, dan kemudahan pemeliharaan otomatisasi dalam hierarki DOM yang kompleks.

  • penggunaan contains() untuk menemukan elemen dinamis dengan teks parsial, meningkatkan ketahanan terhadap variasi teks.
  • Mendaftar following-sibling ke ancestor untuk menelusuri hierarki elemen secara efisien dan extracsimpul terkait t.
  • Gabungkan fungsi dengan operator logika (AND, OR) untuk penargetan elemen yang akurat dan tepat.
  • Memanfaatkan sumbu XPath (sebelumnya, keturunan) untuk menavigasi pohon DOM yang kompleks secara sistematis.
  • Integrasikan ekspresi berikut ke dalam Selenium skrip untuk otomatisasi pengujian web yang dapat dipelihara, dinamis, dan tangguh.

XPath Berisi

Apa Isi XPath?

XPath berisi adalah fungsi dalam ekspresi XPath, yang digunakan untuk mencari elemen web yang berisi teks tertentu. Kita dapat mengeksploitasinya dengan cara berikut:tracFungsi `contains()` pada XPath akan menampilkan semua elemen yang cocok dengan nilai teks yang diberikan di seluruh halaman web. Fungsi `contains` dalam XPath memiliki kemampuan untuk menemukan elemen dengan teks yang tidak lengkap.

Contoh โ€“ berisi teks

Di sini kita mencari jangkar. berisi teks sebagai 'SAP M'.

"//h4/a[contains(text(),'SAP M')]"

XPath Berisi

CATATAN: Anda dapat mempraktikkan latihan XPath berikut di sini https://demo.guru99.com/test/selenium-xpath.html

Jika sederhana XPath Jika tidak dapat menemukan elemen web yang rumit untuk skrip pengujian kami, kami perlu menggunakan fungsi dari pustaka XPath 1.0. Dengan menggabungkan fungsi-fungsi ini, kami dapat membuat XPath yang lebih spesifik.

๐Ÿ‘‰ Daftar Live Gratis Selenium Proyek Pengujian

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 tersebut dapat dengan mudah ditemukan atau ditemukan, yang dapat menggunakan atribut saudara dari ekspresi XPath di Selenium Pengemudi Web.

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"

Mengikuti Saudara di XPath

Leluhur: Untuk menemukan elemen berdasarkan elemen induk, kita dapat menggunakan atribut leluhur XPath.

Mengikuti Saudara di XPath

Mari kita pahami 3 fungsi ini menggunakan contoh โ€“

Langkah Tes:

Catatan: Sejak tanggal pembuatan tutorial ini, Halaman Utama dari GuruVersi 99 telah diperbarui, jadi gunakan situs demo untuk menjalankan pengujian.

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

Mengikuti Saudara di XPath

PENGGUNAAN Berisi Teks dan Saudara XPath

import java.time.Duration;
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 org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.Test;

// If you prefer WebDriverManager (optional):
// import io.github.bonigarcia.wdm.WebDriverManager;

public class SiblingAndParentInXpath_Chrome {
    @Test
    public void testSiblingAndParentInXpath() {

        // === Option A: Use local ChromeDriver binary path ===
        // Update this path to your chromedriver location:
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");

        // === Option B: Use WebDriverManager (uncomment next line and remove Option A lines) ===
        // WebDriverManager.chromedriver().setup();

        ChromeOptions options = new ChromeOptions();
        // Add any flags you need, e.g. headless:
        // options.addArguments("--headless=new");

        WebDriver driver = new ChromeDriver(options);
        try {

            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
            driver.manage().window().maximize();
            driver.get("https://demo.guru99.com/test/guru99home/");

            // Find all siblings (divs) next to the 'SELENIUM' tile within
            // the "A few of our most popular courses" section.
            // Steps encoded in XPath:
            // 1) Locate the H2 that contains the section title
            // 2) Move to its parent DIV
            // 3) Inside it, locate the link with text 'SELENIUM'
            // 4) From the SELENIUM tile's parent DIV, get following sibling tiles

            List<WebElement> dateBox = driver.findElements(By.xpath(
                "//h2[contains(., 'A few of our most popular courses')]/parent::div" +
                "//a[normalize-space(.)='SELENIUM']/parent::div" +
                "/following-sibling::div[contains(@class,'rt-grid-2')]"
            ));

            // Print the text of each sibling element
            for (WebElement el : dateBox) {
                System.out.println(el.getText());
            }

        } finally {
            driver.quit();
        }
    }
}

Outputnya akan seperti:

PENGGUNAAN Berisi Teks dan Saudara XPath

Leluhur XPath di Selenium

Leluhur XPath di Selenium adalah fungsi yang digunakan untuk menemukan leluhur elemen tertentu pada lapisan yang ditentukan. Tingkat leluhur yang akan dikembalikan atau tingkat leluhur relatif terhadap tingkat anggota dapat ditentukan secara eksplisit. Fungsi ini mengembalikan jumlah langkah hierarkis dari leluhur, menemukan leluhur 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"

Menyelesaikan Code

import java.time.Duration;
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 org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.Test;

public class AncestorInXpath_Chrome {

@Test

    public void testAncestorInXpath() {

        // Set path to your ChromeDriver executable
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");

        ChromeOptions options = new ChromeOptions();
        WebDriver driver = new ChromeDriver(options);

        try {

            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
            driver.manage().window().maximize();
            driver.get("https://demo.guru99.com/test/guru99home/");

            // Search all elements in 'Popular course' section 
            // using the ancestor of the 'SELENIUM' link

            List <WebElement> dateBox = driver.findElements(
                By.xpath("//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega']/following-sibling::div")
            );

            // Print all sibling elements of the 'SELENIUM' tile

            for (WebElement element : dateBox) {
                System.out.println(element.getText());
            }

        } finally {
            driver.quit();
        }
    }
}

Outputnya akan terlihat seperti-

Menyelesaikan Code

Menggunakan DAN dan ATAU

Dengan menggunakan AND dan OR, Anda dapat menempatkan 2 kondisi dalam ekspresi XPath kami.

  • Dalam kasus AND, kedua kondisi harus benar, barulah elemen tersebut ditemukan.
  • Dalam kasus OR, salah satu dari 2 kondisi tersebut harus benar, barulah elemen tersebut dapat ditemukan.

Di sini, kueri XPath kita akan seperti ini

Xpath=//*[@type='submit' OR @name='btnReset']

Xpath=//input[@type='submit' and @name='btnLogin']

Menggunakan DAN dan ATAU

Langkah Tes:

  1. Pergi ke https://demo.guru99.com/v1/
  2. Di bagian ini, kita 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 simpul induk dari simpul saat ini yang dipilih di halaman web. Metode ini sangat berguna dalam situasi di mana Anda memilih suatu elemen dan perlu mendapatkan elemen induknya menggunakan XPath. Metode ini juga digunakan untuk mendapatkan induk dari simpul induk.

Di sini, kueri XPath kita akan seperti ini

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

XPath Induk di Selenium

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

Dengan menggunakan fungsi Starts-with, 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')]

Dimulai dengan

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

XPath menggunakan Following
XPath menggunakan berikut ini
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

XPath menggunakan Sebelumnya

XPath menggunakan Sebelumnya
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

XPath menggunakan Keturunan

XPath menggunakan Keturunan
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();
	}
}

Pertanyaan Umum Demo Slot

Dalam XPath, /* memilih semua elemen tingkat akar dari dokumen XML atau HTML. Artinya, "pilih elemen apa pun langsung di bawah simpul akar." Misalnya, dalam dokumen HTML, /* akan cocok dengan karena ini adalah elemen tingkat atas di bawah root.

Fungsi berisi() di XPath membantu menemukan elemen yang atribut atau teksnya sebagian cocok dengan nilai tertentu. Fungsi ini sangat berguna ketika string yang tepat tidak dapat diprediksi atau dinamis. Misalnya, //div[contains(@class,'menu')] cocok dengan apa pun yang kelasnya mencakup kata โ€œmenuโ€.

Untuk menemukan elemen berdasarkan kecocokan parsial dalam atribut kelasnya, gunakan fungsi berisi(). Misalnya, //button[contains(@class,'submit')] menargetkan semua yang memiliki nama kelas yang menyertakan "submit", seperti "submit-btn" atau "form-submit". Ini adalah cara yang fleksibel untuk menangani nama kelas yang dinamis.

Ringkaslah postingan ini dengan: