Monday, December 15, 2008

Way to get XPATH in Internet Explorer

Are you stuck with an application that only works in IE?
Do you want the XPATH of an element that can be seen only IE? Unable to replicate the scenario in firefox. There are many firefox addons like xpather, xpath-checker and firebug that will give you the xpath of an element in a second. But sadly there is no addon or tool avaialable that will do this for IE. For most cases you can get the xpath of the elements that fall in your script using the above tools in firefox and tweak them a little (if required) to make them work in IE. But if you are testing an application that will work only in IE or the specific scenario or page that has this element will open-up/play-out only in IE then you cannot use any of the above mentione tools to find the XPATH.
Well the only thing that works in this case is the Bookmarklets that were coded just for this purpose. Bookmarklets are JavaScript code that you will add in IE as bookmarks and later use to get the XPATH of the element you desire. Using these you can get the XPATH as easily as you get using xpather or any other firefox addon.

1)Open IE
2)Type about:blank in the address bar and hit enter
3)From Favorites main menu select--->Add favorites
4) In the Add a favorite popup window enter name GetXPATH1.
5)Click add button in the add a favorite popup window.
6)Open the Favorites menu and right click the newly added favorite and select properties option.
7)GetXPATH1 Properties will open up. Select the web Document Tab.
8)Enter the following in the URL field.

javascript:function getNode(node){var nodeExpr=node.tagName;if(!nodeExpr)return null;if(!=''){nodeExpr+="[@id='""']";return "/"+nodeExpr;}var rank=1;var ps=node.previousSibling;while(ps){if(ps.tagName==node.tagName){rank++;}ps=ps.previousSibling;}if(rank>1){nodeExpr+='['+rank+']';}else{var ns=node.nextSibling;while(ns){if(ns.tagName==node.tagName){nodeExpr+='[1]';break;}ns=ns.nextSibling;}}return nodeExpr;}

9)Click Ok. Click YES on the popup alert.
10)Add another favorite by following steps 3 to 5, Name this favorite GetXPATH2 (step4)
11)Repeat steps 6 and 7 for GetXPATH2 that you just created.
12)Enter the following in the URL field for GetXPATH2

javascript:function o__o(){var currentNode=document.selection.createRange().parentElement();var path=[];while(currentNode){var pe=getNode(currentNode);if(pe){path.push(pe);if(pe.indexOf('@id')!=-1)break;}currentNode=currentNode.parentNode;}var xpath="/"+path.reverse().join('/');clipboardData.setData("Text", xpath);}o__o();

13)Repeat Step 9.

You are all done!!

Now to get the XPATH of elements just select the element with your mouse. This would involve clicking the left mouse button just before the element (link, button, image, checkbox, text etc) begins and dragging it till the element ends. Once you do this first select the favorite GetXPATH1 from the favorites menu and then select the second favorite GetXPATH2. At his point you will get a confirmation, hit allow access button. Now open up a notepad file, right click and select paste option. This will give you the XPATH of the element you seek.

*I got this bookmarklets from some other site but can't remember which one. Credit goes to the guy who created these JS.


Anonymous said...

Works like a charm! Thank you for sharing!

Anonymous said...

I found the code posted on Stack Overflow at:

The author is Phil Lho.

Anonymous said...

The person who wrote the code as well the person who shared it, a hearty thanks to both of them!!!!!!

Anonymous said...

For all those people who comments as,

"I found the code posted on Stack Overflow at:"

How many people did you share the information you found online. What to do who had written, bottom line is you found what you need.

Anonymous said...

Its really helpful to find Xpath value of a specific field..

Thanks to prepared and Shared information.

Anonymous said...

Thanks a tonn!!!

mathew said...

Thanks Man!!! It works. Also it there any way that i can verify some xpath?
Like the xpath which i get from Firefox or Chrome

Paras said...

Thanks Bro, It working.
Finally I know why my testcases was failing on IE.

Anonymous said...

Thanks Man!!!!!!!!Please keep up this good work......

man9ar00 said...

If you then need to test your XPath, you can use this technique:

Anonymous said...

This is awesome...Thanks for posting this... :)

Anonymous said...

Very Nice,

this is amazing :).

Thanks for you all

Ravi Kiran said...

very very helpfull. I just tried it and working perfectly.

Anonymous said...

Hi Mahesh,

I did everything as mentioned in the post but not getting 'allow access button' or such things.

Can you please guide me on this.


MD.M Rahman said...

This is nice But if you like to find out some tree menu you can't select this little "+" sign to expand.For noncritical element this is good way.

Anonymous said...

it is helpful but i cant able to get xpath of the selected element in IE though i added getxpath1,2 to favourites sucessfully. i changed the security settings accrodingly but i cant able to retreive the xpath. pleae provide proper explanation. Thanks in advance.

pramod said...

thanks a lot .really helped me to solve my issue in IE


Hi All,
I felt very happy when I got this solution but it is not working for me in my application. I have followed the steps given in the blog and fetch the xpath of an webelement which is not at all working and equals to the xpath which has fetched by using chrome browser or firebug is working fine.
For example, below are the x-paths for a button in one the page and both are different.
1. //*[@id="save"] xpath fetched as per the steps given in blog is not working for me.
2. //INPUT[@id='save'] xpath fetched fropm chrome browser which is working fine.

Everyone who read this blog has given positive comments but not fine in my case. So, can any one of you help me out in this regard?

Anonymous said...

Just like a super and fantastic

Anonymous said...

It is fantastic. I was using Firefox to find the xpath but some applicaiton don't open on Firefox. God Bless!!


Anonymous said...

Hats off dude...grt work for both of them who made it and who shared it...Keep rocking

Mahesh Jajada said...

For me it is not working on IE11, worked pretty well on IE8 though. Does any setting on IE11 affecting this? Any idea?

Yethendra said...

Thanks a lot Buddy finally i got to know a way to find xpath in IE easily

Prabhakaran U said...

Hi everyone:
After reading this also am not able to get the xPATH for IE.please anyone guide me.

MY fb id is Prabhakar UVP

Anonymous said...

its mind blowing...someone else wrote the code...but u explained well....great..thanks it helped:)

Aliaa Monier Ismaail said...

Hello All

I searched alot , and tried alot , and unfortunately , the above technique didn't work on my side and I didn't receive the confirmation message to allow access , so I came up to the following technique and it worked fine:

* for the web page you want to view the XPATH of one of its elements , from IE >> right click the page >> view source >> copy the source file >> create a new text file >> paste the page source in it >> edit the extension to be filename.html >> right click the file and open with FireFox >> and as u should have FireBug installed >> select the item >> right click and Copy XPATH... Done :)

Thank you

Anthony Chamberlain said...

It works fine but it does not use any IDs. Just shows the full path. Any way to see the IDs?

Pradeep Reddy said...

Excellent...worked like a charm...Fantastic.. thanks for the guy who shared this...hatsoff dude

Anonymous said...

This is simply wonderful ! I am just hoping it works for all objects I want ! Thanks to someone :)

Madan said...

First of all thanks for providing the solution, it works well for me.
But after capturing the first element xpath, the IE browser HTML is going to "Loading..." and i cannot inspect the second element, means the inspect is disabled after capturing first xpath

Can anybody help me on this.

Bhabapriya said...


I am unable to get the Xpath as the its throwing the error "Unable to create range for null reference error" while clicking the getXpath2 after clicking the getXpath1

Please advise

Akash Soori said...

Simply brilliant. Works without any issues. :) Thanks a lot man!!!

Rashmi M K said...

I observed it worked in one page initially, but doesnt work in another page.
Anybody faced similar issues ?

Please suggest.

Anonymous said...

This worked for me. Credit to dev and sharers :D

Shruti Ramalingam said...

Thanks for the great information in your blog Selenium Training in Chennai

RuThaN said...

Could someone pleas share video how to use it, pleas?
We are trying to do it for newest IE11 and Siebel OpenUI apliccation, but we are not able, but we are probably doing something wrong..

saurav said...

It's not working in IE11. Have to comeup with something new.

sanayamohit said...

Thanks for sharing great information in your blog. Got to learn new things from your Blog . It was very nice blog to learn about Selenium.selenium Training in Chennai

Kumar Viren said...

Hello, '

I added the Xpath1 and Xpath2 but after that It is not working for me.
I select the element , select xpath1 then xpath2 but after when I paste into notepad then cant see the xpath.

Please advise to suggest the ans with screenshots...

vamshisays said...

Not working with IE11

Priya Kannan said...

That was a great message in my carrier, and It's wonderful commands like mind relaxes with understand words of knowledge by information's.
Selenium Training in Chennai