我的一些测试使用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的方式。喜悦。我今天已经没时间了,请你有任何见解吗?
答案 0 :(得分:0)
我解决这个问题的方法是通过selenium创建cookie,然后我就能删除它。虽然不在cookie名称中使用@,但我确实发现它更容易。希望有所帮助。
答案 1 :(得分:0)
对于我的特定情况,这似乎是一种合适的解决方法 - 最后使用播放列表运行CanLogIn测试:
答案 2 :(得分:0)
使用 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 更新后升级库,因此使用上述代码可以更高效、更轻松。