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