Mozilla FireFox (не отвечает) - Selenium WebDriver отказывается умирать с помощью команды driver.quit () - PullRequest
0 голосов
/ 04 ноября 2019

Моя программа запускает несколько десятков экземпляров WebDriver параллельно и убивает их, когда выполняются определенные условия или когда я вручную завершаю программу. В любой момент времени у меня может быть 4 десятка активных WebDriver экземпляров, и для уничтожения нежелательных экземпляров я вызываю:

driver.quit();

Если driver.quit(); выдает исключение, я убиваю WebDriver с помощью PIDс помощью команды Runtime.getRuntime().exec() taskkill.

Большинство активных драйверов уничтожаются при этом вызове (при выходе из программы). Однако обычно есть несколько (1-3), которые «зависают» с сообщением Mozilla FireFox (Not Responding). И они никогда не умирают.

Я не могу определить основную причину проблемы, поскольку команда, которую я использую для уничтожения WebDriver, обычно работает. Я рассмотрел несколько потоков в SO относительно подобных проблем, но чувствую, что ни один из них не решает мою проблему, потому что, как уже говорилось, команда, которую я использую, работает в целом - она ​​не работает во всех случаях. Насколько я вижу, нет никакой разницы между тем, как работает любой из драйверов. Кроме того, при вызове driver.quit() не выдается ошибка / исключение. Так что, когда команда работает и не работает, она кажется совершенно случайной.

Что может привести к тому, что Firefox будет зависать и не реагировать на команду quit()?

Спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

Вы на правильном пути, но когда выполняются определенные условия не завершите программу вручную, вместо этого используйте:

driver.quit();

Подробное обсуждение можно найти в Веб-драйвер PhantomJS остается в памяти


Если вам нужно принудительно завершить процессы Firefox , вы также можете использовать taskkill() (windows) выполните команду getRuntime().exec() следующим образом:

Runtime.getRuntime().exec("taskkill /F /IM firefox.exe /T");

Подробное обсуждение можно найти в Selenium: Как остановить процесс geckodriver, влияющий на память ПК, без вызоваdriver.quit ()?


В случае Mozilla FireFox висит с сообщением Mozilla FireFox (Not Responding)фактически означает, что что-то остановило Mozilla FireFox процессы.


Решение

Согласно статье Firefox не отвечает существует несколько подходов крешить эту проблему (Windows 10) следующим образом:

  • Закрыть Mozilla FireFox (если классический способ не работает, закройте программу через диспетчер задач)
  • Перезагрузите систему .
  • Обновитесистемные драйверы видеокарты : Firefox может столкнуться с проблемами из-за устаревших драйверов для видеокарты. Вам необходимо убедиться, что ваша система работает с последними обновлениями драйверов.
  • Отключить аппаратное ускорение в Firefox : функция аппаратного ускорения также связана свидеокарта. В некоторых ситуациях, в зависимости от определенных настроек графической карты, Firefox может зацикливаться, когда используется аппаратное ускорение. Итак, отключите эту функцию.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...