创建一个新的 WebDriver 会话重用我的 cookie

Creating a new WebDriver session reuse my cookies

当我在 Edge 中启动一个新的 WebDriver 会话并浏览到我之前登录的网站(Edge 中保留了 "remember me" cookie)时,WebDriver 会话将重新使用我的 cookie 并显示为已登录.

是否可以在 Edge 下以 InPrivate 模式启动 WebDriver 会话?

我不熟悉在 InPrivate 模式下启动 Edge 会话的方法,但作为替代方案,您可以在每个测试的 @Before 步骤中清除 cookie。

例如:

@Test
public void deleteAllCookiesExample() {
    driver = new ChromeDriver(); //initialize with Edge here
    String url ="http://www.example.com";
    driver.navigate().to(url);
    driver.manage().deleteAllCookies();
}

或删除具有特定名称的 cookie:

@Test
public void deleteCookieNamedExample() {
    driver = new ChromeDriver(); //initialize with Edge here
    String URL="http://www.example.com";
    driver.navigate().to(URL);
    driver.manage().deleteCookieNamed("__utmb"); //example cookie name
}

P.S。在以前的 IE 版本中有一个 bug,只有当您访问该页面时,cookie 才能访问。所以考虑在那之后重新加载页面或尝试类似的东西(它在 IE11 中工作):

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
WebDriver driver = new InternetExplorerDriver(caps);

我自己今天就遇到了这个问题,所以最后我让它工作的唯一方法非常简单。您必须在 Edge 设置中检查 "Always clear this when I close the browser"(以及 select 您想要清除的内容)。

使用该设置,您将在每个新驱动程序初始化时拥有干净的会话:)