Python 3 Selenium WebDriverWait заставляет скрипт зависать / зависать навсегда - PullRequest
0 голосов
/ 31 января 2020

У меня есть скрипт, который использует селен вебдрайвер (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). Несмотря на то, что это решение проблемы, я бы не стал насильно ждать.

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