25

我想删除文本框的默认值以输入新值,但我不知道该怎么做。

我当时想使用CTRL+a然后Delete但我不知道该怎么做。

我什至使用了 WebDriver 的命令driver.findElement("locator").clear();

4

11 回答 11

49

代码有帮助吗?因为您正在编写的代码应该这样做:

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

如果它没有帮助,那么试试这个:

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

也许你将不得不对Keys.CONTROL + "a"CharSequence 进行一些转换,但第一种方法应该会产生魔力

于 2012-05-29T13:18:53.223 回答
3

对于页面对象模型 -

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

现在在你的功能中

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

对于一般的硒架构 -

driver.findElement(By.xpath("//yourxpath")).clear();
driver.findElement(By.xpath("//yourxpath")).sendKeys("newText");
于 2015-03-20T18:40:07.360 回答
2

如果您正在寻找 Selenium RC 的解决方案,您可以简单地使用

// assuming 'selenium' is a healthy Selenium instance
selenium.type("someLocator", "");
于 2012-05-29T15:25:11.000 回答
2

您可以使用下面的代码。它选择字段中预先存在的值并用新值覆盖它。

driver.findElement(By.xpath("*enter your xpath here*")).sendKeys(Keys.chord(Keys.CONTROL, "a"),*enter the new value here*);
于 2016-06-23T13:54:07.113 回答
2

driver.findElement(locator).clear()- 此命令适用于所有情况

于 2018-05-15T06:46:36.153 回答
2

clear()对我不起作用。但这确实:

input.sendKeys(Keys.CONTROL, Keys.chord("a")); //select all text in textbox
input.sendKeys(Keys.BACK_SPACE); //delete it
input.sendKeys("new text"); //enter new text
于 2019-11-13T17:09:56.097 回答
1

以下函数将使用 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);
        });
      });
    }
于 2016-04-27T04:03:25.487 回答
1

这对我有用:

driver.findElement(yourElement).clear();
driver.findElement(yourelement).sendKeys("");
于 2016-10-26T10:06:25.770 回答
0

.clear() 可用于清除文本

  (locator).clear();

对定位器使用 clear 会删除该精确定位器中的所有值。

于 2017-09-06T09:20:06.780 回答
0

在软件测试服务中,这可以通过多种方式实现,上面显示的一些选项如下所示。

  • 使用 java 脚本

driver.executeScript("document.getElementByXpath('element').setAttribute('value', 'abc')");

使用动作类 Actions actions = new Actions(driver);

actions.click(driver.findElement(element) .keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).sendKeys(Keys.BACK_SPACE).build().perform());

于 2021-06-25T08:31:25.510 回答
0
actions = ActionChains(driver)
ak = driver.find_element_by_id('blogname')
actions.move_to_element(ak)
actions.click()
actions.key_down(Keys.CONTROL).send_keys('a').key_down(Keys.DELETE)
actions.perform()
于 2021-08-01T21:54:40.447 回答