我在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
进程混乱,这是不理想的。同样,这也不利于强制终止进程。
答案 0 :(得分:0)
您可以使用“ Selenium Grid”-它具有每XXX时间(默认为5分钟)内所有空闲会话的清理周期-https://www.seleniumhq.org/docs/07_selenium_grid.jsp
这样,您的硒服务器将负责调用driver.quit()[这是杀死进程的首选方法-release Selenium chromedriver.exe from memory,即使您的Java程序被杀死。