【问题标题】:How to clear the text within the text box?如何清除文本框中的文字?
【发布时间】:2018-12-24 11:31:16
【问题描述】:

webdriver clear() 没有清除现有文本

我尝试了clear(),但它不起作用,所以尝试了.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.BACK_SPACE)),但我的上级不希望我使用这些密钥。所以不确定如何清除文本?

元素的HTML:

<input name="Quantity_110787" type="number" min="0" ng-model="invoiceLine.quantity" class="form-control ng-pristine ng-valid ng-not-empty ng-valid-min ng-touched" ng-keypress="$ctrl.preventKey($event)" aria-invalid="false">

代码试验:

public void sendText(String text) {
        for (String control : controls) { 
        if(getWebDriver().findElement(By.cssSelector(control)).getAttribute("type").contains("number")) {
                getWebDriver().findElement(By.cssSelector(control)).sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.BACK_SPACE), text);
                break;
            }
        }

我希望清除文本字段,以便输入新文本。请帮忙。

【问题讨论】:

    标签: java selenium-webdriver xpath css-selectors webdriverwait


    【解决方案1】:

    这应该像@Dark Knight 所说的那样工作,

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

    尝试点击之前

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

    其他尝试使用 sendKeys

    driver.findElement("locator").click();
    driver.findElement("locator").sendKeys("");
    

    其他尝试JS:

    WebElement wb = driver.findElement("locator");
    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("arguments[0].value='';", wb);
    

    谢谢,

    【讨论】:

      【解决方案2】:

      试试这个方法。

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

      【讨论】:

      • 已经尝试过,但它不起作用,所以转移到 Keys。我的学长对 Keys 不满意。
      • 为什么要将答案设置为否定,这是基本的清除方法。如果这对您不起作用,并不意味着这不好。
      • @KishoreJawalkar 投稿人在这里发帖并不是为了让你的前辈高兴。这个平台只会帮助您解决方案/方法。
      • @DarkKnight 我知道这个平台,不想得到我知道的答案。所以我显然在寻找一些答案,而不是发布它。
      • @KishoreJawalkar 太好了。请确保继续前进,请确保您在帖子中不包含“我的前辈......”之类的术语。这不会为您的问题陈述增加任何价值
      【解决方案3】:

      所需元素是 Angular 元素,因此要调用 clear() 方法,您需要诱导 WebDriverwait 以使 元素可点击,您可以使用以下解决方案:

      • cssSelector:

        WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.form-control.ng-pristine.ng-valid.ng-not-empty.ng-valid-min.ng-touched[type='number'][name^='Quantity_']")));
        elem.click();
        elem.clear();
        
      • xpath:

        WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='form-control ng-pristine ng-valid ng-not-empty ng-valid-min ng-touched' and @type='number'][starts-with(@name, 'Quantity_')]")));
        elem.click();
        elem.clear();
        

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        相关资源
        最近更新 更多