У меня есть скрипт, который использует селен вебдрайвер (geckodriver) и загружает различные веб-страницы. Сценарии вначале работают нормально, но в случайном случае перестают работать без каких-либо ошибок (программа зависает, ничего не делая).
Я добавил несколько операторов регистрации, чтобы проверить, когда они зависают, и это вызвано оператором WebDriverWait (см. ниже). Последним, что напечатано в журнале, является «get_records - Loaded».
Ожидаемое для меня поведение будет состоять в том, чтобы либо напечатать «get_records - Acquired pager», либо вызвать TimeoutException через 10 секунд.
[...]
logging.info("get_records - Getting url: {}".format(url))
driver.get(url)
logging.info("get_records - Loaded")
# Get records number and result pages
elem = WebDriverWait(driver, 10).until(ec.element_to_be_clickable(
(By.XPATH, "//td[@align='right']/span[@class='pager']"))
)
logging.info("get_records - Acquired pager")
[...]
Python версия: 3.7.3 Версия Selenium: 3.141.0 Firefox версия: 70.0.1
Похоже, похожая ошибка произошла с предыдущей версией ( Selenium WebDriver (2.25) Тайм-аут не работает ), но эта ошибка была закрыта.
У кого-то есть такая же проблема?
Обновление:
Похоже, добавление time.sleep(0.5)
до того, как elem предотвращает зависание скрипта (либо выводится «get_records - Acquired pager», либо создается исключение timeoutException). Несмотря на то, что это решение проблемы, я бы не стал насильно ждать.