Драйвер Selenium аварийно завершает работу с ошибкой MaxRetryError каждый раз после срабатывания ошибки KeyboardInterrupt или другой ошибки

#python #selenium #jupyter-notebook

Вопрос:

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

 while True:
    a, b = get_a_and_b()
    if a > b:
           print ("click a button")
           driver.find_element_by_class_name("button").click()
    sleep(1)
 

функция get_a_and_b() не взаимодействует с селеном.
Однако когда я инициирую KeyboardInterrupt, функция останавливается, но драйвер после этого возвращает MaxRetryError:

 Errr HTTPConnectionPool(host='127.0.0.1', port=33111): Max retries exceeded with url: /session/4d754ba9-0c65-4c40-b045-a8e8432b4564/window (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f390b09beb0>: Failed to establish a new connection: [Errno 111] Connection refused'))
'MaxRetryError' object has no attribute 'code'
 

После этого мне нужно снова запустить драйвер, потому что он ни на что не реагирует.
Это происходит, даже если я ловлю исключения с помощью try.

Почему происходит эта ошибка и как я могу ее предотвратить?