Desplazamiento de páginas web en Selenium Python: cómo desplazarse hacia abajo y hacia arriba, hasta un elemento o con carga dinámica

Cuando analizo y pruebo sitios web con Selenium, a menudo necesito desplazarme por la página web, y con diferentes condiciones: hasta un elemento determinado o con contenido cargado dinámicamente. En esta publicación, descubramos qué métodos de desplazamiento existen y veamos ejemplos de código para su uso.
Para ejecutar este código, debes tener Selenium y ChromeDriver instalados en tu ordenador. También debes importar Selenium y Time y crear una instancia de Selenium.
Para buscar elementos en la página, también debes importar el módulo By. Además, debes abrir la sección deseada del sitio web. En los ejemplos de código que aparecen a continuación omito esto y solo incluyo instrucciones específicas.
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://itwebmind.com/")Desplazarse hasta el final de la página
Para hacer que una página se desplace utilizando Selenium en Python, puede utilizar código JavaScript en el navegador. A continuación se muestra un fragmento de código de ejemplo que ejecutará el desplazamiento hacia abajo.
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")JavaScript se ejecuta utilizando el método execute_script(). Este método toma un comando JavaScript como argumento.
Desplazarse a un elemento
Si desea desplazar la ventana gráfica a un elemento específico, puede buscar ese elemento utilizando cualquiera de los métodos de ubicación disponibles (por ejemplo, selector CSS, XPath) y, a continuación, utilizar el método JavaScript scrollIntoView() llamado por el método execute_script().
element = driver.find_element(By.CSS_SELECTOR, "your-element-selector") driver.execute_script("arguments[0].scrollIntoView(true);", element)Tenga en cuenta que pasamos el elemento encontrado en Selenium como segundo argumento del método execute_script(), y en el código JavaScript está disponible como elemento 0 de la matriz de argumentos.
Desplazamiento en páginas con carga dinámica
Algunos sitios, como las redes sociales o los sitios de alojamiento de vídeos, tienen una carga de contenido dinámica: se añaden nuevos elementos a medida que se desplaza.
Si utiliza el desplazamiento normal hacia abajo, solo se cargará un contenido, y puede que haya muchos más.
Para evitar este error, comenzamos a desplazarnos en un bucle: desplazarse hasta el final de la página, esperar 2 segundos, comprobar si la altura de la página ha cambiado y, si es así, volver a desplazarse.
last_height = driver.execute_script("return document.body.scrollHeight") while True: # Desplácese hacia abajo driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Espera mientras se carga la página. sleep(2) # Calcula la nueva altura de desplazamiento y compárala con la última altura de desplazamiento. new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: print("Scrolling complete") break last_height = new_height print("New content has appeared, scroll further")Después de desplazarse hasta la parte inferior, el script «duerme» durante 2 segundos. Esto es para dar tiempo al navegador a cargar el nuevo contenido de la página.
Para ejecutar este código, es necesario instalar la biblioteca Selenium y ChromeDriver. Las instrucciones para hacerlo se pueden encontrar en el sitio web de Selenium.
Hemos cubierto las principales variantes de la implementación del desplazamiento, espero que el artículo haya sido útil.












