XPath obsahuje: text, následování sourozence a předka Selenium
🚀 Chytré shrnutí
XPath obsahuje, sourozence a předka v Selenium umožňují přesnou identifikaci webových prvků pomocí strukturovaných vztahů a textových vzorů. Tyto funkce XPath zvyšují spolehlivost, flexibilitu a udržovatelnost automatizace ve složitých hierarchiích DOM.

Co obsahuje XPath?
XPath obsahuje je funkce v rámci výrazu XPath, která se používá k vyhledávání webových prvků obsahujících konkrétní text. Můžeme napříkladtracVyhledejte všechny prvky, které odpovídají zadané textové hodnotě, pomocí funkce XPath contains() na celé webové stránce. Funkce Contains v XPath umožňuje najít prvek s částečným textem.
Příklad – obsahuje text
Zde hledáme kotvu .obsahuje text jako „SAP M'.
"//h4/a[contains(text(),'SAP M')]"
POZNÁMKA: Na tomto si můžete procvičit následující cvičení XPath https://demo.guru99.com/test/selenium-xpath.html
Pokud jednoduchý XPath není schopen najít složitý webový element pro náš testovací skript, musíme použít funkce z knihovny XPath 1.0. Kombinací těchto funkcí můžeme vytvořit specifičtější XPath.
👉 Zaregistrujte se pro živé vysílání zdarma Selenium Testovací projekt
Sledování sourozence v XPath
A Sourozenec v Selenium Webdriver je funkce používaná k načtení webového elementu, který je sourozencem nadřazeného elementu. Pokud je nadřazený element známý, pak lze webový element snadno najít nebo lokalizovat, k čemuž lze použít atribut sibling výrazu XPath v Selenium WebDriver.
Sourozenec v XPath Příklad:
Zde na základě sourozeneckého prvku 'a' nacházíme 'h4'.
"//div[@class='canvas- graph']//a[@href='/accounting.html'][i[@class='icon-usd']]/following-sibling::h4"
PředekPro nalezení prvku na základě nadřazeného prvku můžeme použít atribut ancestry v XPath.
Pojďme si tyto 3 funkce vysvětlit na příkladu –
Testovací kroky:
Poznámka: Od data vytvoření tutoriálu je domovská stránka GuruVerze 99 byla aktualizována, proto k provedení testů použijte raději demo stránku.
- Přejít https://demo.guru99.com/test/guru99home/
- V sekci „Několik našich nejoblíbenějších kurzů“ vyhledejte všechny webové prvky, které jsou sourozenci webového prvku, jehož text je „SELENIUM“.
- Prvky najdeme pomocí funkcí XPath text contains, ancestor a sibling.
POUŽÍVÁNÍ Obsahuje Text a XPath Sourozence
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();
}
}
}
Výstup bude takový:
Předek XPath v Selenium
Předek XPath v Selenium je funkce používaná k nalezení předka specifického prvku na zadané vrstvě. Lze explicitně zadat úroveň předka, která má být vrácena, nebo úroveň předka vzhledem k úrovni členu. Vrací počet hierarchických kroků od předka a vyhledává zadaného předka, kterého uživatel hledá.
Předpokládejme, že nyní potřebujeme prohledat všechny prvky v sekci „Oblíbený kurz“ s pomocí předka kotvy, jehož text je „SELENIUM“.
Zde bude vypadat náš dotaz xpath
"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega']/following-sibling::div"
Kompletní 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();
}
}
}
Výstup bude vypadat -
Pomocí AND a OR
Pomocí operátorů AND a OR můžete do našeho výrazu XPath vložit 2 podmínky.
- V případě operace AND musí být splněny obě podmínky, teprve poté se prvek najde.
- V případě operace OR musí být splněna kterákoli ze dvou podmínek, pouze tehdy se prvek najde.
Zde bude náš XPath dotaz vypadat takto
Xpath=//*[@type='submit' OR @name='btnReset']
Xpath=//input[@type='submit' and @name='btnLogin']
Testovací kroky:
- Přejít https://demo.guru99.com/v1/
- V této části použijeme výše uvedený demo web k vyhledávání prvků s různými funkcemi XPath.
Prvek najdete pomocí AND a OR, rodičovské osy, os začíná s a XPath
A NEBO Příklad
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();
}
}
Parent XPath v Selenium
Rodič v Selenium je metoda používaná k načtení nadřazeného uzlu aktuálně vybraného uzlu na webové stránce. Je velmi užitečná v situacích, kdy vyberete prvek a potřebujete získat nadřazený prvek pomocí XPath. Tato metoda se také používá k získání nadřazeného uzlu nadřazeného prvku.
Zde bude náš XPath dotaz vypadat takto
Xpath=//*[@id='rt-feature']//parent::div
XPath pomocí 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();
}
}
Začíná s
Pomocí funkce Starts-with můžete najít element, jehož atribut se dynamicky mění při aktualizaci nebo jiných operacích, jako je kliknutí, odeslání atd.
Zde bude vypadat náš dotaz XPath
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();
}
}
osy Xpath
Pomocí os XPath můžete na webové stránce najít dynamické a velmi složité prvky. Osy XPath obsahují několik metod k nalezení prvku. Zde budeme diskutovat o několika metodách.
následující: Tato funkce vrátí okamžitý prvek konkrétní komponenty.
Zde bude vypadat náš dotaz XPath
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();
}
}
Předchozí: Tato funkce vrátí předchozí prvek konkrétního prvku.
Zde bude vypadat náš dotaz XPath
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) Klesající: Tato funkce vrátí potomek prvku konkrétního prvku.
Zde bude vypadat náš dotaz XPath
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();
}
}









