Tuesday Jul 08, 2008

Identifying XPath of a element using XPath Query

Below are some of the common xpath query which you will need while doing your selenium automation. Using xpath query, your selenium testing much stable since the slightest change of the GUI wont break your automation.

GUI Element
Corresponding XPath
Remarks
<input type="submit" value="Save"/> //input[@value="Save"] Exactly matches the text "Save"

<input type="submit" value="Save1"/>

<input type="submit" value="Save2"/>

(//input)[1]   matches the 1st input element, "Save1"

(//input)[2]   matches the 2nd input element, "Save2"


<a href="somelink">Structure</a>
//a[text()="Structure"]
Exactly matches the value within a given tag. Here the text "Structure" which is in between the <a> tag (anchor tag)
<a href="somelink">x_structure_y</a> //a[contains(text(),'structure')]
Like wildcard search, matches the input element which has the text "structure" within a given tag
<input type="button" name="ccd_ccd_81533739_removeevent"/>

//input[contains(@name,concat("ccd","_","ccd","_")) and contains(@name,"removeevent")]

Note: The above xpath can be used when the attribute value has a part which is dynamic in nature (here in this case the text in between "ccd_" and "_removeevent" '81533739" keeps on changing everytime the GUI element is accessed)

Matching multiple text(s) pattern of a attribute value
<input type="text" value="Search..."/>
//input[@type='text' and contains(@value,'Search')]
Matches based on multiple attributes of a GUI element . Here the xpath of the text box is derived  based on its 'type' and 'value' attributes

Monday Mar 03, 2008

XPath : Finding GUI element by matching multiple text(s) pattern of a attribute value

Recently i had to spend my whole day searching for ways to find a elements' XPath (a ajax based button) by matching multiple text pattern within a single attribute value. I was using Selenium IDE to automate testing of Sun Portal Server GUI which is based on Ajax.

My Requirement : Uniquely Identify a ajax based button having the below XPath

//a[@id,'ccd_ccd_81533739_removeevent']

 

My Problem : Attribute(@id) value has both constant and dynamic texts which makes it difficult to uniquely identify the element based on its value

If you look at my ajax button's xpath , there is a numeral "81533739" which is not constant and it changes everytime but the first part(ccd_ccd_) and the second part(_removeevent) of the @id value is constant . I want to uniquely identify @id attribute based on these constant text alone

Solution:The below xpath will uniquely identify my element using concat() and contains() XPath methods

//a[contains(@id,concat("ccd","_","ccd","_")) and contains(@id,"removeevent")]

 

Below are few links which i found helpful for this solution:

About

I'm a Quality Engineer at Sun Microsystems. Here in this blog, you may find information about Software Testing, Portal Server, Virtualization, Web2.0 and Misc Technical topics. The views expressed here are personal and does not reflect that of my employer

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today