isaac
Tengo algunas pruebas en las que verifico que aparezca el mensaje de error correcto cuando el texto en ciertos campos no es válido. Una verificación de validez es que cierto elemento de área de texto no esté vacío.
Si esta área de texto ya tiene texto, ¿cómo puedo decirle a Selenium que borre el campo?
algo como:
driver.get_element_by_id('foo').clear_field()
isaac
driver.find_element_by_id('foo').clear()
-
Esto no me funciona en la versión más reciente de Selenium.
– Unión de encontrar
29 de septiembre de 2014 a las 0:51
-
youp chromedriver también se rompe en este. La respuesta de Fenix funciona en todas partes
– norbertas.gaulia
08/09/2015 a las 18:10
-
Puede ser un problema con las versiones conflictivas de selenium y chromedriver. Parece poco probable que los desarrolladores eliminen esta funcionalidad de Chromedriver deliberadamente.
– isaac
12/09/2015 a las 15:25
-
Por el momento, esta respuesta no funciona correctamente en las aplicaciones React, ya que está claro que no hará que se active la función React onChange. Por lo tanto, su entrada se borrará y las pruebas continuarán y el estado de su componente permanecerá como estaba antes. problema de reacción, problema de selenio
– ncrmro
24 de abril de 2017 a las 12:49
-
@ncrmro 3 años después, parece que esto todavía no funciona
– huella
3 abr 2020 a las 15:44
Fénix
Opción a)
Si desea asegurarse de que se activen los eventos del teclado, considere usar sendKeys(CharSequence)
.
Ejemplo 1:
from selenium.webdriver.common.keys import Keys
# ...
webElement.sendKeys(Keys.CONTROL + "a")
webElement.sendKeys(Keys.DELETE)
Ejemplo 2:
from selenium.webdriver.common.keys import Keys
# ...
webElement.sendKeys(Keys.BACK_SPACE) //do repeatedly, e.g. in while loop
elemento web
Hay muchas formas de obtener el WebElement requerido, por ejemplo:
- controlador.find_element_by_id
- controlador.find_element_by_xpath
- conductor.find_element
Opción b)
webElement.clear()
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 disparamos ningún evento de teclado o mouse.
-
Cuando use CTRL+’a’, considere la situación en la que la prueba se ejecutará en MacOS (otros métodos abreviados de teclado). Por cierto, buena sugerencia, resolvió mi problema.
– Caja_fuera
15 de enero de 2018 a las 11:17
-
Mi problema resuelto por “Keys.BACK_SPACE”. Solo capturo el campo de prueba de búsqueda, ejecuto .click() y luego dentro de un ciclo for ejecuto el código. elimina todos los fletadores que tenía el campo de búsqueda anteriormente. luego envíe un nuevo valor al campo de búsqueda. Simplemente la función .clear() no funcionaba para mí.
– Noman_ibrahim
20 de junio de 2019 a las 7:45
-
solo ayudó
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
en mi extraño caso– Chaki_Black
27 sep 2019 a las 16:20
-
from selenium.webdriver.common.keys import Keys
solo para facilitar las cosas a los recién llegados.– Burak Kaymakci
9 sep 2020 a las 15:27
-
Enviando
Keys.CONTROL + 'a'
funcionó para mí hasta ahora, parece que algo ha cambiado en Chrome o en Selenium, por lo que ahora solo envía un carácter ‘a’ a mi text_field que no es deseado. Cambiado aelement.clear()
y ahora funciona perfectamente con una línea de código en lugar de 2, ¡gracias!– Rodikno
24 de febrero de 2021 a las 14:09
Jortega
Me encontré con un campo donde .clear() no funcionó. Usar una combinación de las dos primeras respuestas funcionó para este campo.
from selenium.webdriver.common.keys import Keys
#...your code (I was using python 3)
driver.find_element_by_id('foo').send_keys(Keys.CONTROL + "a")
driver.find_element_by_id('foo').send_keys(Keys.DELETE)
-
Cuál es el
;
para otra vez?– huella
3 abr 2020 a las 15:23
-
@surfer190
;
no es necesario en python. Lo agregué por accidente. Buena atrapada.– Jortega
3 abr 2020 a las 22:53
-
driver.find_element_by_id('foo').send_keys(...)
es la misma solución comowebElement.send_keys(...)
Quedriver.find_element_by_id()
es una forma de devolver WebElement. Puede usar otra forma de ubicar un elemento.– Fénix
30 de diciembre de 2020 a las 17:50
En la versión más reciente de Selenium, use:
driver.find_element_by_id('foo').clear()
m0h17
En mi experiencia, este resultó ser el más eficiente
driver.find_element_by_css_selector('foo').send_keys(u'\ue009' + u'\ue003')
Estamos enviando Ctrl + Retroceso para eliminar todos los caracteres de la entrada, también puede reemplazar el retroceso con eliminar.
EDITAR: dependencia de claves eliminada
-
Esto funciona con Python 3.9, la última versión de los navegadores y el último selenio.
– Arun
10 de junio a las 12:13
gitaoh
Entretenido selenio==3.141.0 y no se porque
WebElement.clear()
no está trabajando.
solía
WebElement.send_keys(Keys.CONTROL, 'a')
WebElement.send_keys(Keys.DELETE)
Lo cual funcionó perfectamente para mí.
-
Esto funciona con Python 3.9, la última versión de los navegadores y el último selenio.
– Arun
10 de junio a las 12:13
vaibhavcool20
para Java
driver.findelement(By.id('foo').clear();
o
webElement.clear();
Si este elemento es un elemento de entrada de texto, esto borrará el valor.
Lo encontré driver.get_element_by_id(‘foo’).clear()
– isaac
11/10/2011 a las 20:35
9 años después, y todavía es sorprendentemente común usar lo obvio
input_field.clear
y tenerlo… noclear
lainput_field
. Sin una buena razón. San Isidoro ayúdanos.– phtrivier
17 de febrero de 2021 a las 17:24