6

如何清除 PhantomJS + GhostDriver + Selenium WebDriver + WebDriver 客户端系统中每个测试的 cookie?

我的测试过程如下所示:

  1. 以集线器角色启动 selenium-web-driver-standalone。
  2. 以 webdriver 模式启动 phantomjs 并将其附加到 selenium webdriver。
  3. 启动迭代测试套件并启动每个测试套件的 shell 脚本。
  4. 每个测试都使用 webdriver 客户端并与连接到 selenium web 驱动程序的浏览器进行通信。

当我使用 firefox 浏览器而不是 phantomjs 时,所有测试都通过了。但是当我切换到使用 phantomjs 作为浏览器时,所有检查注册的测试都失败了,因为在第一次测试执行后已经设置了 cookie。我可以在每次测试启动时清除所有 cookie 吗?或者我应该在每个单独的测试中重新启动 phantomjs 进程(因为这是在非集线器角色中使用 firefox 和 selenium webdriver)?

4

3 回答 3

2

也许有些题外话,导致作者标记他使用 php 运行测试。

但是,如果您来自 google,并且对清除所有 cookie 的 C# 解决方案感兴趣,请查看以下内容:

// driver is fully initialized PhantomJS instance
driver.Manage().Cookies.DeleteAllCookies();

需要 NuGetPackages:

幻影JS 2.0.0

Selenium. 支持 2.48.2

Selenium.WebDriver 2.48.2

使用 .NETFramework v4.5.2 测试

于 2017-01-28T08:19:48.753 回答
1

您可以使用以下方法删除特定 cookie:

webDriver.manage().deleteCookieNamed("smSession");

并使用以下方法删除所有 cookie:

webDriver.manage().deleteAllCookies();
于 2013-11-06T16:53:55.097 回答
1

我遇到了 GhostDriver 无法清除 localStorage 的类似问题。试试这些建议:

将 driver.get(URL) 转到您的页面后,您可以从 webdriver 在其中执行 javascript,如下所示

function clearCookie(name, domain, path){
    var domain = domain || document.domain;
    var path = path || "/";
    document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};

没有 100% 的解决方案可以删除浏览器 cookie。

问题在于,cookie 不仅由它们的键“名称”唯一标识,而且由它们的“域”和“路径”唯一标识。

在不知道 cookie 的“域”和“路径”的情况下,您无法可靠地删除它。此信息无法通过 JavaScript 的 document.cookie 获得。它也不能通过 HTTP Cookie 标头获得!

但是,如果您知道 cookie 的名称、路径和域,那么您可以通过设置一个过期日期为过去的空 cookie 来清除它

资源:

  1. https://sqa.stackexchange.com/a/10468
  2. https://stackoverflow.com/a/2421786/572348
于 2015-10-05T11:18:24.037 回答