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.

Selenium no puede localizar el elemento.

Recibo el error que dice:
selenium.common.exceptions.NoSuchElementException: Mensaje: no existe tal elemento: incapaz de localizar el elemento: {"método":"xpath", "selector":"/html/body/div[2]/div/div/div/div[2]/div/div/div/div[2]/div/div/form/input"}

Estoy trabajando en este sitio web, https://new.igashop.com.au/. Lo que intento hacer es extraer la ciudad que deseo de la hoja de cálculo de Google y escribirla en la barra de búsqueda para poder acceder al sitio web de esa ciudad en particular. No puedo encontrar qué está mal en mi código. ¿Alguien podría darme algún consejo? Gracias.

driver = get_webdriver()
driver.delete_all_cookies()
driver.implicitly_wait(10)
driver.get("https://new.igashop.com.au/")
city = product_sheet.col_values(2)[index]
search_bar = driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div/div/div/div[2]/div/div/form/input')
search_bar.send_keys(city)
search_bar.send_keys(Keys.RETURN)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el selector XPath utilizado para localizar el elemento de la barra de búsqueda no es válido. Es posible que la estructura HTML del sitio web haya cambiado o que el selector XPath sea incorrecto.

    Para solucionar el problema, puedes intentar lo siguiente:

    1. Verifica la estructura HTML del elemento de la barra de búsqueda utilizando las herramientas de desarrollador del navegador para asegurarte de que el selector XPath sea correcto.
    2. Reemplaza el selector XPath con un selector CSS o utiliza un atributo diferente para localizar el elemento de la barra de búsqueda.

    3. Utiliza WebDriverWait en lugar de espera implícita para asegurarte de que el elemento esté presente en la página antes de interactuar con él.

    Aquí tienes un ejemplo de cómo utilizar WebDriverWait para localizar el elemento de la barra de búsqueda:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = get_webdriver()
    driver.delete_all_cookies()
    driver.get("https://new.igashop.com.au/")
    city = product_sheet.col_values(2)[index]
    search_bar = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='q']"))
    )
    search_bar.send_keys(city)
    search_bar.send_keys(Keys.RETURN)
    

    En este ejemplo, se utiliza un selector CSS para localizar el elemento de la barra de búsqueda y se utiliza WebDriverWait para esperar a que el elemento esté presente en la página.

Comments are closed.