C# 使用WatiN使IE会话过期
我正在尝试使用WatiN编写一个验收测试,如果用户在会话超时后导航到某个页面,则检查该用户是否被重定向到登录页面。我正在使用WatiN的C# 使用WatiN使IE会话过期,c#,asp.net-mvc-3,internet-explorer,watin,session-cookies,C#,Asp.net Mvc 3,Internet Explorer,Watin,Session Cookies,我正在尝试使用WatiN编写一个验收测试,如果用户在会话超时后导航到某个页面,则检查该用户是否被重定向到登录页面。我正在使用WatiN的IE类作为浏览器,并尝试以下操作: // 1. Login // 2. Do this: Browser.ClearCookies(); Browser.ClearCache(); // 3. Navigate to a different page 但用户始终保持登录状态。其他资料: 我正在以管理员身份通过NUnit GUI运行测试 这是一个ASP.NE
IE
类作为浏览器,并尝试以下操作:
// 1. Login
// 2. Do this:
Browser.ClearCookies();
Browser.ClearCache();
// 3. Navigate to a different page
但用户始终保持登录状态。其他资料:
Browser.Eval(“alert(document.cookie)”代码>在IE中,它会提醒一个空字符串
鉴于上述情况,我认为这是IE的一个怪癖;有没有办法解决这个问题?我四处看了看,发现了这个页面:
本质上说,WaTiN无权删除IE中的Cookie,因此ClearCookie方法不起作用。我只是将您的身份验证cookie(我认为默认值是ASP.NET_SessionId)设置为空,看看是否有效。结果表明,这是由于IE处理会话的方式和删除身份验证cookie造成的;我发现,通过让WatiN执行以下JavaScript,可以清除IE中的身份验证信息:
Browser.Eval(@"document.execCommand(""ClearAuthenticationCache"", false);");
这管用!此行执行后,会话将被清除,下一页导航将重定向到登录屏幕。该页声明“使用ClearCookie进行的测试将失败”,但这不是我看到的。我正在以管理员的身份通过NUnit GUI运行测试,所以这可能解决了这个问题<代码>文档。cookie为空,手动清除IE浏览器中的cookie不会让我注销,因此我不确定这是否正确。这确实有效,但是,我们发现它可能会导致后续browser.Eval调用出现问题。在我们的测试中,代码:
Browser.Eval(“1”)
在清除缓存调用之前按预期返回“1”,但在相同的Eval请求之后返回“[object Document]”。只是要注意一下。谢谢你提醒我,亚伦!:)