Ich habe einige Tests, bei denen ich überprüfe, ob die richtige Fehlermeldung angezeigt wird, wenn Text in bestimmten Feldern ungültig ist. Eine Überprüfung der Gültigkeit besteht darin, dass ein bestimmtes Textbereichselement nicht leer ist.
Wenn dieser Textbereich bereits Text enthält, wie kann ich Selen anweisen, das Feld zu löschen?
etwas wie:
driver.get_element_by_id('foo').clear_field()
Antworten:
quelle
Sie können verwenden
Wenn dieses Element ein Texteingabeelement ist, wird der Wert gelöscht.
Beachten Sie, dass die von diesem Ereignis ausgelösten Ereignisse möglicherweise nicht den Erwartungen entsprechen. Insbesondere lösen wir keine Tastatur- oder Mausereignisse aus. Wenn Sie sicherstellen möchten, dass Tastaturereignisse ausgelöst werden, sollten Sie Folgendes verwenden
sendKeys(CharSequence)
. Z.B:oder:
quelle
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
in meinem seltsamen Fall geholfenIch bin auf ein Feld gestoßen, in dem .clear () nicht funktioniert hat. Die Verwendung einer Kombination der ersten beiden Antworten funktionierte für dieses Feld.
quelle
;
nochmal?;
ist in Python nicht erforderlich. Ich habe es versehentlich hinzugefügt. Guter Fang.Verwenden Sie in der neuesten Selenium-Version:
quelle
für Java
oder
Wenn dieses Element ein Texteingabeelement ist, wird der Wert gelöscht.
quelle
Es ist eine allgemeine Syntax
quelle
Mit einem einfachen Aufruf von clear () wird im DOM angezeigt, dass die entsprechende Eingabe- / Textbereichskomponente noch ihren alten Wert hat, sodass alle folgenden Änderungen an dieser Komponente (z. B. Füllen der Komponente mit einem neuen Wert) nicht rechtzeitig verarbeitet werden.
Wenn Sie sich den Selen-Quellcode ansehen, werden Sie feststellen, dass die clear () - Methode mit dem folgenden Kommentar dokumentiert ist:
Wenn Sie diesen hilfreichen Hinweis verwenden, um einen Eingabe- / Textbereich (Komponente, die bereits einen Wert hat) zu löschen UND ihm einen neuen Wert zuzuweisen, erhalten Sie Code wie den folgenden:
Entschuldigen Sie, dass dieser Code Java und nicht Python ist. Außerdem musste ich eine zusätzliche "waitUntilPageIsReady () - Methode überspringen, die diesen Beitrag viel zu lang machen würde.
Hoffe das hilft dir auf deiner Reise mit Selen!
quelle
Nach meiner Erfahrung erwies sich dies als die effizienteste
Wir senden Strg + Rücktaste, um alle Zeichen aus der Eingabe zu löschen. Sie können auch die Rücktaste durch Löschen ersetzen.
BEARBEITEN: Schlüsselabhängigkeit entfernt
quelle
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
hat super mit FireFox funktioniertquelle