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:
/ ** Jeśli ten element jest elementem wprowadzania tekstu, spowoduje to wyczyszczenie wartości. Nie ma wpływu na inne elementy. Elementy wprowadzania tekstu to elementy INPUT i TEXTAREA. 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 {@link #sendKeys (CharSequence ...)} z klawiszem Backspace. Aby zapewnić otrzymanie zdarzenia zmiany, rozważ wykonanie wywołania {@link #sendKeys (CharSequence ...)} za pomocą klawisza tabulatora. * /
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:
public void waitAndClearFollowedByKeys(By by, CharSequence keys) {
LOG.debug("clearing element");
wait(by, true).clear();
sendKeys(by, Keys.BACK_SPACE.toString() + keys);
}
public void sendKeys(By by, CharSequence keysToSend) {
WebElement webElement = wait(by, true);
LOG.info("sending keys '{}' to {}", escapeProperly(keysToSend), by);
webElement.sendKeys(keysToSend);
LOG.info("keys sent");
}
private String escapeProperly(CharSequence keysToSend) {
String result = "" + keysToSend;
result = result.replace(Keys.TAB, "\\t");
result = result.replace(Keys.ENTER, "\\n");
result = result.replace(Keys.RETURN, "\\r");
return result;
}
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!