XPath enthält: Text, folgende Geschwister und Vorfahren in Selenium

🚀 Intelligente Zusammenfassung

XPath enthält, Geschwister und Vorfahren in Selenium Sie ermöglichen die präzise Identifizierung von Webelementen mithilfe strukturierter Beziehungen und Textmuster. Diese XPath-Funktionen verbessern die Zuverlässigkeit, Flexibilität und Wartbarkeit der Automatisierung in komplexen DOM-Hierarchien.

  • Arbeiten jederzeit weiterbearbeiten können. Jede Präsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, contains() um dynamische Elemente mit Teiltext zu lokalisieren und so die Robustheit gegenüber Textvariationen zu verbessern.
  • Tragen Sie following-sibling und ancestor um Elementhierarchien effizient zu durchlaufen und extract zugehörige Knoten.
  • Kombinieren Sie Funktionen mit logischen Operatoren (UND, ODER) für eine präzise und genaue Elementansprache.
  • Nutzen Sie XPath-Achsen (vorhergehend, nachkommend), um komplexe DOM-Bäume systematisch zu navigieren.
  • Integrieren Sie diese Ausdrücke in Selenium Skripte für wartungsfreundliche, dynamische und robuste Webtestautomatisierung.

XPath enthält

Was enthält XPath?

XPath enthält ist eine Funktion innerhalb eines XPath-Ausdrucks, die verwendet wird, um nach Webelementen zu suchen, die einen bestimmten Text enthalten. Wir können extracAlle Elemente auf der Webseite, die dem angegebenen Textwert entsprechen, werden mithilfe der XPath-Funktion `contains()` gefunden. Die Funktion `contains()` in XPath ermöglicht es, Elemente mit einem Teiltext zu finden.

Beispiel – enthält Text

Hier suchen wir nach einem Anker, der den Text ' enthält.SAP M'.

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

XPath enthält

HINWEIS: Sie können die folgende XPath-Übung auf diesem https://demo.guru99.com/test/selenium-xpath.html

Wenn ein einfaches XPath Da unser Testskript ein komplexes Web-Element nicht finden kann, müssen wir die Funktionen der XPath 1.0-Bibliothek verwenden. Durch die Kombination dieser Funktionen können wir einen spezifischeren XPath-Ausdruck erstellen.

👉 Kostenlos anmelden für Live Selenium Testprojekt

Geschwistern in XPath folgen

A Geschwister rein Selenium Webtreiber ist eine Funktion, die verwendet wird, um ein Webelement abzurufen, das ein Geschwisterelement des Elternelements ist. Wenn das Elternelement bekannt ist, kann das Webelement leicht gefunden werden, indem das Geschwisterattribut des XPath-Ausdrucks verwendet wird. Selenium WebDriver.

Geschwister in XPath-Beispiel:
Hier finden wir auf der Grundlage des Geschwisterelements von 'a' den Wert 'h4'.

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

Geschwistern in XPath folgen

VorfahrUm ein Element anhand des übergeordneten Elements zu finden, können wir das ancestor-Attribut von XPath verwenden.

Geschwistern in XPath folgen

Lassen Sie uns diese 3 Funktionen anhand eines Beispiels verstehen –

Testschritte:

Hinweis: Seit dem Erstellungsdatum des Tutorials ist die Homepage von GuruVersion 99 wurde aktualisiert, verwenden Sie daher bitte stattdessen die Demo-Website, um die Tests auszuführen.

  1. Zurück Nach https://demo.guru99.com/test/guru99home/
  2. Suchen Sie im Abschnitt „Einige unserer beliebtesten Kurse“ nach allen Web-Elementen, die Geschwisterelemente eines Web-Elements sind, dessen Text „SELENIUM“ lautet.
  3. Wir werden Elemente mithilfe der XPath-Funktionen text contains, ancestor und sibling finden.

Geschwistern in XPath folgen

USING enthält Text und XPath-Geschwister

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

Die Ausgabe wird wie folgt aussehen:

USING enthält Text und XPath-Geschwister

XPath-Vorfahr in Selenium

XPath-Vorfahr in Selenium Diese Funktion dient dazu, den Vorfahren eines bestimmten Elements auf der angegebenen Ebene zu finden. Die Ebene des zurückzugebenden Vorfahren oder dessen Ebene relativ zur Ebene des Elements kann explizit angegeben werden. Sie gibt die Anzahl der hierarchischen Schritte vom Vorfahren zurück und lokalisiert so den gewünschten Vorfahren.

Nehmen wir nun an, wir müssen alle Elemente im Abschnitt „Beliebte Kurse“ mithilfe des Vorfahren des Ankers durchsuchen, dessen Text „SELENIUM“ lautet.

Hier sieht unsere XPath-Abfrage aus

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

Komplett 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();
        }
    }
}

Die Ausgabe sieht folgendermaßen aus:

Komplett Code

Verwendung von UND und ODER

Durch die Verwendung von UND und ODER können Sie 2 Bedingungen in Ihren XPath-Ausdruck einfügen.

  • Im Falle einer UND-Verknüpfung müssen beide Bedingungen erfüllt sein, nur dann wird das Element gefunden.
  • Im Falle einer ODER-Verknüpfung muss mindestens eine der beiden Bedingungen erfüllt sein, nur dann wird das Element gefunden.

Unsere XPath-Abfrage sieht hier folgendermaßen aus:

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

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

Verwendung von UND und ODER

Testschritte:

  1. Zurück Nach https://demo.guru99.com/v1/
  2. In diesem Abschnitt werden wir die oben genannte Demoseite verwenden, um mit verschiedenen XPath-Funktionen nach Elementen zu suchen.

Sie finden ein Element mithilfe der Achsen AND und OR, der übergeordneten Achse, der Start-mit-Achse und der XPath-Achse

UND ODER Beispiel

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 Parent in Selenium

Eltern in Selenium Diese Methode dient dazu, den übergeordneten Knoten des aktuell auf einer Webseite ausgewählten Knotens zu ermitteln. Sie ist besonders nützlich, wenn Sie ein Element auswählen und dessen übergeordnetes Element mithilfe von XPath benötigen. Sie wird auch verwendet, um den übergeordneten Knoten eines übergeordneten Elements zu ermitteln.

Unsere XPath-Abfrage sieht hier folgendermaßen aus:

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

XPath Parent in Selenium

XPath mit Parent

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

Beginnt mit

Mit der Funktion "Starts-with" können Sie das Element finden, dessen Attribut sich beim Aktualisieren oder bei anderen Operationen wie Klicken, Absenden usw. dynamisch ändert.

Hier sieht unsere XPath-Abfrage aus

Xpath=//label[starts-with(@id,'message')]

Beginnt mit

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

Xpath-Achsen

Mithilfe von XPath-Achsen können Sie die dynamischen und sehr komplexen Elemente auf einer Webseite finden. XPath-Achsen enthalten mehrere Methoden zum Suchen eines Elements. Hier werden einige Methoden erläutert.

Folgende: Diese Funktion gibt das unmittelbare Element der jeweiligen Komponente zurück.

Hier sieht unsere XPath-Abfrage aus

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

XPath mit Folgendem
XPath mit folgendem
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();
	}
}

Vorher: Diese Funktion gibt das vorhergehende Element des jeweiligen Elements zurück.

Hier sieht unsere XPath-Abfrage aus

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

XPath mit Preceding

XPath mit Preceding
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) Nachfahre: Diese Funktion gibt das untergeordnete Element des jeweiligen Elements zurück.

Hier sieht unsere XPath-Abfrage aus

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

XPath mit Descendant

XPath mit Descendant
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();
	}
}

Häufig gestellte Fragen

In XPath wählt /* alle Elemente der obersten Ebene eines XML- oder HTML-Dokuments aus. Es bedeutet „wähle jedes Element direkt unterhalb des Wurzelknotens aus“. In einem HTML-Dokument würde /* beispielsweise übereinstimmen. da es sich um das oberste Element unterhalb des Wurzelelements handelt.

Die Funktion `contains()` in XPath hilft dabei, Elemente zu finden, deren Attribut oder Text teilweise mit einem gegebenen Wert übereinstimmt. Sie ist besonders nützlich, wenn die genaue Zeichenkette unvorhersehbar oder dynamisch ist. Zum Beispiel: //div[contains(@class,'menu')] Passt zu jeder deren Klasse das Wort „Menü“ enthält.

Um Elemente anhand einer Teilübereinstimmung in ihrem Klassenattribut zu finden, verwenden Sie die Funktion contains(). Zum Beispiel: //button[contains(@class,'submit')] Diese Methode zielt auf alle Elemente ab , deren Klassenname „submit“ enthält, wie z. B. „submit-btn“ oder „form-submit“. Sie bietet eine flexible Möglichkeit, dynamische Klassennamen zu verarbeiten.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: