J'ai quelques tests où je vérifie que le message d'erreur approprié apparaît lorsque le texte de certains champs n'est pas valide. Un contrôle de validité est qu'un certain élément textarea n'est pas vide.
Si cette zone de texte contient déjà du texte, comment puis-je dire au sélénium d'effacer le champ?
quelque chose comme:
driver.get_element_by_id('foo').clear_field()
Réponses:
la source
Vous pouvez utiliser
Si cet élément est un élément d'entrée de texte, cela effacera la valeur.
Notez que les événements déclenchés par cet événement peuvent ne pas être comme prévu. En particulier, nous ne déclenchons aucun événement clavier ou souris. Si vous voulez vous assurer que les événements de clavier sont déclenchés, pensez à utiliser quelque chose comme
sendKeys(CharSequence)
. Par exemple:ou:
la source
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
dans mon cas étrangeJe suis tombé sur un champ où .clear () ne fonctionnait pas. L'utilisation d'une combinaison des deux premières réponses a fonctionné pour ce domaine.
la source
;
pour encore?;
n'est pas nécessaire en python. Je l'ai ajouté par accident. Bonne prise.Dans la version la plus récente de Selenium, utilisez:
la source
pour java
ou
Si cet élément est un élément d'entrée de texte, cela effacera la valeur.
la source
C'est une syntaxe générale
la source
Avec un simple appel de clear (), il apparaît dans le DOM que le composant input / textarea correspondant a toujours son ancienne valeur, donc toutes les modifications suivantes sur ce composant (par exemple, remplir le composant avec une nouvelle valeur) ne seront pas traitées à temps.
Si vous regardez dans le code source du sélénium, vous constaterez que la méthode clear () est documentée avec le commentaire suivant:
Donc, en utilisant cette astuce utile pour effacer une zone d'entrée / de texte (composant qui a déjà une valeur) ET lui attribuer une nouvelle valeur, vous obtiendrez un code comme celui-ci:
Désolé pour ce code étant Java et non Python. En outre, j'ai dû sauter une méthode supplémentaire "waitUntilPageIsReady () () qui rendrait ce message trop long.
J'espère que cela vous aidera dans votre voyage avec Selenium!
la source
D'après mon expérience, cela s'est avéré être le plus efficace
Nous envoyons Ctrl + Retour arrière pour supprimer tous les caractères de l'entrée, vous pouvez également remplacer le retour arrière par supprimer.
EDIT: suppression de la dépendance des clés
la source
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
a très bien fonctionné avec FireFoxla source