web-dev-qa-db-fra.com

La commande selenium clear () n'efface pas l'élément

J'écris des scripts Selenium depuis un certain temps en Java. J'ai rencontré un problème très étrange aujourd'hui.

Voici le problème: j'ai effacé un champ de texte en utilisant la méthode webelement.clear (), plus tard lors de l'exécution de la commande suivante (événement de clic), la zone de texte que j'avais précédemment effacée, est maintenant remplie avec la valeur précédemment remplie.

Voici l'extrait de code:

mobileNumField.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).click();
emailAddress.get(0).clear();
Thread.sleep(4500);
emailAddress.get(0).sendKeys(Keys.TAB);
7

Il est possible que l'attribut autocomplete des champs que vous essayez de remplir soit activé. [Référence]

Si clear() fonctionne lorsque la ligne s'exécute, il est sûr de dire que ce n'est pas un problème spécifique au pilote Web.

Il serait utile que vous puissiez afficher l'extrait html de la section de page sur laquelle vous travaillez.

Domaines possibles de débogage:

  • supprimer avec force l'attribut de saisie semi-automatique au chargement de la page à l'aide de Java exécuteur de script
    • désactiver le paramètre de saisie semi-automatique au niveau du pilote. Je pense que la solution varierait en fonction du pilote utilisé.

      Bonne chance!

      PS: Ces Thread.sleep (s) ne sont pas recommandés.

  • 5
    iamkenos

    Je ne connais pas la raison exacte pour laquelle votre élément conserve sa valeur, mais vous pouvez essayer un nettoyage alternatif en envoyant les touches "Ctrl + A" et "Supprimer" à l'élément:

    emailAddress.sendKeys(Keys.chord(Keys.CONTROL,"a", Keys.DELETE));
    
    3
    AutomatedOwl

    Une autre façon qui a fonctionné pour moi en python, mais ce n'est pas ce que vous appelleriez élégant:

    for _ in range(4):
        risk_percentage.send_keys(Keys.BACK_SPACE)
    
    0
    surfer190

    Face à un problème similaire. Le champ de saisie est effacé mais le message d'erreur n'est pas mis à jour. Il semble que certains champs de saisie fonctionnent correctement uniquement si vous saisissez et supprimez un caractère:

    element.sendKeys(text);
    element.sendKeys(Keys.SPACE, Keys.BACK_SPACE);
    
    0
    Stepa_ua