XPath enthält: Text, Following 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 sind wirarching eines Ankers. Enthält Text als „SAP M“.

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

XPath enthält

HINWEIS: Sie können Folgendes übenwing XPath-Übung dazu 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.

Following Geschwister in XPath

A Geschwister rein Selenium Webtreiber ist eine Funktion zum Abrufen eines Webelements, das dem übergeordneten Element gleichgeordnet ist. Wenn das übergeordnete Element bekannt ist, kann das Webelement leicht gefunden oder lokalisiert werden, das das Geschwisterattribut des Xpath-Ausdrucks verwenden kann selenium Webtreiber.

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"

Following Geschwister in XPath

Vorfahr: Um ein Element auf der Grundlage des übergeordneten Elements zu finden, können wir das Ancestor-Attribut von XPath verwenden.

Following Geschwister in XPath

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'
  3. Wir werden mithilfe von XPath-Text ein Element finden, das die Funktion „Vorfahr“ und „Geschwister“ enthält.

Following Geschwister in XPath

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 zurückzugebende Ebene des Vorfahren oder die Ebene des Vorfahren relativ zur Ebene des Mitglieds kann explizit angegeben werden. Es gibt die Anzahl hier zurückarchiCal geht vom Vorfahren aus und sucht nach dem angegebenen Vorfahren, den der Benutzer haben möchte.

Angenommen, wir müssen alle Elemente im Abschnitt „Beliebter Kurs“ mithilfe des Vorfahren des Ankers durchsuchen, dessen Text „SELENIUM'

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

Mithilfe der Starts-with-Funktion können Sie das Element finden, dessen Attribut sich bei der Aktualisierung oder auf andere Weise dynamisch ändert operaFunktionen wie Klicken, Senden usw.

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

Durch die Verwendung von XPath-Achsen können Sie eine dynamische und sehr komplexe Darstellung erzielenplex Elemente auf einer Webseite. XPath-Achsen enthalten mehrere Methoden zum Suchen eines Elements. Hier werden einige Methoden besprochen.

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

Hier sieht unsere XPath-Abfrage aus

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

XPath mit Following
XPath mit following
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 „XPath enthält“, „Parent“, „Vorfahren“ und „Follo“.wing-Geschwister usw.
  • Mit Hilfe dieser Funktionen können Sie com erstellenplex XPath-Ausdrücke.