Mam kilka testów, w których sprawdzam, czy pojawia się właściwy komunikat o błędzie, gdy tekst w niektórych polach jest nieprawidłowy. Jednym ze sposobów sprawdzenia poprawności jest to, że określony element textarea nie jest pusty.
Jeśli ten obszar tekstowy zawiera już tekst, jak mogę powiedzieć selenowi, aby wyczyścił pole?
coś jak:
driver.get_element_by_id('foo').clear_field()
Odpowiedzi:
źródło
Możesz użyć
Jeśli ten element jest elementem wprowadzania tekstu, spowoduje to wyczyszczenie wartości.
Pamiętaj, że zdarzenia wywołane przez to zdarzenie mogą nie być zgodne z oczekiwaniami. W szczególności nie uruchamiamy żadnych zdarzeń związanych z klawiaturą ani myszą. Jeśli chcesz mieć pewność, że zdarzenia klawiatury są uruchamiane, rozważ użycie czegoś takiego jak
sendKeys(CharSequence)
. Na przykład:lub:
źródło
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
w moim dziwnym przypadkuWpadłem na pole, na którym .clear () nie działa. Użycie kombinacji dwóch pierwszych odpowiedzi zadziałało w tej dziedzinie.
źródło
;
znowu?;
nie jest konieczne w Pythonie. Dodałem to przypadkowo. Dobry chwyt.W najnowszej wersji Selenium użyj:
źródło
dla java
lub
Jeśli ten element jest elementem wprowadzania tekstu, spowoduje to wyczyszczenie wartości.
źródło
To jest składnia ogólna
źródło
Po prostym wywołaniu funkcji clear () w modelu DOM okazuje się, że odpowiedni komponent input / textarea nadal ma swoją starą wartość, więc wszelkie późniejsze zmiany w tym komponencie (np. Wypełnienie komponentu nową wartością) nie będą przetwarzane w czasie.
Jeśli spojrzysz na kod źródłowy selenu, zobaczysz, że metoda clear () - jest udokumentowana następującym komentarzem:
Korzystając z tej przydatnej wskazówki, aby wyczyścić dane wejściowe / obszar tekstowy (komponent, który już ma wartość) ORAZ przypisać mu nową wartość, otrzymasz kod podobny do następującego:
Przepraszamy, że ten kod to Java, a nie Python. Musiałem również pominąć dodatkową metodę „waitUntilPageIsReady ()”, która spowodowałaby, że ten post byłby zbyt długi.
Mam nadzieję, że pomoże Ci to w Twojej podróży z Selenium!
źródło
Z mojego doświadczenia wynika, że jest to najbardziej efektywne
Wysyłamy Ctrl + Backspace, aby usunąć wszystkie znaki z wejścia, możesz też zamienić Backspace na delete.
EDYCJA: usunięto zależność Keys
źródło
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
działał świetnie z FireFoxźródło