(The page
usually start with <body> , therefore the foremost parent will always be “//Body” while writing Full Path )
Selenium Code :
oDriver=new FirefoxDriver();
oTitle=oDriver.findElement(By.xpath("//body/form/div[7]/div/div[2]/div/div[2]/ul/li/a"));
2. Using Last()
xpath=//body/form/div[7]/div/div[2]/div/div[last()]/ul/li/a
3. Using Full Path+ @ attribute
·
xpath=//body/form/div[7]/div/div[2]/div/div[last()]/ul/li/a[@class='']
·
xpath=//body/form/div[7]/div/div[2]/div/div[last()]/ul/li/a[@style='background-color:
transparent;']
(For Login
Button)
xpath=//body/form/div[7]/div/div[2]/div/div[last()]/ul/li[2]/a[@target='_new']
4. Using only @ attribute (For Login Button)
xpath=//a[@target='_new']
(Which is
equivalent to
xpath=//body/form/div[7]/div/div[2]/div/div[last()]/ul/li[2]/a[@target='_new'] )
5. Using
Descendants
xpath=//div[@class='new-menu']/descendant::div[@class='fr']
6. Using keywords
xpath=//a[contains(@href,
"javascript:__doPostBack(")]
xpath=//a[contains(@id,
"ctl00_ctl00_ctl00_ContentPlaceHolderHeader_ContentPlaceHolderFooter_litSignUp")]
7. And Operation
xpath=//a[contains(@id,
"ctl00") and contains(@href,"javascript:_")]
8. using position()
xpath=//div[@class='tdltaln']/div[position()=2]/ul/li
9. Using starts-with keyword
xpath=//a[starts-with(@href,
"https://graph.facebook.com")]
10. OR (|) condition
xpath=//a[@id='ctl00_ctl00_ctl00_ContentPlaceHolderHeader_ContentPlaceHolderFooter_litSignUpLink'
or contains(@href,"javascript:__doPostBack")]
xpath=//a[contains(@id,"ctl00_ctl00_ctl00_")
or contains(@href,"javascript:__doPostBack") ]
xpath=//a[contains(@href,"javascript:__doPostBack")
or contains(@id,"ctl00_ctl00_ctl00_")]
11. Going 1 step back
Traversing from child to parent use
"/.."
12. Going back
multiple steps or reverse tracing ( ancestor:: )
Ex :If user "ancestor::div" , then all the ancestor elements are highlighted with "div" node
Back Trace to first occurrence of
div element
//*[text()='Biological Sciences']/ancestor::div[1]
13. Going to
specfic child element from parent node:( child:: )
Simialr to just "/ut[1]"
//*[text()='Biological
Sciences']/ancestor::div[1]/child::ul[1]
14. Wild Card “*”
xpath=//*[@id="ctl00_ctl00_ctl00_ContentPlaceHolderHeader_ContentPlaceHolderFooter_litSignUpLink"]
15. Nth element
xpath=//ul[@class='login']/*[1]
16. No
child
xpath=//img[count(*)=0]
17. Last Second or Last But one
xpath=//div[@class='dvaligncenter']/div[last()-1]//a
Examples for Xpath
xpath=xpathExpression:
Locate an element using an XPath expression.
1. xpath=//img[@alt='The image alt text']
2. xpath=//table[@id='table1']//tr[4]/td[2]
3. xpath=//a[contains(@href,'#id1')]
4. xpath=//a[contains(@href,'#id1')]/@class
5. xpath=(//table[@class='stylee'])//th[text()='theHeaderText']/../td
6. xpath=//input[@name='name2' and @value='yes']
7. xpath=//*[text()="right"]
8. xpath=//*[@id='view']/*[not(@selected='selected')][1]
9. xpath=//*[text()='Biological Sciences']/ancestor::div[1]
10. xpath=.//*[local-name(.)='th' or local-name(.)='td']
Xpath summary
1.Path
Full
Full+attribute
- Attribute
- Wild Card(*)
- Recent ancestor "/.. "
- //a[6]
- div[3][contains(@id,'dvheader')] -goto 3rd element and fetch if it has dvheader similar to AND
2.Functions
- position
- [Last()] //[Last[]-1]
- [Position()= 42]
- count
- text
- [starts-with(@,””)] -- Used For Dynamic Elements
- [contains(@,””)] -- Used For Dynamic Elements
- [text()=””] --text
3.Logical
- And
- or
- not
Navigation
Descendants::div[1]
ancestor::div[1]
child::div[1]
Ref:
http://software-testing-tutorials-automation.blogspot.in/2013/06/xpath-tutorials-identifying-xpath-for.html