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.

Cómo hacer clic en el botón Ver todo utilizando Selenium y Python.

Este script con Selenium en Python 3 me ayuda a raspar información de una página haciendo clic en el botón ver todo, pero dejó de funcionar y no sé cuál es la causa. ¿Podrías ayudarme con el código?

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

nav = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=nav)

driver.get('https://getdaytrends.com/es/venezuela/#moreTrends')

search = driver.find_element(By.CLASS_NAME, 'btn btn-outline-primary px-5')
driver.execute_script("arguments[0].click();", search)

datos = driver.find('table')

El rastreo es:

selenium.common.exceptions.NoSuchElementException: Mensaje: no hay tal elemento: no se puede localizar el elemento: {"método":"selector css","selector":".btn btn-outline-primary px-5"}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el script no puede ubicar el elemento con el nombre de clase ‘btn btn-outline-primary px-5’. Esto está causando que se produzca la excepción NoSuchElement.

    Para solucionar este problema, puede intentar los siguientes pasos:
    1. Verifique si el elemento con el nombre de clase ‘btn btn-outline-primary px-5’ está presente en la página o no. Puede verificar esto inspeccionando manualmente el código HTML de la página utilizando las herramientas de desarrollo del navegador.
    2. Si el elemento está presente, intente utilizar un método de selector diferente como ID, nombre o XPath para ubicar el elemento.
    3. Si el elemento no está presente, podría ser un problema con la página web en sí. Puede intentar esperar a que el elemento se cargue utilizando el método WebDriverWait().
    4. También puede verificar si la versión de ChromeDriver es compatible con la versión de su navegador web.

    Aquí hay un ejemplo de cómo utilizar WebDriverWait() para esperar a que el elemento se cargue antes de hacer clic en él:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver.get('https://getdaytrends.com/es/venezuela/#moreTrends')
    
    # espere a que el elemento sea clickeable
    search = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'btn.btn-outline-primary.px-5')))
    
    # haga clic en el elemento
    search.click()
    
    # scrape los datos
    datos= driver.find_element(By.TAG_NAME, 'table')
    

    Asegúrese de importar los módulos necesarios y modificar el código según sus requisitos. ¡Espero que esto ayude!

Comments are closed.