Wie kann ich mit Selenium den Standardtext aus einem Eingabeelement konsistent entfernen?

Ich versuche, mit Selenium WebDriver Text in ein GWT-Eingabeelement mit dem Standardtext "Benutzer-ID eingeben" einzugeben. Hier sind einige Möglichkeiten, wie ich versucht habe, dies zum Laufen zu bringen:

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

Das Seltsame ist, dass das oben nur manchmal funktioniert. Manchmal wird nach "Benutzer-ID eingeben" gesucht, und im Grunde beginnt nach dem Standardtext "Benutzername" einzugeben - und das noch nicht einmal zu Ende.

Gibt es noch andere bessere und zuverlässigere Möglichkeiten, um Standardtext aus einem GWT-Element zu entfernen?

Bearbeitet, um hinzuzufügen: Der HTML-Code des Eingabeelements. Leider gibt es dank der JS / GWT-Hotness nicht viel zu sehen. Hier ist das Feld, wenn es nicht ausgewählt ist:

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

Nachdem ich darauf geklickt und den Fokus manuell gesetzt habe, werden der Standardtext und die "leere" Klasse entfernt.

Der JS zusetDefaultText() wird beide genanntonBlur() undonChange() wenn die Änderung zu einem leeren Textfeld führt. Ich schätze deshalbsearchField.clear() hilft nicht.

Ich habe diese Methode auch im Debug-Modus durchlaufen, und in diesem Fall funktioniert es nie. Wenn es normal läuft, funktioniert es die meiste Zeit. Ich kann aber nicht sagen warum.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage