Jak mogę konsekwentnie usuwać domyślny tekst z elementu wejściowego za pomocą Selenium?

Próbuję użyć Selenium WebDriver do wprowadzenia tekstu do elementu wejściowego GWT, który ma domyślny tekst „Wprowadź ID użytkownika”. Oto kilka sposobów, w jaki próbowałem to uruchomić:

        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);

Dziwne jest to, że powyższe działa tylko przez pewien czas. Czasami kończy się szukaniem „Enter User IDus”, zaczynając od wpisania „username” po domyślnym tekście - i nawet nie kończąc tego.

Wszelkie inne lepsze, bardziej niezawodne sposoby usuwania domyślnego tekstu z elementu GWT?

Edytowane, aby dodać: HTML elementu wejściowego. Niestety, nie ma wiele do zobaczenia, dzięki uprzejmości JS / GWT. Oto pole, które nie jest zaznaczone:

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

Po kliknięciu i ręcznym ustawieniu ostrości domyślny tekst i „pusta” klasa zostają usunięte.

JS dosetDefaultText() zostaje obu nazwanyonBlur() ionChange() jeśli zmiana spowoduje puste pole tekstowe. Zgadnij, dlaczegosearchField.clear() nie pomaga.

Przechodziłem również przez tę metodę w trybie debugowania iw takim przypadku nigdy nie działa. Gdy działa normalnie, działa przez większość czasu. Nie mogę jednak powiedzieć dlaczego.

questionAnswers(4)

yourAnswerToTheQuestion