有没有办法使用WatiN获取网站设置的所有Cookie的列表?
WatiN中的IE浏览器类提供了GetCookie
方法,允许您检索特定的cookie,但我想迭代已设置的所有cookie。
有两种方法可以让你获得cookie:
CookieCollection cookies = _browser.GetCookiesForUrl(new Uri(url));
和
CookieContainer cookies = _browser.GetCookieContainerForUrl(new Uri(url));
但这两个都是空的。同时为特定cookie调用GetCookie
方法将返回null。
有关如何使其发挥作用的任何建议吗?
答案 0 :(得分:4)
最近我不得不处理这种情况。起初我认为我正在寻找的cookie是HttpOnly,但我看了一下使用WireShark并且没有HttpOnly标志。
在这种情况下,不确定为什么GetCookieContainerForUrl失败,但客户端脚本调用显示cookie仍然存在:
ie.Eval("document.cookie");
您可能希望在每次使用数据包嗅探之前尝试该语句。
答案 1 :(得分:0)
嗯,我想这些方法应该按预期工作,但是你可能想要获得HttpOnly
个cookie?许多站点/ Web框架为重要的cookie设置了这个标志,特别是在涉及“会话ID”cookie时。你无法在WatiN中阅读它们,而且根本无法阅读它们。我一直在寻找解决方案,我得到的只有一篇文章:Retrieve HttpOnly Session Cookie in WebBrowser
如果您想知道您尝试获取Cookie的网站是否在Cookie上设置了HttpOnly
标记,请使用Fiddler2并查看回复标题。