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 секунд.

  • Selenium python find_element_by_class_name () перестает работать с версии 2.2 до 2.21 - не может использовать 'Compound Class Name'
  • Можно ли скрыть браузер в Selenium RC?
  • Установите флажок, используя Selenium с Python
  • авторизация авторизации с помощью cookie
  • Как использовать Selenium с Python?
  • django application selenium не тестирует статические файлы
  • Selenium's firefox webdriver работает на одном компьютере, но не в другом
  • Python selenium не может нажать поле
  • Python - лучший язык программирования в мире.