Настроить реальный тайм-аут для загрузки страницы в Selenium WebDriver?
Я тестирую сайт с большим количеством прокси, и проблема в том, что некоторые прокси работают очень медленно. Поэтому мой код время от времени зависает при загрузке страниц.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
Я пробовал много вещей, таких какexplicit waits
илиimplicit waits
и долго искал, но все еще не нашел решения или обходного пути. Кажется, ничего не влияет на строку загрузки страницbrowser.get("http://example.com/example-page.php")
и поэтому он всегда там застревает.
У кого-нибудь есть решение для этого?
Обновление 1:
твет @JimEvans решил мою предыдущую проблему, аВо вы можете найти патч для 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()
, хотя он не блокируется до полной загрузки новой страницы,another_element = browser.find_element_by_id("another_element")
это новая боль в заднице, потому что либоexplicit waits
илиimplicit waits
будет ждать загрузки всей страницы, прежде чем начнет искать этот элемент. В некоторых крайних случаях это займет даже ЧАСЫ. Что я могу с этим поделать?