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