【问题标题】:Unable to delete specific named cookie (Selenium WebDriver, C#, Chrome)无法删除特定命名的 cookie(Selenium WebDriver、C#、Chrome)
【发布时间】:2018-11-10 17:35:49
【问题描述】:

我的一些测试使用 DeleteCookies 方法来执行此操作:

chromeDriver.Manage().Cookies.DeleteAllCookies();

这一直很棒,直到今天,其中一项测试使应用程序异常:

所需的防伪cookie“__RequestVerificationToken”不存在。

所以我决定删除有问题的特定 cookie,而不是全部:

chromeDriver.Manage().Cookies.DeleteCookieNamed("user%40user.com");

指定的cookie没有被删除。

为了验证 DeleteCookieNamed 确实有效,我删除了该应用创建的另外两个 cookie,并且它有效。

当用户登录时,应用程序将 cookie 的名称设置为他们的用户名(在本例中为 user@user.com)...但可能由于 URL 编码,将 @ 更改为 %40。

确实删除的 cookie 不包含 %40。

如果您无法删除名称中包含 %40 的 cookie,那么 DeleteAllCookies 将不起作用。因此,我怀疑我的目标 cookie 具有依赖关系,类似于关系数据库中外键约束的工作方式,因此我需要按特定顺序删除一个或多个其他 cookie,然后才能删除指定的 cookie。

粗略地浏览一下 Google,我得到了有关如何在 Chrome 中删除 cookie 的说明,而不是 Chrome 如何删除 cookie。喜悦。我今天时间不多了,请问您有什么见解吗?

【问题讨论】:

  • 我不完全相信 %40 与这个问题无关,所以我用 @ 符号手动设置了 cookie,当我调用 DeleteCookieNamed 时它被删除了,而当我更改时没有@ 符号回到 %40。这仍然不能解释为什么 DeleteAllCookies 会删除名称中带有 %40 的 cookie,所以就是这样。在删除 cookie 名称时,也许有一些方法可以处理 cookie 名称中的 URL 编码字符。我又没时间了,但会检查的。

标签: google-chrome selenium cookies named


【解决方案1】:

当我遇到这个问题时,我解决这个问题的方法是通过 selenium 创建 cookie,然后我能够删除它。尽管不在 cookie 名称中使用 @,但我确实发现它更容易。希望对您有所帮助。

【讨论】:

  • 我的测试要求我通过应用程序和 Selenium 创建 cookie。我有一个“CanLogIn”测试,它模拟用户通过相关输入元素登录,它创建名称包含 %40 的 cookie,这是其他测试(需要删除所述 cookie)失败的地方。
【解决方案2】:

对于我的特殊情况,这似乎是一个合适的解决方法 - 最后运行 CanLogIn 测试,使用播放列表:

https://stackoverflow.com/a/29039261/1875540

【讨论】:

  • 一天后,播放列表忘记了添加测试的顺序。据称这可以通过编辑 .playlist 文件并将相关测试的标签移动到列表末尾来解决,但对我不起作用。叹息。
【解决方案3】:

使用 Chrome 开发者工具: https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-deleteCookies

代码会是这样的:

  ChromeDriver driver;


  var parameters = new Dictionary<string, object> 
  {
                ["name"] = "user%40user.com";
  };
  driver.ExecuteChromeCommand("Network.deleteCookies", parameters);

您也可以通过 Selenium DevTools 执行此操作。但是由于它们在集成方面存在一些问题,并且您可能需要在每次 google 更新后升级库,因此使用上述代码可以更高效、更轻松。

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2023-03-27
    • 2013-04-14
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 2018-02-01
    • 2020-07-19
    • 2016-12-10
    相关资源
    最近更新 更多