Selenium Java: гарантия завершения работы chromedriver.exe при выходе из программы - PullRequest
0 голосов
/ 04 мая 2019

Я использую Selenium в Java для автоматизации Google Chrome.Когда моя программа завершает работу, экземпляр chromedriver.exe остается в памяти.Я знаю, что могу использовать driver.quit(), например, в блоке finally, чтобы закрыть текущий экземпляр.Однако, если приложение Java завершается в любое время (например, во время сеансов отладки), эта очистка, разумеется, никогда не выполняется.

Я ищу решение сделать chromedriver.exe дочерним процессомпроцесса Java, поэтому при выходе из процесса Java дочерний процесс также автоматически умирает.Такие решения, как Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe");, убивают все chromedriver.exe экземпляры, но это может испортить другие Selenium процессы в системе, что не идеально.Также это не будет работать против насильственного уничтожения процесса.

1 Ответ

0 голосов
/ 04 мая 2019

вы можете использовать «Selenium Grid» - он имеет цикл очистки всех бездействующих сессий каждые XXX промежутка времени (по умолчанию 5 минут) - https://www.seleniumhq.org/docs/07_selenium_grid.jsp

Таким образом, ваш сервер селена позаботится о вызове driver.quit () [который является предпочтительным способом уничтожения ваших процессов - освобождает Selenium chromedriver.exe из памяти , даже если ваша Java-программа убита .

...