我正在使用Selenium
使用 Java 来自动化 Google Chrome
。当我的程序退出时,内存中会留下一个 chromedriver.exe 实例。我知道我可以在例如中使用 driver.quit()
用于关闭当前实例的finally
block 。但是,如果 Java
应用程序在任何时候被终止(例如在调试 session 期间),则当然永远不会执行此清理操作。
我正在寻找一种解决方案,使 chromedriver.exe
成为 Java
进程的子进程,这样当 Java
进程退出时,子进程也会自动终止。像 Runtime.getRuntime().exec("taskkill/F/IM chromedriver.exe");
这样的解决方案会杀死所有 chromedriver.exe
实例,但这可能会扰乱系统上的其他 Selenium
进程,这并不理想。此外,这也不会阻止强制终止进程。
最佳答案
您可以使用“Selenium Grid” - 它每隔 XXX 时间(默认为 5 分钟)清理所有空闲 session 的周期 - https://www.seleniumhq.org/docs/07_selenium_grid.jsp
这样,您的 selenium 服务器将负责调用 driver.quit() [这是终止进程的首选方法 - release Selenium chromedriver.exe from memory即使您的 Java 程序被终止。
关于java - Selenium Java : Guarantee chromedriver. exe 程序退出时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982636/