Use the contains() function in XPath to partially match attribute values. This is especially useful for elements with dynamic IDs or class names.
Syntax:
XPATH
//*[contains(@attributeName, ''partialValue'')]
Examples:
XPATH
//*[contains(@id, ''user'')]
//button[contains(@class, ''btn'')]
//a[contains(text(), ''Login'')]
//input[contains(@name, ''search'')]
Other partial matching functions:
| Function | Description | Example |
|---|---|---|
contains() | Value contains substring | contains(@id,''user'') |
starts-with() | Value starts with | starts-with(@id,''user'') |
normalize-space() | Ignore extra spaces | normalize-space(text())=''Login'' |
Real-world use case:
Dynamic IDs like username_12345 or username_67890 → use contains(@id, ''username'')
