如何使用Selenium始终从输入元素中删除默认文本?

我正在尝试使用Selenium WebDriver将文本输入具有默认文本“ Enter User ID”的GWT输入元素。以下是我尝试使其工作的几种方法:

        searchField.click();

if(!searchField.getAttribute("value").isEmpty()) {

// clear field, if not already empty

searchField.clear();

}

if(!searchField.getAttribute("value").isEmpty()) {

// if it still didn't clear, click away and click back

externalLinksHeader.click();

searchField.click();

}

searchField.sendKeys(username);

奇怪的是,上面这仅在某些时间有效。有时,它最终会搜索“输入用户IDus”,基本上是在默认文本后开始键入“用户名”,甚至没有完成。

还有其他更好,更可靠的方法来清除GWT元素中的默认文本吗?

输入元素的HTML。不幸的是,由于JS / GWT的热度,没有太多可看的东西。未选中时的字段如下:

<input type="text" class="gwt-TextBox empty" maxlength="40">

单击它并将其手动聚焦后,将删除默认文本和“空”类。

如果更改导致空文本字段,则JS

setDefaultText()会同时调用。猜猜这就是为什么没有帮助的原因。onBlur()``onChange()``searchField.clear()

我也在调试模式下逐步完成了该方法,在那种情况下,它永远无法工作。正常运行时,大部分时间都可以运行。我不能说为什么。

回答:

好的,当clear()方法清除input并将其留空时,脚本显然会启动。它提出的解决方案如下。

  1. 天真,按Backspace10次​​:
    String b = Keys.BACK_SPACE.toString();

    searchField.sendKeys(b+b+b+b+b+b+b+b+b+b + username);

(可以StringUtils.repeat()从Apache

Commons Lang或Google Guava Strings.repeat()派上用场)

  1. 在一个更好的使用Ctrl+ ADelete

    String del = Keys.chord(Keys.CONTROL, "a") + Keys.DELETE;

    searchField.sendKeys(del + username);

  2. input通过JavaScript 删除内容:

    JavascriptExecutor js = (JavascriptExecutor)driver;

    js.executeScript(“arguments[0].value = ‘’;”, searchField);

    searchField.sendKeys(username);

  3. input完全通过JavaScript 设置via 的值:

    JavascriptExecutor js = (JavascriptExecutor)driver;

    js.executeScript(“arguments[0].value = ‘” + username + “’;”, searchField);

以上是 如何使用Selenium始终从输入元素中删除默认文本? 的全部内容, 来源链接: utcz.com/qa/422169.html

回到顶部