Richten Sie ein echtes Timeout für das Laden von Seiten in Selenium WebDriver ein?

Ich teste eine Site mit vielen Proxys, und das Problem ist, dass einige dieser Proxys furchtbar langsam sind. Deshalb bleibt mein Code ab und zu beim Laden von Seiten hängen.

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")

Ich habe viele Sachen ausprobiert wieexplicit waits oderimplicit waits Ich habe lange gesucht, aber noch keine Lösung oder Umgehung gefunden. Nichts scheint sich wirklich auf das Laden der Seite auszuwirkenbrowser.get("http://example.com/example-page.php")und deshalb steckt es immer dort fest.

Hat jemand eine Lösung dafür?

Update 1:

JimEvans 'Antwort löste mein vorheriges Problem undHier Sie können Python-Patch für diese neue Funktion finden.

Neues Problem:

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")

Wie du siehstbrowser.set_page_load_timeout(30) betrifft nurbrowser.get("http://example.com/example-page.php") Das heißt, wenn diese Seite länger als 30 Sekunden geladen wird, wird eine Zeitüberschreitungs-Ausnahme ausgegeben. Das Problem ist jedoch, dass beim Laden von Seiten keine Energie zur Verfügung steht, zelement.click(), obwohl es nicht blockiert, bis die neue Seite vollständig geladen wird,another_element = browser.find_element_by_id("another_element") ist der neue Schmerz im Arsch, weil entwederexplicit waits oderimplicit waits Ich würde warten, bis die gesamte Seite geladen ist, bevor das Element gesucht wird. In einigen extremen Fällen würde dies sogar dauernSTD. Was kann ich tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage