我正在使用Selenium IDE(FF 7.1上的1.3.0)来创建测试用例。测试用例的目的是登录到ASP.NET应用程序,清除会话cookie(模拟超时或类似的东西),然后导航到登录用户看到的默认页面,并验证它们是否已转发到登录页面。非常简单......但我只是潜入Selenium IDE,所以我想开始简单。
似乎deleteAllVisibleCookies
是执行此操作的正确方法:
deleteAllVisibleCookies() 使用recurse = true调用deleteCookie 当前页面可见的所有Cookie。如文档中所述 对于deleteCookie,recurse = true可能比简单删除慢得多 使用已知域/路径的cookie。
我的Selenium IDE计划的相关部分看起来像这样:
assertTitle Project List
assertTextPresent Start a New Project
deleteAllVisibleCookies
open /path/to/intro/page.aspx
assertTitle Log In
在运行测试计划时,我正在查看通过FireCookie和Firebug设置的cookie。
一旦用户登录(在assertTextPresent
部分),我会看到两个cookie - ASP.NET_SessionId和另一个cookie,这两个cookie都设置为相同的域(domain.local)和路径(/)
调用deleteAllVisibleCookies
时,我看到第二个cookie被删除,但ASP.NET_SessionId没有被删除。
我尝试在pause 5000
之后添加deleteAllVisibleCookies
,因为文档中似乎有一些迹象表明通过Cookie递归的过程可能非常耗时,但这没有帮助。
我尝试使用deleteAllVisibleCookiesAndWait
,但这只是超时而且失败 - 我不完全确定文档是否在那里做错了,或者即使这是正确的调用情况。
我在这里错过了什么吗?
修改:我只会将deleteCookie
与recurse选项一起使用,但我需要使用此测试计划来处理各种基本网址,以便对域进行硬编码,就像我一样d需要使用deleteCookie
不是一种选择。
编辑2 :我甚至无法通过为参数指定名称(ASP.NET_SessionId
)和domain=domain.local,recurse=true,path=/
来删除会话Cookie。
答案 0 :(得分:4)
无法删除ASP.NET_SessionId cookie,因为它已标记为HttpOnly。
设置Cookie:ASP.NET_SessionId = zecwj145rv2wkt45ekwangyq;路径= /;仅Http
根据this post,无论如何都不能删除或修改HTTP以外的cookie。还有isn't a way to turn off HttpOnly for this cookie。