2011-10-11 13 views
85

Mam kilka testów, w których sprawdzam, czy odpowiedni komunikat o błędzie pojawia się, gdy tekst w niektórych polach jest nieprawidłowy. Jedną z weryfikacji poprawności jest to, że określony element pola tekstowego nie jest pusty.Wyczyść tekst z textarea z selenem

Jeśli ten tekst ma już w sobie tekst, to w jaki sposób mogę powiedzieć selenowi, aby wyczyścił pole?

coś takiego:

driver.get_element_by_id('foo').clear_field() 
+1

Znalazłem go, RTFSourceCode :) driver.get_element_by_id ('foo'). Clear() – Isaac

Odpowiedz

118
driver.find_element_by_id('foo').clear() 
+2

To nie działa na mnie w najnowszej wersji selenu. –

+0

youp chromedriver również zrywa z tym. Odpowiedź Fenix ​​działa wszędzie –

+1

Może to być problem ze sprzecznymi wersjami selenu i chromowanej wersji. Wydaje się mało prawdopodobne, aby deweloperzy usunęli tę funkcję z deliktownego chromowania. – Isaac

11

W najnowszej wersji selen, zastosowanie:

driver.find_element_by_id('foo').clear() 
+0

.clear () jest tu ważną częścią, ale dobrym chwytem :) – Isaac

+0

Druga odpowiedź została zredagowana po mojej;) @ whackamadoodle3000 –

30

Można użyć

webElement.clear(); 

JavaDoc:

Jeśli ten element jest elementem wprowadzania tekstu, spowoduje to wyczyszczenie wartości.

Pamiętaj, że zdarzenia wystrzeliwane przez to wydarzenie mogą być inne niż oczekiwane. W szczególności nie uruchamiamy żadnych zdarzeń związanych z klawiaturą lub myszą. Jeśli chcesz się upewnić, że zdarzenia na klawiaturze są uruchomione, rozważ użycie czegoś takiego jak sendKeys(CharSequence). Np .:

WebElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop 

czyli

webElement.sendKeys(Keys.CONTROL + "a"); 
WebElement.sendKeys(Keys.DELETE); 
+0

Używając CTRL + "a" rozważ sytuację, gdy test będzie działał na MacOS (inne skróty klawiszowe). Btw - dobra sugestia, rozwiązał mój problem. –

1

jest składnia ogólnie

driver.find_element_by_id('Locator value').clear(); 
driver.find_element_by_name('Locator value').clear(); 
0

Java

driver.findelement(By.id('foo').clear(); 

lub

webElement.clear(); 

Jeśli ten element jest elementem wprowadzania tekstu, spowoduje to wyczyszczenie wartości.