Con una simple llamada de clear (), aparece en el DOM que el componente de entrada / área de texto correspondiente todavía tiene su valor anterior, por lo que los siguientes cambios en ese componente (por ejemplo, llenar el componente con un nuevo valor) no se procesarán a tiempo.
Si observa el código fuente de selenio, encontrará que el método clear () está documentado con el siguiente comentario:
/ ** Si este elemento es un elemento de entrada de texto, esto borrará el valor. No tiene efecto sobre otros elementos. Los elementos de entrada de texto son elementos INPUT y TEXTAREA. Tenga en cuenta que los eventos activados por este evento pueden no ser los esperados. En particular, no activamos ningún evento de teclado o mouse. Si desea asegurarse de que se activen los eventos del teclado, considere usar algo como {@link #sendKeys (CharSequence ...)} con la tecla de retroceso. Para asegurarse de obtener un evento de cambio, considere seguir con una llamada a {@link #sendKeys (CharSequence ...)} con la tecla de tabulación. * /
Entonces, utilizando esta sugerencia útil para borrar una entrada / área de texto (componente que ya tiene un valor) Y asignarle un nuevo valor, obtendrá un código como el siguiente:
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;
}
Lo siento, este código es Java y no Python. Además, tuve que omitir un método adicional "waitUntilPageIsReady () que haría que esta publicación fuera demasiado larga.
¡Espero que esto te ayude en tu viaje con Selenium!