Le sélénium Sélectionnez - Sélection d'une option de liste déroulante de la partie du texte
La classe Le Sélénium Sélectionnez a 3 méthodes de différentes option de sélection:
- selectByIndex
- selectByValue
- selectByVisibleText
Maintenant, j'ai une situation où je veux sélectionner une option par le texte qui partiellement apparaître dans l'un des options de texte visible (ne veux pas m'exposer à des changements dans l'ENSEMBLE du texte).
Par exemple:
<option value="0" label="not-intresting">VERY-LONG-TEXT-THAT-I-NEED-TO-SELECT-DOLLAR</option>
Et je veux sélectionner cette option uniquement en fournissant le "DOLLAR", quelque chose comme:
select.selectByPartOfVisibleText("DOLLAR")
Comment voulez-vous mettre en œuvre efficacement?
- Si seulement partielle du texte est visible et vous pouvez utiliser les regex alors le voir, cette question - stackoverflow.com/questions/28817563/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer une logique comme cela, espérons que cette aide
text-content
attribut, mais dans le cas des OP cas, il ne le fait pas.Ma solution est d'utiliser xpath pour trouver des options qui sont les enfants de la sélectionner. Tout xpath méthode peut être utilisée pour trouver la sélection; dans cet exemple, je viens de trouver le sélectionner par id.
Après un peu plus de réflexion je me rends compte de l'option peut être trouvée entièrement avec xpath:
À L'Aide De Java 8 Stream/Lambda:
protected void selectOptionByPartText(WebElement select, String partialText) { Select s = new Select(select); s.getOptions() .stream() .filter(option -> option.getText().toLowerCase().contains(partialText.toLowerCase())) .findFirst() .ifPresent(option -> s.selectByValue(option.getAttribute("value"))); }
Obtenir une liste de tous les
option
valeurs et de vérifier ensuite si la valeur contient votre texte partiel. Quelque chose comme ceci:Finalement, j'ai combiné les réponses ici et voilà le résultat:
Et dans Scala (besoin, éventuellement, à la Scala), il ressemble:
C'est ce que j'ai utilisé pour résoudre le problème en python.
J'ai utilisé cette option, il sélectionne le texte qui utilise le mot
DOLLAR
au lieu de taper le mot en entier comme valeur.au lieu de