Я написал простой код на Python, который просматривает несколько веб-страниц, хранящихся в кортеже.Цель состоит в том, чтобы регулярно просматривать эти страницы и проверять, находятся ли они в сети и отвечают.Пример кода:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome()
links = ('https://stackoverflow.com/', 'https://stackexchange.com/')
while True:
for url in links:
try:
browser.get(url)
print('OK')
except Exception as e:
print('Not OK: {}'.format(e))
Но этот код печатает 'OK', даже когда я не в сети, поэтому я полагаю, что метод get () не обрабатывает никаких исключений, если фактическая страница не достигнута.
Я думал об использовании WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, 'some_common_id')))
, чтобы проверить, достигла ли я настоящую страницу, но мой кортеж может содержать разные адреса URL без общего идентификатора, класса или элемента ...
Затем я подумал опоменять местами и использовать WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, 'main-frame-error')))
для поиска определенного элемента, который вы получаете в Google Chrome, когда находитесь в автономном режиме (на их странице «Игра в Динозавр»).Но в этом случае сценарию придется ждать 5 секунд каждый раз, когда страница из моего кортежа будет успешно достигнута, что излишне замедлит весь тест.
Я думаю, что должен быть более простой способ просмотрастраницу с селеном и знаю, достигнут ли он на самом деле, но я пока не смог найти решение.