Tengo algunas pruebas en las que compruebo que aparece el mensaje de error adecuado cuando el texto en ciertos campos no es válido. Una comprobación de validez es que cierto elemento de área de texto no está vacío.
Si este área de texto ya tiene texto, ¿cómo puedo decirle al selenio que borre el campo?
algo como:
driver.get_element_by_id('foo').clear_field()
Respuestas:
fuente
Puedes usar
Si este elemento es un elemento de entrada de texto, esto borrará el valor.
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
sendKeys(CharSequence)
. P.ej:o:
fuente
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
en mi extraño casoMe encontré con un campo donde .clear () no funcionaba. El uso de una combinación de las dos primeras respuestas funcionó para este campo.
fuente
;
de nuevo?;
no es necesario en python. Lo agregué por accidente. Buena atrapada.En la versión más reciente de Selenium, use:
fuente
para java
o
Si este elemento es un elemento de entrada de texto, esto borrará el valor.
fuente
Es sintaxis general
fuente
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:
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:
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!
fuente
En mi experiencia, este resultó ser el más eficiente
Estamos enviando Ctrl + Retroceso para eliminar todos los caracteres de la entrada, también puede reemplazar el retroceso con eliminar.
EDITAR: se eliminó la dependencia de Keys
fuente
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
funcionó muy bien con Firefoxfuente