Webdriver Wire Protocol 不包含从所有域中删除所有 cookie 的方法。 It can only delete cookies from current domain .
我想删除所有域中的所有 cookie,因为 AUT 与设置 cookie 的第三方网站集成,并且我想确保每次测试开始时的干净状态,以提高可维护性。
所以我开始考虑特定于驱动程序的方法来删除所有 cookie。我对 Firefox 特别感兴趣。
在 Firefox 中,可以通过以下任一方式完成:
- 按 Ctrl+Shift+Delete,然后按 Enter
- 编写 Firefox 扩展,允许一步完成此操作
我错过了什么吗?是否有跨驱动程序选项可以删除所有 cookie(来自所有域)?
最佳答案
有多种方法可以实现此目的。这就是我通常在我的框架中实现工作的方式。
创建新的驱动程序对象(在本例中为 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();
我希望这可以帮助您找到问题的解决方案。
关于firefox - 如何删除所有域中的所有 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622266/