Истекает сеанс IE с использованием WatiN - PullRequest
2 голосов
/ 30 ноября 2011

Я пытаюсь написать приемочный тест с использованием WatiN, который проверяет, перенаправлен ли пользователь на страницу входа в систему, если он переходит на страницу после истечения времени сеанса. Я использую класс WatiN IE для браузера и пробую следующее:

// 1. Login

// 2. Do this:
Browser.ClearCookies();
Browser.ClearCache();

// 3. Navigate to a different page

Но пользователь всегда вошел в систему. Другая информация:

  1. Я запускаю тест через графический интерфейс NUnit, работающий от имени администратора
  2. Это сайт ASP.NET MVC 3, использующий проверку подлинности с помощью форм и состояние сеанса в процессе
  3. Я использую IE9.
  4. Если я вручную удаляю все файлы cookie в Chrome, пользователь выходит из системы
  5. Если я вручную очищаю все куки в IE, пользователь остается в системе
  6. Если я позвоню Browser.Eval("alert(document.cookie)"); в IE, он выдаст пустую строку

Учитывая вышесказанное, я предполагаю, что это странная вещь с IE; какие-нибудь идеи, как я могу обойти это?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Оказывается, это связано с тем, как IE работает с сессиями, и с удалением файлов cookie аутентификации;В этом блоге я обнаружил, что вы можете очистить информацию аутентификации в IE, заставив WatiN выполнить следующий JavaScript:

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

Это работает!После выполнения этой строки сеанс очищается, и навигация по следующей странице перенаправляет на экран входа в систему.

0 голосов
/ 30 ноября 2011

Я немного огляделся и нашел эту страницу: http://fwdnug.com/blogs/ddodgen/archive/2008/07/03/watin-api-clearcookies.aspx

По сути, говорит, что WaTiN не имеет прав на удаление куки в IE, поэтому метод ClearCookies не работает. Я бы просто установил ваш файл cookie для проверки подлинности (я думаю, что по умолчанию ASP.NET_SessionId), чтобы очистить и посмотреть, работает ли он.

...