0% found this document useful (0 votes)
5 views

04_01_Selenium WebDriver Locators - Part6-XPath in Selenium WebDriver

Uploaded by

minhtandragon29
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

04_01_Selenium WebDriver Locators - Part6-XPath in Selenium WebDriver

Uploaded by

minhtandragon29
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 45

RBVH/ENG1

Selenium WebDriver
Locators – Part 6
May-2019

Internal | RBVH/ENG1 | 6/24/2014 | © Robert Bosch Engineering and Business Solutions Vietnam Company Limited 2013. All
1
rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of
applications for industrial property rights.
XPath in Selenium WebDriver
 What is XPath?
 XPath is defined as XML path. It is a syntax or language for
finding any element on the web page using XML path
expression. XPath is used to find the location of any element on
a webpage using HTML DOM structure. The basic format of XPath
is explained below with screen shot.
XPath in Selenium WebDriver
Syntax for XPath:
XPath contains the path of the element situated at the web page.
Standard syntax for creating XPath is.

•// : Select current node.


•Tagname: Tagname of the
particular node.
•@: Select attribute.
•Attribute: Attribute name of the
node.
•Value: Value of the attribute.
Syntax for XPath:
To find the element on web pages accurately there are different
types of locators:
Types of X-path
 There are two types of XPath:
 1) Absolute XPath
 2) Relative XPath
Types of X-path - Absolute XPath
 Absolute XPath:
 It is the direct way to find the element, but the disadvantage of
the absolute XPath is that if there are any changes made in the
path of the element then that XPath gets failed.
 The key characteristic of XPath is that it begins with the single
forward slash(/) ,which means you can select the element from
the root node.
 Below is the example of an absolute xpath expression of the
element shown in the below screen.
Types of X-path - Absolute XPath
 Absolute XPath: http://demo.guru99.com/test/selenium-
xpath.html
Types of X-path - Relative xpath
 Relative xpath:
 For Relative Xpath the path starts from the middle of the HTML
DOM structure. It starts with the double forward slash (//), which
means it can search the element anywhere at the webpage.
 You can start from the middle of the HTML DOM structure and no
need to write long xpath.
Types of X-path - Relative xpath
What are XPath axes.
 XPath axes search different nodes in XML document from current
context node. XPath Axes are the methods used to find dynamic
elements, which otherwise not possible by normal XPath method
having no ID , Classname, Name, etc.
 Axes methods are used to find those elements, which dynamically
change on refresh or any other operations. There are few axes
methods commonly used in Selenium Webdriver like child,
parent, ancestor, sibling, preceding, self, etc.
Using XPath Handling complex &
Dynamic elements in Selenium
 1) Basic XPath:
 XPath expression select nodes or list of nodes on the basis of
attributes like ID , Name, Classname, etc. from the XML
document as illustrated below.
Using XPath Handling complex &
Dynamic elements in Selenium
 Here is a link to access the page http://demo.guru99.com/v1/
Using XPath Handling complex &
Dynamic elements in Selenium
 Some more basic xpath expressions:
 Xpath=//input[@type='text']
 Xpath=//label[@id='message23']
 Xpath=//input[@value='RESET']
 Xpath=//*[@class='barone']
 Xpath=//a[@href='http://demo.guru99.com/']
 Xpath= //img[@src='//cdn.guru99.com/images/home/java.png']
Contains():
 Contains() is a method used in XPath expression. It is used when
the value of any attribute changes dynamically, for example,
login information.
 The contain feature has an ability to find the element with partial
text as shown in below example.
 In this example, we tried to identify the element by just using
partial text value of the attribute. In the below XPath expression
partial value 'sub' is used in place of submit button. It can be
observed that the element is found successfully.
Contains():
 Complete value of 'Type' is 'submit' but using only partial value
'sub'.
 Xpath=//*[contains(@type,'sub')]
 Complete value of 'name' is 'btnLogin' but using only partial value
'btn'.
 Xpath=//*[contains(@name,'btn')]
Contains():
Contains():
Contains():
Using OR & AND:
In OR expression, two conditions are used, whether 1st
condition OR 2nd condition should be true. It is also applicable
if any one condition is true or maybe both. Means any one
condition should be true to find the element.
In the below XPath expression, it identifies the elements whose
single or both conditions are true.

Xpath=//*[@type='submit' or @name='btnReset']
Using OR & AND:
Using OR & AND:
In AND expression, two conditions are used, both conditions
should be true to find the element. It fails to find element if any
one condition is false.

Xpath=//input[@type='submit' and
@name='btnLogin']
Using OR & AND:
Start-with function:
Start-with function finds the element whose attribute value
changes on refresh or any operation on the webpage. In this expression,
match the starting text of the attribute is used to find the element whose
attribute changes dynamically. You can also find the element whose
attribute value is static (not changes).
For example -: Suppose the ID of particular element changes dynamically
like:
Id=" message12"
Id=" message345"
Id=" message8769"
and so on.. but the initial text is same. In this case, we use Start-with
expression.
Start-with function:

Xpath=//label[starts-
with(@id,'message')]
Text():
XPath axes methods:

These XPath axes methods are used to find the complex or dynamic elements. Below we will see some of these methods.
- Following
- Ancestor
- Child
- Preceding
Following :

Selects all elements in the document of the current node( ) [ UserID input box is the current node] as shown in the below screen.
Following :

Xpath=//*[@type='text']//following::input
Following :

Xpath=//*[@type='text']//following::input[1]
Ancestor :

The ancestor axis selects all ancestors element (grandparent, parent, etc.) of
the current node as shown in the below screen.

Xpath=//*[text()='Enterprise Testing']//ancestor::div
Ancestor :

There are 13 "div" nodes matching by using "ancestor" axis. If you want to focus on any particular element then you can use the below XPath, where
you change the number 1, 2 as per your requirement:

Xpath=//*[text()='Enterprise
Testing']//ancestor::div[1]

You can change the XPath according to the requirement by putting [1], [2]
…………and so on.
Child :
Selects all children elements of the current node (Java) as shown in the below screen.

Xpath=//*[@id='java_technologies']/child::li
Child :

There are 71 "li" nodes matching by using "child" axis. If you want to focus on any particular element then you can use the
below xpath:

Xpath=//*[@id='java_technologies']/child::li[1]

You can change the XPath according to the requirement by putting [1], [2]
…………and so on.
Preceding :
Select all nodes that come before the current node as shown in the below screen.

Xpath=//*[@type='submit']//preceding::input
Preceding :
There are 2 "input" nodes matching by using "preceding" axis. If you want to focus on any
particular element then you can use the below XPath:

Xpath=//*[@type='submit']//preceding::input[1]
You can change the XPath according to the requirement by putting [1], [2]
…………and so on.
Following-sibling :
Select the following siblings of the context node. Siblings are at the same level of the current node as shown in the below screen. It will
find the element after the current node.

xpath=//*[@type='submit']//following-sibling::input
Parent :
Selects the parent of the current node as shown in the below screen.

Xpath=//*[@id='rt-feature']//parent::div
Parent :
There are 65 "div" nodes matching by using "parent" axis. If you want to focus on any
particular element then you can use the below XPath:

Xpath=//*[@id='rt-feature']//parent::div[1]
You can change the XPath according to the requirement by putting [1], [2]
…………and so on.
Self :
Selects the current node or 'self' means it indicates the node itself as shown in the below screen.

Xpath =//*[@type='password']//self::input
Descendant :
Selects the descendants of the current node as shown in the below screen.In the below expression, it identifies all the element descendants
to current element ( 'Main body surround' frame element) which means down under the node (child node , grandchild node, etc.).

Xpath=//*[@id='rt-feature']//descendant::a
Descendant :
There are 12 "link" nodes matching by using "descendant" axis. If you want to focus on any
particular element then you can use the below XPath:

Xpath=//*[@id='rt-feature']//descendant::a[1]

You can change the XPath according to the requirement by putting [1], [2]
…………and so on.
Summary
XPath is required to find an element on the web page as to do an operation on
that particular element.
•There are two types of XPath:
• Absolute XPath
• Relative XPath
•XPath Axes are the methods used to find dynamic elements, which otherwise
not possible to find by normal XPath method
•XPath expression select nodes or list of nodes on the basis of attributes like ID ,
Name, Classname, etc. from the XML document .
Exercise
1.Go to http://demo.guru99.com/test/guru99home/
2.In the section 'A few of our most popular courses', search all Web Elements which are sibling
of a WebElement whose text is 'SELENIUM'
3.We will find element using contains , ancestor and sibling function..
Following - Preceding
Ancestor - Descendant
Parent - Child
Following-sibling
1. Write methods with parameters like this : selectMenuItem(String para1)
2. Write test cases such below :
1.Launch the web browser and open the site "Demo Guru99 Page “
2.Using method above to select any item via parameter input.
Example : selectMenuitem(Testing);
3.Check point for action at step2.
RBVH/ENG1

Reference
 https://www.guru99.com/xpath-selenium.html

45

Internal | RBVH/ENG1 | 6/24/2014 | © Robert Bosch Engineering and Business Solutions Vietnam Company Limited 2013. All
rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of
applications for industrial property rights.

You might also like