Testuję witrynę z dużą ilością serwerów proxy, a problemem jest to, że niektóre z tych serwerów są strasznie wolne. Dlatego mój kod utknął przy ładowaniu stron co jakiś czas.Ustawić prawdziwy limit czasu na ładowanie strony w Selenium WebDriver?
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
Próbowałem wiele rzeczy jak explicit waits
lub implicit waits
i zostały wyszukiwanie wokół na dłuższą chwilę, ale wciąż jeszcze nie znaleziono rozwiązania lub obejścia. Wydaje się, że nic nie wpływa na ładowanie strony linii browser.get("http://example.com/example-page.php")
i dlatego zawsze tam utknęła.
Ktoś ma rozwiązanie tego problemu?
Aktualizacja 1: odpowiedź
JimEvans' rozwiązać mój poprzedni problem i here można znaleźć łatkę Pythona do tej nowej funkcji.
nowy 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")
Jak widać browser.set_page_load_timeout(30)
wpływa tylko browser.get("http://example.com/example-page.php")
co oznacza, jeśli ta strona ładuje przez ponad 30 sekund będzie wyrzucić wyjątek limitu czasu, ale problemem jest to, że nie ma ładowanie ponad ładowaniem strony, takie jak element.click()
, chociaż nie blokuje się, dopóki nowa strona nie załaduje się całkowicie, another_element = browser.find_element_by_id("another_element")
to nowy ból w dupie, ponieważ albo explicit waits
lub implicit waits
będzie czekać na załadowanie całej strony zanim zacznie szukać ten element. W skrajnych przypadkach wymagałoby to nawet HOURS. Co mogę z tym zrobić?
Super! Z pewnością fajna funkcja. –
@JimEvans: Dzięki kolego, właśnie znalazłem poprawkę dla Pythona dla tego http://code.google.com/p/selenium/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Stars%20Type% 20Status% 20Priority% 20Milestone% 20Owner% 20Summary & groupby = & sort = & id = 687 i działa świetnie. – Shane
@JimEvans: Hej kolego, sprawdź moją aktualizację. Zaczyna mnie nurtować nowy problem. – Shane