nth element
//div//a[2]
Das ist selten das, was der Autor des xPath damit beabsichtigt hat. Der XPath matched das zweite a-Element, wenn es zwei verschwisterte a-Elemente gibt.
(//div//a)[2]
Das ist es, was der Autor des xPath eigentlich wollte. Dieser XPath matched das zweite a-Element, welches sich unterhalb vom div-Element befindet, egal wo es in der Familienhierarchie steht.
//div//irgendwas[2]//a[1]
Das ist es, was der Autor des XPath eigentlich machen sollte. Dieser XPath matched den ersten Link unter dem zweiten irgendwas.