Skip to main content

SeeTestAutomation- XPath Operators & Functions

info

Please note that this tool is classified as a Legacy tool. We recommend transitioning to our updated solutions to maintain optimal performance and security in your workflows. For more information on this matter, please reach out to technical support .

XPath Operators

  • Boolean operators: andornot() - Simple logic that can be integrated with the different properties used.

    Example: Using the query xpath=//*[@hint='Username' or @hint='Password'] will give us username text field and password text field.

    If we surround the properties with not() - xpath=//*[not(@hint='Username' or @hint='Password')] we will get all the elements in this page except for the text fields.

    b

  • A union operator: I - forms the union of two XPath expressions.

  • Arithmetic operators: +-*div (divided), mod (Returns the remainder of a division)

  • Comparison operators: =!=><<=>=

    Example: If we want to get only the elements whose width is at least 8 times their height we can use this query - xpath=//*[@width div @height > 8]

XPath Functions

  • Contains(string, string)**** - Use this function if you are looking for a part of a value, very useful in cases of partial text. 

    Example: You can use the query xpath=//*[contains(@text,'Your balance is:')] in order to identify the element that holds the balance value, regardless of the value itself which can change from test to test.

  • starts-with(string, string) - For finding elements that start with a specific string.

    Examplexpath=//*[starts-with(@text, "M")] This query will return all elements with text property that start with "M":

  • concat**(string, string, string*)****** - Used to connect two strings or more.

  • substring(stringstartlength) - Returns a part of a string, for example substring('string', 2, 4) returns "trin".

  • substring-after**(string, string)****** - Returns the part of the string that exists after some specific characters in the string.

  • substring-before****(string, string)******** -  Returns the part of the string that exists before some specific characters in the string.

    Example: In order to get all apps that use more then 20 MB we will use substring-before function to extract the text before the decimal point - xpath=//*[substring-before(@text, '.')>20]/../*[@id='title']

  • string-length**(string) -****** Returns the string length.

  • normalize-space(string)**** - Remove all the whitespace from a string.

    Example: In this query we get all app names with 19 or more characters with no consideration of whitespace - xpath=//*[string-length(normalize-space(@text))>=19]

  • translate(string, string, string) - You can use this function if you want to replace some specific characters in a string with other specific characters. For example "translate('string', 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" will return the string "STRING" and "translate('We want pizza', 'pizza', 'burger')" will return the string "We want burger".

    Example: We want to get all elements that have a text property that contains a numeric value bigger than 1000000. You can notice that the numbers appear in this form: 10,00,000, In order for the query to work we use the translate function like this:  xpath=//*[translate(@text, ',' ,'')>1000000] the function replaces ',' with '' (In fact - deletes them).

     

  • cmd:matches(string, string)**** - This is a special addition to XPath in SeeTest Automation. It is used in order to integrate regular expression with the XPath query. 

    Example: The query xpath=//*[cmd:matches(@text, "^[^\s]+\s+R.*")] will identify all elements with a text property whose second word starts with 'R'