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

Was enthält XPath?

XPath enthält ist eine Funktion innerhalb des Xpath-Ausdrucks, die zum Suchen nach Webelementen verwendet wird, die einen bestimmten Text enthalten. Wir können alle Elemente, die mit dem angegebenen Textwert übereinstimmen, mithilfe der XPath-Funktion enthält() auf der gesamten Webseite extrahieren. Enthält in XPath die Möglichkeit, das Element mit 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 Wenn wir kein kompliziertes Webelement für unser Testskript finden können, müssen wir die Funktionen aus der XPath 1.0-Bibliothek verwenden. Mit der Kombination dieser Funktionen können wir spezifischere XPaths erstellen.

Geschwistern in XPath folgen

A Geschwister rein Selenium Webtreiber ist eine Funktion, die verwendet wird, um ein Webelement abzurufen, das ein Geschwisterelement des übergeordneten Elements ist. Wenn das übergeordnete Element bekannt ist, kann das Webelement leicht gefunden oder lokalisiert werden, indem das Geschwisterattribut des XPath-Ausdrucks im Selenium-Webtreiber verwendet wird.

Geschwister in XPath-Beispiel:
Hier finden wir auf der Grundlage des Geschwisterelements von „a“ „h4“.

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

Geschwistern in XPath folgen

Vorfahr: Um ein Element auf der Grundlage 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 der Erstellung des Tutorials wurde die Homepage von Guru99 aktualisiert. Nutzen Sie daher stattdessen die Demo-Site, um Tests durchzuführen

  1. Gehen Sie zu https://demo.guru99.com/test/guru99home/
  2. Suchen Sie im Abschnitt „Einige unserer beliebtesten Kurse“ nach allen Webelementen, die Geschwister eines Webelements sind, dessen Text „SELENIUM“ lautet.
  3. Wir werden mithilfe von XPath-Text ein Element finden, das die Funktion „Vorfahr“ und „Geschwister“ enthält.

Geschwistern in XPath folgen

USING enthält Text und XPath-Geschwister

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

Die Ausgabe wird wie folgt aussehen:

USING enthält Text und XPath-Geschwister

XPath-Vorfahr in Selenium

XPath-Vorfahr in Selenium ist eine Funktion, die verwendet wird, um den Vorfahren eines bestimmten Mitglieds auf der angegebenen Ebene zu finden. Die Ebene des zurückzugebenden Vorfahrens oder die Ebene des Vorfahrens relativ zur Ebene des Mitglieds kann explizit angegeben werden. Sie gibt die Anzahl der hierarchischen Schritte vom Vorfahren zurück und lokalisiert den angegebenen Vorfahren, den der Benutzer sucht.

Nehmen wir nun an, wir müssen alle Elemente im Abschnitt „Beliebter Kurs“ mithilfe des Vorgängers des Ankers mit dem Text „SELENIUM“ durchsuchen.

Hier sieht unsere XPath-Abfrage aus

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

Code vervollständigen

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

Die Ausgabe sieht folgendermaßen aus:

Code vervollständigen

Verwendung von UND und ODER

Durch die Verwendung von AND und OR können Sie zwei Bedingungen in unseren XPath-Ausdruck einfügen.

  • Im Falle von AND sollten beide Bedingungen wahr sein, nur dann wird das Element gefunden.
  • Im Falle von OR sollte eine der beiden Bedingungen wahr sein, nur dann wird das Element gefunden.

Hier sieht unsere XPath-Abfrage aus

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

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

Verwendung von UND und ODER

Testschritte:

  1. Gehen Sie zu https://demo.guru99.com/v1/
  2. In diesem Abschnitt wird die obige Demo-Site verwendet, um Elemente mit verschiedenen XPath-Funktionen 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 ist eine Methode zum Abrufen des übergeordneten Knotens des aktuell auf der Webseite ausgewählten Knotens. Dies ist sehr nützlich, wenn Sie ein Element auswählen und das übergeordnete Element mithilfe von XPath abrufen müssen. Diese Methode wird auch verwendet, um das übergeordnete Element des übergeordneten Elements abzurufen.

Hier sieht unsere XPath-Abfrage 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 „Beginnt mit“ können Sie das Element finden, dessen Attribut sich beim Aktualisieren oder anderen Vorgängen wie Klicken, Senden 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();

	}

}

Zusammenfassung

  • Es gibt Situationen, in denen regulärer XPath nicht zum Suchen eines Elements verwendet werden kann. In einer solchen Situation benötigen wir andere Funktionen als die XPath-Abfrage.
  • Es gibt einige wichtige XPath-Funktionen, wie z. B. „XPath“ enthält, „Eltern“, „Vorfahren“, „Folgendes Geschwister“ usw.
  • Mit Hilfe dieser Funktionen können Sie komplexe XPath-Ausdrücke erstellen.