XPath functions like contains and starts-with help find elements on a webpage when exact matches are hard to get. They make locating elements easier and more flexible.
XPath functions (contains, starts-with) in Selenium Java
//*[contains(@attribute, 'value')]
//*[starts-with(@attribute, 'value')]contains() checks if an attribute or text includes a substring anywhere.
starts-with() checks if an attribute or text begins with a substring.
id attribute contains the word 'user'.//input[contains(@id, 'user')]
//button[starts-with(text(), 'Log')]a) whose href attribute contains 'contact'.//a[contains(@href, 'contact')]This test opens a login page, finds the username input using contains() on the id, and finds the login button using starts-with() on the button text. It then types a username and clicks the button.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class XPathFunctionsTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); try { driver.get("https://example.com/login"); // Using contains() to find username input WebElement username = driver.findElement(By.xpath("//input[contains(@id, 'user')]"); username.sendKeys("testuser"); // Using starts-with() to find login button WebElement loginButton = driver.findElement(By.xpath("//button[starts-with(text(), 'Log')]"); loginButton.click(); System.out.println("Test passed: Elements found and actions performed."); } catch (Exception e) { System.out.println("Test failed: " + e.getMessage()); } finally { driver.quit(); } } }
Always check the webpage source to find stable parts of attributes or text for these functions.
Using these functions makes tests less fragile when small changes happen in the UI.
Be careful: too broad use of contains() can match multiple elements, causing errors.
contains() finds elements with attribute or text containing a substring.
starts-with() finds elements with attribute or text starting with a substring.
These functions help write flexible and reliable element locators in Selenium tests.