【发布时间】:2012-06-30 09:39:39
【问题描述】:
我正在尝试使用 Selenium WebDriver 将文本输入到具有默认文本“输入用户 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">
在我单击它并手动为其赋予焦点后,默认文本和“空”类将被删除。
如果更改导致空白文本字段,则setDefaultText() 的 JS 将同时调用 onBlur() 和 onChange()。猜猜这就是searchField.clear() 没有帮助的原因。
我也在调试模式下逐步完成了这个方法,在这种情况下,它永远不会起作用。正常运行时,它大部分时间都在工作。不过,我不能说为什么。
【问题讨论】:
-
能否发一份该控件的HTML,有没有与该控件交互的javascript?
-
input中的默认文本是来自placeholderHTML5 属性,还是有某种onfocus和onblurJavaScript?
标签: java gwt selenium webdriver