comment supprimer les valeurs par défaut dans le champ de texte en utilisant le sélénium?

je veux supprimer une valeur par défaut d'une zone de texte pour entrer la nouvelle valeur, mais je ne reçois pas comment faire.

je pensais utiliser CTRL+ et Supprimer mais je ne sais pas comment faire.

j'ai même utilisé la commande de WebDriver driver.findElement("locator").clear();.

21
demandé sur Petr Janeček 2012-05-29 17:05:51

8 réponses

si vous cherchez une solution à partir de Selenium RC, vous pouvez utiliser simplement

// assuming 'selenium' is a healthy Selenium instance
selenium.type("someLocator", "");
2
répondu Petr Janeček 2012-05-29 15:25:11

Et le code utile? Parce que le code que vous écrivez doit faire la chose:

driver.findElement("locator").clear();

Si cela n'aide pas, alors essayez ceci:

WebElement toClear = driver.findElement("locator");
toClear.sendKeys(Keys.CONTROL + "a");
toClear.sendKeys(Keys.DELETE);

peut-être que vous aurez à faire un convertir de l' Keys.CONTROL + "a" à CharSequence, mais la première approche devrait faire la magie

38
répondu Pavel Janicek 2012-05-29 13:18:53

Pour la page modèle objet -

 @FindBy(xpath="//foo")
   public WebElement textBox;

maintenant, dans votre fonction

 public void clearExistingText(String newText){
    textBox.clear();
    textBox.sendKeys(newText);
  }

pour le général de sélénium architecture -

driver.findElement(By.xpath("//yourxpath")).clear();
driver.findElement(By.xpath("//yourxpath")).sendKeys("newText");
3
répondu Shek 2017-10-18 14:24:39

Vous pouvez utiliser le code ci-dessous. Il sélectionne la valeur pré-existante dans le champ et l'écrase avec la nouvelle valeur.

driver.findElement(By.xpath("*enter your xpath here*")).sendKeys(Keys.chord(Keys.CONTROL, "a"),*enter the new value here*);
2
répondu Eric Fernandes 2016-06-23 13:54:07

la fonction suivante supprimera le caractère d'entrée un par un jusqu'à ce que le champ d'entrée soit vide en utilisant PromiseWhile

driver.clearKeys = function(element, value){
  return element.getAttribute('value').then(function(val) {
    if (val.length > 0) {
      return new Promise(function(resolve, reject) {
        var len;
        len = val.length;
        return promiseWhile(function() { 
          return 0 < len;
        }, function() {
          return new Promise(function(resolve, reject) {
            len--;
            return element.sendKeys(webdriver.Key.BACK_SPACE).then(function()              {
              return resolve(true);
            });
          });
        }).then(function() {
          return resolve(true);
        });
      });
    }
1
répondu uri wald 2016-04-27 04:03:25

Cela a fonctionné pour moi:

driver.findElement(yourElement).clear();

driver.findElement(yourelement).sendKeys("");

1
répondu kljaksa 2016-10-26 21:37:53

.clear() peut être utilisée pour effacer le texte

  (locator).clear();

clair avec le localisateur supprime tous la valeur exacte de localisation.

0
répondu Sanju Abel 2017-09-06 09:20:06

driver.findElement(locator).clear() - Cette commande fonctionne dans tous les cas

0
répondu dom thomas 2018-05-15 10:30:59