es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionar un elemento de una lista desplegable utilizando selenium y request- python.

Estoy intentando llenar un formulario. Aquí está el HTML para la lista desplegable:



Estoy utilizando el siguiente código para hacer clic en Riyadh en la lista desplegable. Pero estoy recibiendo un error:

wait = WebDriverWait(driver, 10)

dropdown = wait.until(EC.visibility_of_element_located((By.XPATH, “/html/body/div[1]/form/div[5]/select”)))
ActionChains(driver).move_to_element(dropdown).perform()
wait
city = wait.until(EC.visibility_of_element_located((By.XPATH, “/html/body/div[1]/form/div[5]/select/option[5]”)))
ActionChains(driver).move_to_element(city).click().perform()

El error que recibo es el siguiente:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: move target out of bounds

¿Alguien puede ayudarme con cómo hacer clic en la lista desplegable?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el elemento objetivo se encuentra fuera del área visible de la ventana del navegador. Una forma de hacer frente a esto es desplazarse hasta el elemento antes de hacer clic en él. Aquí hay una versión actualizada de su código que incluye desplazamiento:

    wait = WebDriverWait(driver, 10)
    dropdown = wait.until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[1]/form/div[5]/select")))
    ActionChains(driver).move_to_element(dropdown).perform()
    driver.execute_script("arguments[0].scrollIntoView();", dropdown)
    city = wait.until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[1]/form/div[5]/select/option[5]")))
    ActionChains(driver).move_to_element(city).click().perform()
    

    La primera acción move_to_element simplemente mueve el cursor al elemento de la lista desplegable. El método scrollIntoView agregado a driver.execute_script desplaza la ventana para hacer visible la lista desplegable. El resto del código es el mismo.

Comments are closed.