Con un semplice richiamo di clear () appare nel DOM che il componente input / textarea corrispondente ha ancora il suo vecchio valore, quindi eventuali successive modifiche su quel componente (es. Riempire il componente con un nuovo valore) non verranno elaborate in tempo.
Se dai un'occhiata al codice sorgente del selenio, scoprirai che il metodo clear () - è documentato con il seguente commento:
/ ** Se questo elemento è un elemento di immissione testo, questo cancellerà il valore. Non ha alcun effetto su altri elementi. Gli elementi di immissione testo sono INPUT e TEXTAREA. Tieni presente che gli eventi generati da questo evento potrebbero non essere quelli previsti. In particolare, non generiamo eventi da tastiera o mouse. Se vuoi assicurarti che gli eventi della tastiera vengano attivati, considera l'utilizzo di qualcosa come {@link #sendKeys (CharSequence ...)} con il tasto backspace. Per assicurarti di ricevere un evento di modifica, considera di seguire con una chiamata a {@link #sendKeys (CharSequence ...)} con il tasto Tab. * /
Quindi, usando questo utile suggerimento per cancellare un input / textarea (componente che ha già un valore) E assegnargli un nuovo valore, otterrai un codice come il seguente:
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;
}
Ci scusiamo per questo codice essendo Java e non Python. Inoltre, ho dovuto saltare un ulteriore metodo "waitUntilPageIsReady () - che renderebbe questo post troppo lungo.
Spero che questo ti aiuti nel tuo viaggio con Selenium!