Pelon selenium обновляется, если ждать более 10 секунд

from selenium import webdriver driver=webdriver.Firefox() driver.get(url) 

Иногда webdriver застревает в файле или ответе, и страница никогда не заполняется, поэтому строка

 driver.get(url) 

никогда не заканчивается. Но у меня уже достаточно исходного кода для запуска остальной части моего кода. Мне интересно, как я могу обойти или обновить страницу, если страница не загружена за 10 секунд.

я пытался

 from selenium import webdriver from selenium.common.exceptions import TimeoutException driver=webdriver.Firefox() driver.set_page_load_timeout(10) while True: try: driver.get(url) except TimeoutException: print("Timeout, retrying...") continue else: break 

но линия

 driver.set_page_load_timeout(10) 

всегда дает мне следующую ошибку

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 727, in set_page_load_timeout 'pageLoad': int(float(time_to_wait) * 1000)}) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 238, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: 

После Message:. Я не могу определить тип ошибки. Странно, что мой ноутбук не может работать

 driver.set_page_load_timeout(10) 

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

благодаря

One Solution collect form web for “Pelon selenium обновляется, если ждать более 10 секунд”

(В вашем фрагменте кода вы не определяете URL-адрес, но я предполагаю, что URL-адрес определен где-то в вашем фактическом коде.)

Вы можете комбинировать пакеты повтора и тайм-аут-декоратора для этого:

 from retry import retry from timeout_decorator import timeout, TimeoutError from selenium import webdriver from selenium.common.exceptions import TimeoutException @retry(TimeoutError, tries=3) @timeout(10) def get_with_retry(driver, url): driver.get(url) def main(): url = "http://something.foo" driver=webdriver.Firefox() try: get_with_retry(driver, url) foo(driver) # do whatever it is you need to do finally: driver.quit() if __name__ == "__main__": main() 

Обратите внимание, что вам нужно либо не устанавливать driver.set_page_load_timeout , либо устанавливать его на что-то более 10 секунд.

Python - лучший язык программирования в мире.