Selenium - обновить страницу, которая загружается слишком долго

У меня есть цикл for, который откроет веб-страницу из списка, сделает скриншот страницы, а затем перейдет на следующую веб-страницу в списке.

Я столкнулся с проблемой, когда у браузера возникают проблемы с загрузкой страницы, но простое ручное обновление делает свое дело и снова запускает скрипт. Как включить таймер обновления, чтобы, если загрузка страницы занимала более 5 секунд, страница обновлялась?

Я не уверен, как включить библиотеку времени или команду driver.refresh().

Я оставлю свой код ниже.

for links in link:
    driver.get(links)
    pyautogui.screenshot('/Users/user/Desktop/autoscreen/Screenshots/hehh/'+ links + '.png').    

person Austin Ju    schedule 11.04.2018    source источник
comment
Где ваш код, который даже пытается установить тайм-аут и обновить страницу?   -  person JeffC    schedule 11.04.2018


Ответы (1)


Как правило, вам нужно сообщить драйверу, как долго ждать до истечения времени ожидания, а затем перехватить исключение времени ожидания. В исключении тайм-аута вызовите driver.refresh(). Возможно, вам придется сделать это немного более надежным, но это суть.

# Wait up to 30 seconds for page to load
driver.implicitly_wait(30)

for link in links:
    try:
         driver.get(link)
         pyautogui.screenshot('/Users/user/Desktop/autoscreen/Screenshots/hehh/'+ links + '.png')
     except TimeoutException:
         driver.refresh()
person Ron Norris    schedule 11.04.2018
comment
интересно спасибо! вы думаете, что явное ожидание было бы лучше в этом случае? - person Austin Ju; 11.04.2018
comment
Обычно я предпочитаю явное ожидание, если могу определить конкретный целевой элемент. - person Ron Norris; 11.04.2018