有没有办法从C#Selenium测试中删除HttpOnly cookie?

Ben*_*enA 5 c# cookies automated-tests selenium-grid selenium-rc

我有一组C#Selenium测试,需要删除一个设置了HttpOnly标志的cookie.

不幸的是,DefaultSelenium.GetCookie()DefaultSelenium.DeleteCookie()命令无法访问cookie,因为它设置了HttpOnly标志.我已经通过手动删除标志来确认这一点,并检查对这些方法中的任何一个的后续调用是否能够愉快地操纵有问题的cookie.

有没有其他方法可以通过Selenium .NET客户端驱动程序执行此操作?

欢迎所有想法!

Ben*_*enA 5

由于我无法通过客户端驱动程序执行此操作,因此我不得不寻找替代方法。幸运的是,被测试的 Web 应用程序有一系列测试页面允许与会话 cookie(即我试图访问的 HttpOnly cookie)进行交互,因此我能够通过自动化这些页面来实现我的目标。

对于遇到此问题的任何其他人,这里有一个关于 HttpOnly 如何烧入 ASP.NET的很好的答案

此外,这个 SO 答案指出了如何通过应用程序的 web.config 操作 HttpOnly,但需要注意的是它只能打开,不能关闭。

任何愿意为了测试目的而改变他们的应用程序的人都应该查看这个解决方法,基本上改变 Global.asax 中的 Session_Start 方法以去除 HttpOnly 标志,以便客户端脚本可以访问它。然而,这种解决方法只能在测试环境中使用,因为它打开了引入 HttpOnly 以关闭的安全漏洞 - 即 XSS 漏洞。Jeff Atwood在这里写了一篇很好的博客文章。