等待用webdriver删除cookie?

时间:2014-12-16 12:09:16

标签: cookies webdriver

我有一个关于使用webdriver删除cookie的问题。 我应该创建在删除cookie时等待的其他代码,或者此功能是否会为我完成?

driver.Manage().Cookies.DeleteAllCookies();

我的meam测试不会进入后续步骤,直到所有的cookie都被删除?

3 个答案:

答案 0 :(得分:3)

在我的测试中,driver.manage().deleteAllCookies()无阻塞。 所以我遇到了一些问题,即在测试过程中删除了一些cookie。

所以也许你想在tearDown方法中做deleteAllCookies(), 或者您需要在通话后等待:

driver.manage().deleteAllCookies();
try {
  Thread.sleep(5000);
} catch (InterruptedException e) {
  e.printStackTrace();
}

答案 1 :(得分:1)

这取决于受测试的应用程序(AUT)如何处理会话。通常我们这样做 driver.quit(请参阅here)它应关闭自动关闭会话的浏览器窗口。

如果没有发生,那么AUT必须以不同的方式处理它,正如您所提到的那样 driver.Manage().Cookies.DeleteAllCookies()应清除所有cookie。如果您在同一个webdriver会话上运行多个测试,则还应使用明确的cookie,在这种情况下,浏览器不会关闭,因此会话不会被清除。

通常,最好使用AUT的注销功能,然后使用明确的cookie或driver.quit()作为测试清理的一部分。

答案 2 :(得分:0)

因为它是非阻塞的,所以如果您重复使用同一浏览器,则可以在清除所有Cookie之前继续进行下一个测试,您可以轮询当前计数,并在必要时尝试再次清除:

C#

while (_driver.Manage().Cookies.AllCookies.Count > 0)
{
  driver.Manage().Cookies.DeleteAllCookies();
  Thread.Sleep(100);
  
}