Настроить реальный тайм-аут для загрузки страницы в Selenium WebDriver?

Я тестирую сайт с большим количеством прокси, и проблема в том, что некоторые из них ужасно медленные. Поэтому мой код время от времени зависает при загрузке страниц.

from selenium import webdriver

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

Я перепробовал множество вещей, таких как явное ожиданиеили неявное ожиданиеи довольно долго искал, но до сих пор не нашел решения или обходного пути. Кажется, ничто не влияет на строку загрузки страницы browser.get("http://example.com/example-page.php"), и поэтому она всегда там застревает.

У кого-нибудь есть решение этой проблемы?

Обновление 1:

Ответ Джима Эванса решил мою предыдущую проблему, и здесьвы можете найти патч Python для этой новой функции.

Новая проблема:

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

Как видите, browser.set_page_load_timeout(30)влияет только на browser.get("http://example.com/example-page.php") это означает, что если эта страница загружается более 30 секунд, она выдает исключение тайм-аута, но проблема в том, что она не имеет власти над загрузкой страницы, такой как element.click(), хотя и имеет не блокировать, пока новая страница полностью не загрузится, other_element = browser.find_element_by_id("another_element")— это новая заноза в заднице, потому что либо явные ожидания, либо неявные ожиданиябудут ждать загрузки всей страницы, прежде чем она начнет искать для этого элемента. В некоторых крайних случаях это может занять даже ЧАСОВ. Что мне с этим делать?

18
задан Paul T. 4 January 2013 в 19:22
поделиться