使用WatiN使IE会话过期

本文关键字:会话 过期 IE WatiN 使用 | 更新日期: 2023-09-27 18:16:19

我正在尝试使用WatiN编写验收测试,该测试检查用户在会话超时后导航到页面时是否被重定向到登录页面。我正在使用WatiN的IE类浏览器,并尝试以下操作:

// 1. Login
// 2. Do this:
Browser.ClearCookies();
Browser.ClearCache();
// 3. Navigate to a different page

但是用户仍然处于登录状态。其他信息:

  1. 我正在运行测试通过NUnit GUI运行作为管理员
  2. 这是一个ASP。. NET MVC 3站点,使用表单认证和进程内会话状态
  3. 如果我手动清除Chrome中的所有cookie,用户将注销
  4. 如果我手动清除IE中的所有cookie,则用户保持登录
  5. 如果我在IE中调用Browser.Eval("alert(document.cookie)");,它会警告一个空字符串

鉴于上述情况,我认为这是IE的一个怪癖;有什么好办法吗?

使用WatiN使IE会话过期

事实证明,这是由于IE处理会话和删除身份验证cookie的方式;我在这篇博客中发现,你可以通过让WatiN执行以下JavaScript来清除IE中的身份验证信息:

Browser.Eval(@"document.execCommand(""ClearAuthenticationCache"", false);");

这工作!这一行执行后,会话被清除,下一页导航重定向到登录屏幕。

我看了一下,发现这个页面:http://fwdnug.com/blogs/ddodgen/archive/2008/07/03/watin-api-clearcookies.aspx

本质上说WaTiN没有在IE中删除cookie的权利,所以ClearCookies方法不起作用。我只是设置你的验证cookie(s)(我认为默认值是ASP.NET_SessionId)为空,看看这是否有效。