Xpath functions: Sometimes we need to create generic xpath to locate a web element. We can create generic xpath using the xpath functions. Some of the commonly used xpath functions are as follows:
1. contains()
2. starts-with()
3. last()
4. text()
5. sibling
1. Contains: This method is used to locate the elements that matches a particular text.
For example:
<a href="www.google.com" class="demoClass"> Google </a>
Here, if we want to locate this anchor tag then we can use “contains” method as follows :
//a[contains(@class, ’demoClass’)], which means "find 'a'(anchor) web element that has attribute 'class' value equal to ‘demoClass’ ”
Or, we can use other attribute to find this "a" web element. Like, //a[contains(@href,'google')], which means "find 'a' web element that has attribute 'href' value equal to 'google'"
2. Starts-with : This method is used to locate a web element that has attribute value starting with the some text.
For eg:
<a href="www.google.com" class="demoClass"> Google </a>
Here, we can find this 'a' web element using starts-with() as follows:
//a[starts-with(@class,'demo')], which means "find 'a' web element whose 'class' attribute starts with 'demo' "
3. last() : This method will select the last element amongst the available elements. For eg:
<html>
<body>
<input type='checkbox' name='chk'>one
<br><input type='checkbox' name='chk'>two
<br><input type='checkbox' name='chk'>three
<br><input type='checkbox' name='chk'>four
<br><input type='checkbox' name='chk'>five
<br><input type='checkbox' name='chk'>six
</body>
</html>
Here, there are six checkboxes so last() will select the last checkbox. We can select the last checkbox using the following xpath: //input[contains(@type, 'checkbox')][last()]
4. text() : This method is used when we want to find a web element using exact match. For eg:
<a href="www.google.com" class="demoClass"> Google </a>
Here, we can use text() to find this web element: //a[text()='Google'], which means "find this web element whose text is 'Google'".
5. sibling : This method is further divided into 2 category:
a. following-sibling
b. Preceding-sibling
We will cover this with the help of the example mentioned below:
<html>
<body>
<table>
<tr>
<th> Name </th>
<th> Course </th>
</tr>
<tr>
<td> ABC </td>
<td> MCA </td>
</tr>
<tr>
<td> XYZ </td>
<td> B.tech </td>
</tr>
</table>
</body>
</html>
Here, 1. <th> Name </th> and <th> Course </th> are siblings.
2. <td> ABC </td> and <td> MCA </td> are siblings.
3. <td> XYZ </td> and <td> B.tech </td> are siblings.
4. All the 'trs' are siblings.
# Case1: If we want to find the course of the student named "ABC" then for this, we need to first locate the student "ABC". xpath for the condition is as follows:
"//td[contains(text(),'ABC')]/following-sibling::td[1]"
Explanation of the above xpath: First break the xpath in smaller sections then it will be easy to understand
a. //td : this will find all the 'tds' in the web page.
b. //td[contains(text(),'ABC')] : this will find the "td" whose text contains the value "ABC"
c. //td[contains(text(),'ABC')]/following-sibling : this will find all the following siblings of the "ABC"
d. //td[contains(text(),'ABC')]/following-sibling::td[1] : this will find the first following sibling of the node "ABC".
#Case2: If we want to find the name of the student whose course is "B.tech" then xpath will be:
"//td[contains (text(),'B.tech')]/preceding-sibling::td[1]"
Explanation of the xpath:
a. //td : this will find all the 'tds' in the web page.
b. //td[contains (text(),'B.tech')] : this will find the "td" whose text contains the value "B.tech"
c. //td[contains (text(),'B.tech')]/preceding-sibling : this will find all the preceding siblings of the "B.tech"
d. //td[contains (text(),'B.tech')]/preceding-sibling::td[1] : this will find the first preceding sibling of the node "B.tech".
0 Comment(s)