I want to write a function that identifies all the links on a particular HTML page. My idea was to use XPath, by using a path such as //body//a[x] and incrementing x to go through the first, second, third link on the page.
Whilst trying this out in Chrome, I load up the page http://exoplanet.eu/ and in the Chrome Developer Tools JS console, I call $x("//body//a[1]"). I expect the very first link on the page, but this returns a list of multiple anchor elements. Calling $x("//body//a[2]") returns two anchor elements. Calling $x("//body//a[3]") returns nothing.
I was hoping that incrementing the [x] each time would give me each unique link one by one on the page, but they seem to be grouped. How can I rewrite this path so that I picks each anchor tag, one by one?
If you use the path
//body/descendant::a[1],//body/descendant::a[2]and so on you can select all descendantaelements of thebodyelement. Or with your attempt you need braces e.g.(//body//a)[1],(//body//a)[2]and so on.Note however that inside the browser with Javascript there is a
document.linkscollection in the object model so no XPath needed to access the links.