我有一组C#Selenium测试,需要删除设置了HttpOnly标志的cookie。
不幸的是DefaultSelenium.GetCookie()
和DefaultSelenium.DeleteCookie()
命令无法访问cookie,因为它设置了HttpOnly标志。我已经通过手动删除标志来确认这一点,然后检查对这些方法中的任何一个的后续调用是否能够很好地操纵相关的cookie。
有没有其他方法可以通过Selenium .NET客户端驱动程序执行此操作?
欢迎所有想法!
答案 0 :(得分:4)
由于我无法通过客户端驱动程序执行此操作,因此我必须找到另一种方法。幸运的是,正在测试的Web应用程序有一系列测试页面,允许与会话cookie进行交互(是我试图访问的HttpOnly cookie),因此我能够通过自动化这些页面来实现我的目标。
对于遇到此问题的任何其他人来说,关于如何将HttpOnly刻录到ASP.NET中有一个很好的SO answer here。
此外,this SO answer指出如何通过应用程序的web.config操作HttpOnly,但需要注意的是它只能打开,而不能关闭。
任何愿意为测试目的更改其应用程序的人都应该检查this workaround,基本上改变Global.asax中的Session_Start方法以去除HttpOnly标志,以便客户端脚本可以访问它。这种解决方法只应该在测试环境中使用,因为它打开了HttpOnly引入关闭的安全漏洞 - 即XSS漏洞。杰夫阿特伍德写了一篇关于它的好文章here。