WatiN тестирует с помощью IE.Сбой getCookie только из CruiseControl
-
06-07-2019 - |
Вопрос
Сегодня я добавил несколько простых тестов WatiN в наше приложение, чтобы проверить, правильно ли сохранено значение файла cookie.
Тесты проходят локально на всех машинах в команде.Однако, когда CruiseControl запускает тесты на нашем сервере сборки, эти новые тесты завершаются ошибкой в строке, содержащей
browser.GetCookie(url, cookieName)
Ошибка, указанная в журнале CruiseControl, является старой ошибкой:
Object reference not set to an instance of an object.
Я вошел в систему на сервере сборки с помощью удаленного рабочего стола, используя ту же учетную запись пользователя, под которой работает CruiseControl, и запустил MbUnit вручную, и тесты прошли.Таким образом, это не может быть проблемой с разрешениями на сервере сборки для доступа к файлам cookie.
Я просмотрел всю документацию WatiN для получения справки, но ничего не нашел.Я перезапустил службу CruiseControl.Я перепробовал все, что только смог придумать, и теперь совершенно не понимаю, что может отличаться в том, как круиз-контроль проводит эти тесты.
Кто-нибудь знает, что может быть причиной этого и / или как это устранить?
Решение
Попробуйте запустить CruiseControl как приложение, а не как службу.WatiN имеет тенденцию зависать при запуске из службы (поскольку службы Windows не подключены к сеансу пользовательского интерфейса, а WatiN требуется для обработки диалоговых окон в IE).
Но помимо этого ...напомним, что файлы cookie IE хранятся в вашем профиле пользователя.Профили не загружаются при запуске служб - это демонические процессы, которые выполняются тихо в фоновом режиме и фактически не запускаются в контексте сеанса входа в систему.Я подозреваю, что это и есть причина вашего исключения.