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