No espere a que se cargue una página con Selenium en Python
selenium-webdriver webdriver (2)
Para Chromedriver funciona igual que en la respuesta de @ DebanjanB, sin embargo, la estrategia de carga de página ''ansiosa'' aún no es compatible
Entonces, para chromedriver obtienes:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities().CHROME
# caps["pageLoadStrategy"] = "normal" # Waits for full page load
caps["pageLoadStrategy"] = "none" # Do not wait for full page load
driver = webdriver.Chrome(desired_capabilities=caps, executable_path="path/to/chromedriver.exe")
Tenga en cuenta que cuando usa la estrategia ''ninguno'', lo más probable es que tenga que implementar su propio método de espera para verificar si el elemento que necesita está cargado.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
WebDriverWait(driver, timeout=10).until(
ec.visibility_of_element_located((By.ID, "your_element_id"))
)
¡Ahora puede comenzar a interactuar con su elemento antes de que la página esté completamente cargada!
¿Cómo hago que el selenio haga clic en los elementos y raspe los datos antes de que la página se haya cargado completamente? Mi conexión a Internet es bastante terrible, por lo que a veces me lleva una eternidad cargar la página por completo, ¿hay alguna forma de evitar esto?
ChromeDriver 77.0
(que admite la versión 77 de Chrome) ahora admite
eager
como
pageLoadStrategy
.
Problema resuelto 1902: estrategia de carga de página ansiosa de soporte [Pri-2]
A medida que cuestione las menciones de
click on elements and scrape data before the page has fully loaded
en este caso podemos tomar la ayuda de un atributo
pageLoadStrategy
.
Cuando Selenium carga una página / url de manera predeterminada, sigue una configuración predeterminada con
pageLoadStrategy
establecido en
normal
.
Selenium puede comenzar a ejecutar la siguiente línea de código desde diferentes
Document readiness state
.
Actualmente, Selenium admite 3
Document readiness state
diferentes que podemos configurar a través de
pageLoadStrategy
siguiente manera:
-
none
(indefinido) -
eager
(la página se vuelve interactiva) -
normal
(carga de página completa)
Aquí está el bloque de código para configurar el
pageLoadStrategy
:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
binary = r''C:/Program Files/Mozilla Firefox/firefox.exe''
caps = DesiredCapabilities().FIREFOX
# caps["pageLoadStrategy"] = "normal" # complete
caps["pageLoadStrategy"] = "eager" # interactive
# caps["pageLoadStrategy"] = "none" # undefined
driver = webdriver.Firefox(capabilities=caps, firefox_binary=binary, executable_path="C://Utility//BrowserDrivers//geckodriver.exe")
driver.get("https://google.com")