Я пытаюсь использовать Selenium WebDriver для ввода текста в элемент ввода 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);
Странно то, что вышесказанное работает только иногда. Иногда это заканчивается поиском «Введите идентификатор пользователя», в основном начиная вводить «имя пользователя» после текста по умолчанию --и даже не заканчивая это.
Есть ли другие лучшие и более надежные способы удаления текста по умолчанию из элемента GWT?
Отредактировано для добавления:HTML элемента ввода. К сожалению, из-за популярности JS/GWT здесь особо не на что смотреть. Вот поле, когда оно не выбрано:
<input type="text" class="gwt-TextBox empty" maxlength="40">
После того, как я щелкнул по нему и сфокусировал его вручную, текст по умолчанию и «пустой» класс удаляются.
JS для setDefaultText()
вызывается как onBlur()
, так и onChange()
, если изменение приводит к пустому текстовому полю. Думаю, поэтому searchField.clear()
не помогает.
Я также использовал этот метод в режиме отладки, и в этом случае он никогда не работает. При нормальном запуске он работает большую часть времени. Я не могу сказать, почему.