如何删除所有域中的所有cookie?

时间:2013-03-25 18:38:05

标签: firefox selenium webdriver selenium-webdriver

Webdriver Wire Protocol不包含删除所有域中所有Cookie的方法。 It can only delete cookies from current domain

我想删除所有域中的所有Cookie,因为AUT已与设置Cookie的第三方网站集成,我希望在每次测试开始时确保干净状态,以提高易维护性。

所以我开始考虑删除所有cookie的特定于驱动程序的方法。我特别感兴趣的是Firefox。

在Firefox中,可以通过以下任一方式完成:

  • Ctrl + Shift + 删除然后输入
  • 编写可以一步完成的Firefox扩展

我错过了什么吗?是否有一个跨驱动程序选项来删除所有cookie(来自所有域)?

1 个答案:

答案 0 :(得分:-4)

有几种方法可以实现这一目标。这就是我通常在我的框架中实现这项工作的方式。

创建新的驱动程序对象(在本例中为ChromerDriver)时,设置ENSURING_CLEAN_SESSION功能:

public WebDriver driver() {

    File driverServer = new File(WebDriverConfig.class.getClassLoader().getResource("webDrivers/chromedriver.exe").getFile());
    System.setProperty("webdriver.chrome.driver", driverServer.getAbsolutePath());
    DesiredCapabilities caps = DesiredCapabilities.chrome();
    caps.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true);
    return new ChromeDriver();

}

然后在每个测试开始时使用TestNG的框架:

@BeforeMethod(alwaysRun = true)
public void setup() {

    driver.manage().deleteAllCookies();
    // Do other stuff before each test executes

}

您也可以通过获取Cookie并找到所需的Cookie然后删除该Cookie来删除特定的Cookie。

driver.manage().getCookies();

我希望这可以帮助您找到解决问题的方法。