¿Configurar un tiempo de espera real para cargar la página en Selenium WebDriver?
Estoy probando un sitio con muchos proxies, y el problema es que algunos de esos proxies son muy lentos. Por lo tanto, mi código está atascado al cargar páginas de vez en cuando.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
He probado muchas cosas comoexplicit waits
oimplicit waits
y he estado buscando durante bastante tiempo pero todavía no he encontrado una solución o solución alternativa. Nada parece afectar realmente la línea de carga de la página.browser.get("http://example.com/example-page.php")
, y es por eso que siempre está atrapado allí.
¿Alguien tiene una solución para esto?
Actualización 1:
La respuesta de JimEvans resolvió mi problema anterior, yaquí Puedes encontrar un parche de python para esta nueva característica.
Nuevo problema:
browser = webdriver.Firefox()
browser.set_page_load_timeout(30)
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("elementA")
element.click() ## assume it's a link to a new page http://example.com/another-example.php
another_element = browser.find_element_by_id("another_element")
Como puedes verbrowser.set_page_load_timeout(30)
solo afectabrowser.get("http://example.com/example-page.php")
lo que significa que si esta página se carga durante más de 30 segundos arrojará una excepción de tiempo de espera, pero el problema es que no tiene poder sobre la carga de la página, comoelement.click()
, aunque no bloquea hasta que la nueva página se carga por completo,another_element = browser.find_element_by_id("another_element")
Es el nuevo dolor en el culo, porque tampocoexplicit waits
oimplicit waits
esperaría a que se cargue toda la página antes de que empiece a buscar ese elemento. En algunos casos extremos esto tomaría inclusoHORAS. ¿Qué puedo hacer al respecto?