Configurar um tempo limite real para carregar a página no Selenium WebDriver?
Estou testando um site com muitos proxies, e o problema é que alguns desses proxies são terrivelmente lentos. Portanto, meu código fica preso ao carregar páginas de vez em quando.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
Eu tentei muitas coisas comoexplicit waits
ouimplicit waits
e estava procurando por um bom tempo, mas ainda não encontrou uma solução ou solução alternativa. Nada parece realmente afetar a linha de carregamento da páginabrowser.get("http://example.com/example-page.php")
e é por isso que está sempre preso lá.
Alguém tem uma solução para isso?
Atualização 1:
A resposta de JimEvans resolveu meu problema anterior, eAqui você pode encontrar patch de python para este novo recurso.
Novo 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 você pode verbrowser.set_page_load_timeout(30)
afeta apenasbrowser.get("http://example.com/example-page.php")
o que significa que, se esta página for carregada por mais de 30 segundos, ela descartará uma exceção de tempo limite, mas o problema é que ela não tem poder sobre o carregamento da página, comoelement.click()
, embora não bloqueie até que a nova página seja totalmente carregada,another_element = browser.find_element_by_id("another_element")
é a nova dor no rabo, porqueexplicit waits
ouimplicit waits
esperaria que a página inteira fosse carregada antes de começar a procurar por esse elemento. Em alguns casos extremos, isso levariaHORAS. O que posso fazer sobre isso?