Java 确保ChromeDriver在强制退出时关闭

Java 确保ChromeDriver在强制退出时关闭,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,在运行chromeDriver时,我使用try/catch/finally语句来确保如果出现任何异常,我的WebDriver将正确关闭。但是,如果抛出异常,这将非常有效;如果用户强制退出我的应用程序,则浏览器实例不会关闭。这可能会导致在后台运行不需要的google chrome线程 当用户强制退出我的应用程序时,我如何确保浏览器关闭 下面是一个代码示例: public class WebDriverTest { WebDriver driver; WebDriverWait w

在运行chromeDriver时,我使用try/catch/finally语句来确保如果出现任何异常,我的WebDriver将正确关闭。但是,如果抛出异常,这将非常有效;如果用户强制退出我的应用程序,则浏览器实例不会关闭。这可能会导致在后台运行不需要的google chrome线程

当用户强制退出我的应用程序时,我如何确保浏览器关闭

下面是一个代码示例:

public class WebDriverTest {

    WebDriver driver;
    WebDriverWait wait;

    public WebDriverTest() {
        System.setProperty("webdriver.chrome.driver", "res/chromedriver");
        driver = new ChromeDriver();
        this.wait = new WebDriverWait(driver, 1);
    }

    public static void main(String[] args) {
        WebDriverTest main = new WebDriverTest();
        main.test();
    }

    private void test() {
        try {
            driver.get("https://www.google.com");
            WebElement element = driver.findElement(By.name("q"));
            element.sendKeys("test");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //If force quit the browser is never closed
            driver.quit();
        }
    }

}

好吧,你似乎做得对,把辞职放在finnaly区

在测试结束时执行这个怎么样

Runtime.getRuntime().exec("taskkill /F /IM <processname>.exe")
Runtime.getRuntime().exec(“taskkill/F/IM.exe”)

所以您可以杀死chromedriver.exe。

为了确保在强制关机时调用驱动程序的关闭/退出方法,您可以使用应用程序的运行时关机挂钩。它可以在驱动程序的init方法中注册,并在任何Ctrl-C/其他强制退出情况下调用。考虑下面的片段。
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
  driver.close();
  driver.quit();
}));

使用driver.close(),它将关闭当前关注的浏览器窗口。然后您可以调用driver.quit()来结束驱动程序的会话。我已经用这两种方法进行了尝试,finally块不会运行,因为强制退出与系统相同。退出(0);你说的“强制退出”是什么意思。比如关闭chrome浏览器,或者在浏览器地址栏中添加另一个url?