Comment puis-je sélectionner cet élément span?
Je commence tout juste avec le Sélénium et maintenant dans le besoin afin de sélectionner cet élément:
<span class=" close">Matrices</span>
Cette ligne de code renvoie zéro éléments, donc je suppose que ce n'est pas la bonne 🙂
ReadOnlyCollection<IWebElement> matrixLink = driver.FindElements(By.PartialLinkText("Matrices"));
Mais je ne pouvais pas trouver un autre adapté, en plus de la Xpath, mais qui ressemble à ceci (//*[@id=\"Navigation\"]/div[2]/div[2]/ul/li[7]/span
), et qui semble un peu fragile pour moi?
MODIFIER:
la plage a la classe 'fermer'.
Il fait partie d'un menu, où il y a 19 span avec la classe "fermer" il n'est donc pas un unique sélecteur malheureusement....
- de sorte que la durée a une classe vide?
- Ah, bon, il n'a PAS, il n'a pas de classe lors d'un clic sur ce, je vais modifier la question. Cependant, il est un élément de menu, et je l'ai vérifié: j'ai 19 span (éléments de menu) avec la classe "fermer" et cliqué sur le point a 'fermer' classe retirés.
- Ne
//*[@id=\"Navigation\"]/descendant::span[text()='Matrices']
travail? - Je vais vérifier, voir si cela fonctionne
- est-il exact que la PartialLinkText ne donne pas de résultat? Est le PartialLinkText pas adapté pour cela?
- Oui, ça fonctionne! Donc, je devrais travailler sur mon xpath ou vérifier avec selenium IDE...
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne:
Noter que si vous le pouvez, d'être précis dans vos requêtes XPath, principalement à l'aide de la lisibilité et d'améliorer les performances...qui est le
*
dans votre requête requête tous les éléments dans la page. Je ne sais pas quel type d'élément de la de Navigation élément est, mais vous devriez le mettre exacte de ce type d'élément, par exemple si c'est un div, faire:Une légère explication pour cette XPath est qu'il va saisir la
Navigation
élément, et il suffit de regarder n'importe où à l'intérieur il de trouver unspan
élément qui a le texte deMatrices
. Sans ledescendant
peu dans le XPath, il serait seulement à la recherche d' enfants directs. Cela signifie que les éléments qu'un enfant deNavigation
, rien d'autre - de sorte que si un élément est un enfant deTestDiv
qui est un enfant deNavigation
,descendant
allait l'attraper, sans elle, vous ne retournera aucun résultat.Comme pour pourquoi
By.PartialLinkText
ne fonctionnerait pas, ce serait seulement à la recherche d'ancre des liens. Il est commun, comme vous avez vu, que les liens d'ancrage ont unspan
élément à l'intérieur d'eux, ou parfois c'est juste unespan
sur son propre.By.PartialLinkText
et de mêmeBy.LinkText
ne serait pas "voir" cet élément, car il n'est pas un point d'ancrage de l'élément.<a>
,<span>
n'est pas admissible.id('Navigation')//span[text()='Matrices']
(le premier appel de fonction étant le XPathid()
la fonction//
être raccourci pour::descendant-or-self::
qui dans le cas général (il y a une exception) est utilisable au lieu de simplementdescendant::
, parce que c'est plus court).Mon préféré solutionneur de problème pour ces cas:
Mais je voudrais utiliser l'approche, que sa N-ième élément avec les "proches" de la classe (
//span[7]
ou quelque chose comme ça)Vous pouvez utiliser //span[text()='Matrices']
Il sera sélectionnez votre élément.