Java 如何在每次测试之间清除chrome浏览器状态?

Java 如何在每次测试之间清除chrome浏览器状态?,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,在每次运行测试之前,我希望获得一个新的selenium chrome浏览器实例。我可以通过在每次测试后执行driver.quit()并初始化一个新实例来实现这一点,但这既耗时又占用大量资源。似乎需要更好的方法,但我一直无法在网上找到任何东西 这就是我现在正在做的: @AfterMethod public void shutDown(){ seleniumDriver.quit(); } @BeforeMethod public void start(){ seleniumDriv

在每次运行测试之前,我希望获得一个新的selenium chrome浏览器实例。我可以通过在每次测试后执行driver.quit()并初始化一个新实例来实现这一点,但这既耗时又占用大量资源。似乎需要更好的方法,但我一直无法在网上找到任何东西

这就是我现在正在做的:

@AfterMethod
public void shutDown(){
   seleniumDriver.quit();
}

@BeforeMethod
public void start(){
    seleniumDriver = SeleniumExtensions.createDefaultWebDriver();
}
最终,我不必退出并获取新的instancem,而只需执行如下操作,即getFreshInstance清除状态(cookies、缓存、会话等):

对于Cookie:

seleniumDriver.manage().deleteAllCookies();
Selenium本机不提供删除缓存的方法。根据,您可以尝试以下方法清除缓存:

WebElement clearDataBtn = driver.findElement(By.cssSelector("* /deep/ #clearBrowsingDataConfirm"));
if(sync.isElementPresent(By.cssSelector("* /deep/ #clearBrowsingDataConfirm"))){
System.out.println("Clear button found");
clearDataBtn.click();
}

这是正确的方向,+1;还有一个组件需要处理,例如
localStorage
sessionStorage
WebElement clearDataBtn = driver.findElement(By.cssSelector("* /deep/ #clearBrowsingDataConfirm"));
if(sync.isElementPresent(By.cssSelector("* /deep/ #clearBrowsingDataConfirm"))){
System.out.println("Clear button found");
clearDataBtn.click();
}