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