Boolean operators: and, or, not() - 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.
Example: xpath=//*[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(string, start, length) - 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'