from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
browser.get("http://testsite.com")
element = WebDriverWait(browser, 10).until(lambda browser : browser.find_element_by_id("element"))
element.click() # it actually goes to page http://testsite.com/test-page.html
print "Just clicked! And I'm expecting timeout error!"
new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
print "Too bad there's no timeout error, why?!"
OK, wie Sie sehen können sogar ich Wartezeit auf 0,1 Sekunden setzen, es gibt immer noch keine Timeout-Ausnahme geworfen. Wenn element.click()
ausgeführt wird, blockiert es nicht, bis die ganze Seite geladen ist und deshalb Just clicked! And I'm expecting timeout error!
aufgetaucht ist, und zu meiner Überraschung new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
warten Sie, bis die ganze Seite geladen wird. Und wenn Sie implicit waits
verwenden, erhalten Sie das gleiche Ergebnis.Sag mir, warum dies nicht mit einem Timeout-Fehler endet (selen 2 webdriver)?
Mein Punkt ist, manchmal, nachdem Sie ein Element klicken, um es nehmen könnte für eine Seite noch Stunden wegen eines schlechten Proxy zu laden, und Sie offensichtlich DO nicht so lange warten möchten, was Sie wollen, ist eine Zeitüberschreitungsausnahme In diesem Fall, wie würdest du es funktionieren lassen?
Ich verstehe nicht ganz, was du meinst. Wären Sie bitte genauer und wie kann ich das tun? – Shane
... und nach der Aktualisierung auf 2.22 erkannte ich all die Stellen, an denen ich mich unwissentlich auf dieses implizite Warten verließ. XD – Isaac
Ich glaube nicht, dass das recht ist. Sie sprechen über driver.set_page_load_timeout() Ich glaube aber, dass das nicht mit Klicks zu tun hat. Nicht alle Klicks lösen eine Seitenladung aus. Das Zeitlimit für das Laden der Seite gilt nur für das Laden der Seite. Der Fragesteller hat auch Probleme mit der Zeitüberschreitung beim Suchen des Elements (es müssen keine Klicks beteiligt sein). – Purrell