Selenium Java:确保程序退出时chromedriver.exe关闭

时间:2019-05-04 12:43:34

标签: java selenium automated-tests selenium-chromedriver zombie-process

我在Java中使用Selenium来自动化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 :(得分:0)

您可以使用“ Selenium Grid”-它具有每XXX时间(默认为5分钟)内所有空闲会话的清理周期-https://www.seleniumhq.org/docs/07_selenium_grid.jsp

这样,您的硒服务器将负责调用driver.quit()[这是杀死进程的首选方法-release Selenium chromedriver.exe from memory,即使您的Java程序被杀死。