Selenium et xPath - localiser un lien en contenant du texte
Je suis en train d'utiliser xPath pour trouver un élément contenant un morceau de texte, mais je ne peux pas le faire fonctionner....
WebElement searchItemByText = driver.findElement(By.xpath("//*[@id='popover-search']/div/div/ul/li[1]/a/span[contains(text()='Some text')]"));
Si je supprime le dernier bit avec l' "contient" chose, il localise mon élément span, mais j'ai besoin de le sélectionner basé sur le texte contenu. Il ne va pas être un match parfait de 'texte', car il peut contenir des tronquée chaînes.
Quelqu'un voit le problème?
source d'informationauteur joakimnorberg
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème est ici:
À se,
[]
sont une condition qui fonctionne sur chaque nœudque l'ensemble de nœuds -- durée de chaque nœud dans votre cas. Il correspond si l'un quelconque des noeuds, il fonctionne
sur match les conditions à l'intérieur des parenthèses.
text()
est un sélecteurqui correspond à tous les nœuds de texte qui sont des enfants du contexte
nœud -- il renvoie à un ensemble de nœuds.
contains
est une fonction qui fonctionnesur une chaîne. Si il est passé à un ensemble de nœuds, le nœud ensemble est converti
dans une chaîne par le retour de la chaîne de valeur du nœud dans l'
node-set est le premier dans l'ordre du document.
Vous devriez essayer de changer ce
[text()[contains(.,'Some text')]]
L'extérieur
[]
sont une condition qui fonctionne sur chaque noeuddans ce jeu de nœud
text()
est un sélecteur qui correspond à l'ensemble du textenœuds enfants du nœud contexte -- il retourne un nœud
ensemble.
L'intérieur
[]
sont une condition qui fonctionne sur chaque nœud quil'ensemble de nœuds.
contains
est une fonction qui fonctionne sur une chaîne. Ici, il est passéune personne nœud de texte (
.
).Utiliser cette
OU
Cette approche de travail pour vous, je l'espère.