Ich versuche Selenium WebDriver zu verwenden, um Text zu einem GWT-Eingabeelement einzugeben, das den Standardtext "Benutzer-ID eingeben" enthält. Hier sind ein paar Möglichkeiten, die ich habe versucht, dies zu Arbeit zu bekommen:Wie kann ich den Standardtext von einem Eingabeelement mit Selenium konsequent entfernen?
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 Merkwürdige des oben ist dies nur einen Teil der Zeit arbeitet. Manchmal endet die Suche nach "Enter User IDus", im Grunde beginnt "username" nach dem Standardtext zu tippen - und nicht einmal das zu beenden.
Gibt es noch bessere, zuverlässigere Möglichkeiten, Standardtext von einem GWT-Element zu löschen?
Bearbeitet zu hinzufügen: Der HTML-Code des Eingabeelements. Leider gibt es nicht viel zu sehen, dank der JS/GWT-Schärfe. Hier ist das Feld, wenn es nicht ausgewählt:
<input type="text" class="gwt-TextBox empty" maxlength="40">
Nachdem ich es geklickt haben und es den Fokus manuell angegeben, der Standardtext und die „leere“ Klasse werden entfernt.
Der JS zu setDefaultText()
wird sowohl onBlur()
als auch onChange()
aufgerufen, wenn die Änderung zu einem leeren Textfeld führt. Schätze, deshalb hilft die searchField.clear()
nicht.
Ich habe auch diese Methode im Debug-Modus durchlaufen, und in diesem Fall funktioniert es nie. Wenn es normal läuft, funktioniert es die meiste Zeit. Ich kann jedoch nicht sagen warum.
Können Sie eine Kopie der HTML-Code der Kontrollstelle, und gibt es eine Javascript, die mit der Steuerung zusammenwirkt? – Arran
Kommt der Standardtext in der 'input' aus einem 'placeholder'-HTML5-Attribut, oder gibt es eine Art' onfocus' und 'onblur' JavaScript? –