Заставьте Selenium продолжить работу после ошибки тайм-аута - PullRequest
1 голос
/ 30 марта 2019

У меня есть код, который возвращает название списка сайтов.Иногда загрузка веб-сайта занимает абсурдное время, поэтому, когда это происходит, появляется сообщение об ошибке тайм-аута.Я хотел бы сделать так, чтобы при возникновении такой ошибки программа продолжала работать, а не останавливаться полностью.

Код:

from pyvirtualdisplay import Display
from time import sleep
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
display = Display(visible=0, size(800,600))
display.start()
driver = webdriver.Firefox(executable_path='/usr/local/lib/geckodriver/geckodriver')
driver.set_page_load_timeout(60)
driver.get('https://google.com')
print(driver.title)

Следующий код - это то, что делаетТайм-аут возникает, когда через 60 секунд страница не загружается:

driver.set_page_load_timeout(60)

По истечении 60 секунд программа останавливается и выдает сообщение об ошибке тайм-аута.Вместо этого я хочу продолжить со следующего URL.

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Чтобы выполнить итерацию по списку URL-адресов даже в случае ошибки page_load_timeout , вы можете использовать следующее решение:

Вы можете найти подробное обсуждение тайм-аут загрузки страницы в Как установить тайм-аут «driver.get» для python selenium 3.8.0?

0 голосов
/ 30 марта 2019

Вы можете использовать try, кроме как для обработки и передачи любой ошибки.

from pyvirtualdisplay import Display
from time import sleep
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

display = Display(visible=0, size(800,600))

display.start()

driver = webdriver.Firefox(executable_path='/usr/local/lib/geckodriver/geckodriver')


try:
    driver.set_page_load_timeout(60)
except Exception as e:
    print(e)

driver.get('https://google.com')

print(driver.title)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...