Espere hasta que la página se cargue con Selenium WebDriver para Python

apogne:

Quiero raspar todos los datos de una página implementada por un scroll infinito. El siguiente código de Python funciona.

for i in range(100):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)

Esto significa que cada vez que me desplazo hacia abajo, necesito esperar 5 segundos, lo que generalmente es suficiente para que la página termine de cargar los contenidos recién generados. Pero, esto puede no ser eficiente en el tiempo. La página puede terminar de cargar el nuevo contenido en 5 segundos. ¿Cómo puedo detectar si la página terminó de cargar los nuevos contenidos cada vez que me desplazo hacia abajo? Si puedo detectar esto, puedo desplazarme hacia abajo nuevamente para ver más contenido una vez que sepa que la página terminó de cargarse. Esto es más eficiente en el tiempo.

Zeinab Abbasimazar:

El webdriveresperará a que se cargue una página de forma predeterminada mediante el .get()método.

Como puede estar buscando algún elemento específico como dijo @ user227215, debe usar WebDriverWaitpara esperar un elemento ubicado en su página:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

browser = webdriver.Firefox()
browser.get("url")
delay = 3 # seconds
try:
    myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
    print "Page is ready!"
except TimeoutException:
    print "Loading took too much time!"

Lo he usado para verificar alertas. Puede utilizar cualquier otro método de tipo para encontrar el localizador.

EDITAR 1:

Debo mencionar que webdriveresperará a que se cargue una página de forma predeterminada. No espera a que se carguen dentro de los marcos ni a las solicitudes ajax. Significa que cuando lo use .get('url'), su navegador esperará hasta que la página esté completamente cargada y luego irá al siguiente comando en el código. Pero cuando está publicando una solicitud ajax, webdriverno espere y es su responsabilidad esperar una cantidad de tiempo adecuada para que se cargue la página o una parte de la página; entonces hay un módulo llamado expected_conditions.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Espere hasta que la página cargue Selenium Python

Selenium WebDriver: espere a que se cargue la página compleja con JavaScript

Cómo hacer que webDriver espere a que se cargue la página (proyecto C # Selenium)

¿Cómo hacer que Selenium no espere hasta que se cargue la página completa, que tiene un script lento?

Espere hasta que la tarea esté lista con Selenium WebDriver para Python

No espere a que se cargue una página con Selenium en Python

Espere a que se cargue la página

Python - Urllib2 Espere a que la página se cargue para extraer datos

Espere a que la página web se cargue por completo antes de raspar con solicitudes de Python

Espere a que se cargue la página antes de obtener datos con las solicitudes.get en Python 3

Espere a que se cargue la página antes de continuar con la ejecución de JavaScript

¿Selenium WebElement.Click () espera hasta que se cargue la página siguiente?

iMacros espera hasta que se cargue la página

Espere hasta que se actualice la página: Reaccionar

Cargue todas las imágenes en la página y espere hasta que termine

Esperando a que se cargue una página con Selenium

Esperando a que se cargue una página con Selenium

Selenium webdriver con Python para raspar la página dinámica no se puede encontrar el elemento

Selenium y Aurelia, cómo hacer que la prueba espere a que se cargue la página y se completen las llamadas HTTP

Selenium no espera a que se cargue la página

Haga que PhantomJS espere a que se cargue la página completa antes de renderizar como PDF

VBA XML V6.0 ¿Cómo hacer que espere a que se cargue la página?

Hace que window.print espere hasta que se cargue la ventana

Cómo hacer que la ejecución del script espere hasta que se cargue jquery

Chromium / chrome ejecutándose sin cabeza: espere a que se cargue la página cuando use --screenshot

Flutter Getx, espere hasta que se cargue todo el enlace principal antes de la navegación

Flutter Getx, espere hasta que se cargue todo el enlace principal antes de la navegación

Espere hasta que se complete la descarga en Python + Selenium + Firefox

Ocultar WKWebView hasta que se cargue la página y se haya ejecutado JavaScript