4

Webdriver Wire Protocol 不包含从所有域中删除所有 cookie 的方法。它只能从当前域中删除 cookie

我想从所有域中删除所有 cookie,因为 AUT 已与设置 cookie 的 3rd 方站点集成,并且我希望在每个测试开始时确保干净的状态以提高可维护性。

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

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

  • Ctrl+ Shift+Delete然后Enter
  • 编写允许一步完成的 Firefox 扩展

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

4

1 回答 1

-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。

driver.manage().getCookies();

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

于 2013-03-26T14:12:30.670 回答