Wie kann ich konsequent entfernen Sie den Standard-text aus einem input-element mit Selen?
Ich versuche, Selenium WebDriver, um die Eingabe von text ein GWT-input-element, Standard-text "Geben Sie Benutzer-ID". Hier sind ein paar Möglichkeiten, die ich habe versucht, diese zu arbeiten:
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 ist das oben funktioniert dies nur, wenn Sie einige Zeit. Manchmal endet die Suche nach "User-IDU", im Grunde Beginn geben Sie "Benutzernamen" nach dem Standard-text -- und auch nicht bei der Fertigstellung, dass die.
Andere besser, zuverlässiger Weise zu leeren default-text aus einer GWT-element?
Bearbeitet, um hinzufügen: Die HTML des input-Elements. Leider gibt es nicht viel zu sehen, Dank der JS/GWT Schärfe. Hier ist das Feld, wenn es deaktiviert:
<input type="text" class="gwt-TextBox empty" maxlength="40">
Nachdem ich es angeklickt und manuell fokussieren, der Standard-text und die "leere" Klasse entfernt werden.
Den JS zu setDefaultText()
wird aufgerufen, sowohl onBlur()
und onChange()
wenn die änderung das Ergebnis in eine leere text-Feld. Denke, das ist, warum die searchField.clear()
ist nicht zu helfen.
Habe ich auch Durchlaufen diese Methode in den debug-Modus, und in diesem Fall funktioniert es nie. Wenn Sie normal läuft, arbeitet die Mehrheit der Zeit. Ich kann nicht sagen warum, obwohl.
- Können Sie eine Kopie der HTML-Code der Steuerung, und ist es, dass javascript interagiert mit der Kontrolle?
- Stellt die Standard-text in der
input
kommen aus einerplaceholder
HTML5-Attribut, oder ist es eine Artonfocus
undonblur
JavaScript?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, das Skript offensichtlich tritt ein, wenn die
clear()
- Methode löscht dieinput
und lässt es leer. Die Lösungen, die Sie kam mit sind unten angegeben.Den naiven ein, drückt Backspace 10 mal:
(
StringUtils.wiederholen()
von Apache Commons Lang oder Google Guava istStrings.wiederholen()
kann in handliches kommen)Den schöneren man mit Strg+A, Löschen:
Löschen den Inhalt der
input
via JavaScript:Einstellung der Wert der
input
via JavaScript insgesamt:Beachten Sie, dass die javascript ist möglicherweise nicht immer arbeiten, wie hier gezeigt: Warum kann ich nicht klar ein input Feld mit javascript?
Für was es Wert ist ich bin ein sehr ähnliches Problem. WebDriver 2.28.0 und FireFox 18.0.1
Ich bin auch mit GWT aber es reproduzieren können mit einfachen HTML/JS:
Dieser test fehlschlägt, die meiste Zeit:
Könnte es einfach sein das OS nehmen Fokus Weg vom browser in einer Weise, WebDriver nicht kontrollieren können. Wir scheinen nicht, um dieses Problem auf dem CI-server vielleicht ist das auch der Fall.
Kann ich nicht ein Kommentar noch, also ich Stelle es als Antwort hier. Ich möchte Sie darüber informieren, dass, wenn Sie verwenden möchten, nur, javascript zu deaktivieren und/oder Bearbeiten ein input-text-Feld, dann wird der javascript-Ansatz gegeben @slanec wird nicht funktionieren. Hier ist ein Beispiel: Warum kann ich nicht klar ein input Feld mit javascript?