J'ai utilisé cette expression Xpath "//span[@class='Big']"
et a obtenu tous les éléments de cette page qui sont sous <span>
tag et class='Big'
.
Ma question est la suivante: si je veux juste la première occurrence sur la page, pas toutes les occurrences, quelle serait l'expression correcte Xpath
?
Merci, Narin
La bonne réponse (notez les crochets) :
(//span[@class='Big'])[1]
L'expression suivante est incorrecte dans le cas général:
//span[@class='Big'][1]
car il sélectionne chaque span
élément du document, qui remplit la condition dans le premier prédicat, c'est-à-dire le premier enfant de son parent - il peut y en avoir beaucoup dans un document XML et tous seront sélectionnés.
Pour une explication plus détaillée, voir: https://stackoverflow.com/a/5818966/36305
La réponse de Dimitre Novatchev est correcte si vous vous attendez à ce que l'attribut class
soit égal àBig
(sans aucune autre classe attachée à l'élément):
(//span[@class="Big"])[1]
... qui est similaire à l'expression JavaScript suivante:
document.querySelectorAll('span[class="Big"]')[0]
D'un autre côté, si vous vous attendez à ce que Big
soit un nombre quelconque de classes dans l'attribut class
(plutôt que dans la seule classe), vous pouvez utiliser l'expression suivante:
(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
... qui est similaire à l'expression JavaScript suivante:
document.querySelectorAll('span.Big')[0]