Я тестирую сайт с большим количеством прокси, и проблема в том, что некоторые из них ужасно медленные. Поэтому мой код время от времени зависает при загрузке страниц.
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")
— это новая заноза в заднице, потому что либо явные ожидания
, либо неявные ожидания
будут ждать загрузки всей страницы, прежде чем она начнет искать для этого элемента. В некоторых крайних случаях это может занять даже ЧАСОВ. Что мне с этим делать?