【发布时间】: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