XPath Indeholder: Tekst, Følge søskende og forfader i Selenium
🚀 Smart opsummering
XPath indeholder, søskende og forfader i Selenium muliggør præcis identifikation af webelementer ved hjælp af strukturerede relationer og tekstmønstre. Disse XPath-funktioner forbedrer automatiseringens pålidelighed, fleksibilitet og vedligeholdelse i komplekse DOM-hierarkier.

Hvad er XPath Indeholder?
XPath indeholder er en funktion i et XPath-udtryk, som bruges til at søge efter webelementer, der indeholder en bestemt tekst. Vi kan f.eks.tracFind alle elementer, der matcher den givne tekstværdi, ved hjælp af XPaths contains()-funktion på tværs af websiden. Contains i XPath har mulighed for at finde elementet med delvis tekst.
Eksempel – indeholder tekst
Her søger vi et anker .indeholder tekst som 'SAP M'.
"//h4/a[contains(text(),'SAP M')]"
BEMÆRK: Du kan øve følgende XPath-øvelse på dette https://demo.guru99.com/test/selenium-xpath.html
Hvis en simpel XPath ikke kan finde et kompliceret webelement til vores testscript, skal vi bruge funktionerne fra XPath 1.0-biblioteket. Med kombinationen af disse funktioner kan vi oprette et mere specifikt XPath.
👉 Tilmeld dig gratis live Selenium Test projekt
Følger søskende i XPath
A Søskende i Selenium Webdriver er en funktion, der bruges til at hente et webelement, der er en søskende til det overordnede element. Hvis det overordnede element er kendt, kan webelementet nemt findes eller lokaliseres ved hjælp af sibling-attributten i XPath-udtrykket i Selenium WebDriver.
Søskende i XPath Eksempel:
Her finder vi 'h4' på baggrund af søskendeelementet i 'a'
"//div[@class='canvas- graph']//a[@href='/accounting.html'][i[@class='icon-usd']]/following-sibling::h4"
ForfaderFor at finde et element på basis af det overordnede element, kan vi bruge ancestor-attributten i XPath.
Lad os forstå disse 3 funktioner ved hjælp af et eksempel –
Testtrin:
Bemærk: Siden datoen for oprettelsen af tutorialen, hjemmesiden for Guru99 er blevet opdateret, så brug demosiden i stedet til at køre tests
- Gå til https://demo.guru99.com/test/guru99home/
- I sektionen 'Et par af vores mest populære kurser' skal du søge efter alle webelementer, der er søskende til et webelement, hvis tekst er 'SELENIUM'.
- Vi finder elementer ved hjælp af XPaths tekst indeholder, forfader og sibling-funktioner.
BRUG Indeholder tekst og XPath-søskende
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();
}
}
}
Output vil være som:
XPath Ancestor i Selenium
XPath Ancestor i Selenium er en funktion, der bruges til at finde forfaderen til et specifikt element på det angivne lag. Niveauet af forfaderen, der skal returneres, eller niveauet af forfaderen i forhold til medlemmets niveau, kan specificeres eksplicit. Den returnerer antallet af hierarkiske trin fra forfaderen og lokaliserer den angivne forfader, som brugeren ønsker.
Lad os nu antage, at vi skal søge i alle elementer i afsnittet 'Populært kursus' ved hjælp af forgængeren til ankeret, hvis tekst er 'SELENIUM'.
Her vil vores xpath-forespørgsel være sådan
"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega']/following-sibling::div"
Komplet 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();
}
}
}
Output vil se ud -
Brug AND og OR
Ved at bruge AND og OR kan du indsætte to betingelser i vores XPath-udtryk.
- I tilfælde af AND, skal begge betingelser være sande, kun så finder den elementet.
- I tilfælde af ELLER, skal en af de 2 betingelser være sand, kun så finder den elementet.
Her vil vores XPath-forespørgsel se sådan ud
Xpath=//*[@type='submit' OR @name='btnReset']
Xpath=//input[@type='submit' and @name='btnLogin']
Testtrin:
- Gå til https://demo.guru99.com/v1/
- I dette afsnit bruger vi ovenstående demoside til at søge efter elementer med forskellige funktioner i XPath.
Du vil finde et element ved hjælp af AND og OR, parent, starter-with og XPath-akser
OG ELLER Eksempel
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-forælder i Selenium
Forælder i Selenium er en metode, der bruges til at hente den overordnede node for den aktuelt valgte node på websiden. Den er meget nyttig i situationer, hvor du vælger et element og har brug for at hente det overordnede element ved hjælp af XPath. Denne metode bruges også til at hente den overordnede node.
Her vil vores XPath-forespørgsel se sådan ud
Xpath=//*[@id='rt-feature']//parent::div
XPath ved hjælp af forældre
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();
}
}
Starter-med
Ved hjælp af funktionen Starts-with kan du finde det element, hvis attribut dynamisk ændres ved opdatering eller andre handlinger som klik, send osv.
Her vil vores XPath-forespørgsel se ud
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();
}
}
Xpath akser
Ved at bruge XPath-akser kan du finde de dynamiske og meget komplekse elementer på en webside. XPath-akser indeholder flere metoder til at finde et element. Her vil diskutere et par metoder.
efter: Denne funktion returnerer det umiddelbare element af den bestemte komponent.
Her vil vores XPath-forespørgsel se ud
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();
}
}
Foregående: Denne funktion returnerer det foregående element i det bestemte element.
Her vil vores XPath-forespørgsel se ud
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) Aftagende: Denne funktion returnerer det efterkommerelement af det bestemte element.
Her vil vores XPath-forespørgsel se ud
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();
}
}









