我有一个关于使用webdriver删除cookie的问题。 我应该创建在删除cookie时等待的其他代码,或者此功能是否会为我完成?
driver.Manage().Cookies.DeleteAllCookies();
我的meam测试不会进入后续步骤,直到所有的cookie都被删除?
答案 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);
}