Как вы тестируете страницы, требующие аутентификации с помощью Selenium?

Мне нужно протестировать веб-приложение, используя Selenium. Приложение довольно распространено в своей настройке: для этого требуется вход для большинства функций. При загрузке страницы, если пользователь не аутентифицирован, он будет перенаправлен на форму входа, а затем обратно на запрашиваемую страницу после предоставления учетных данных.

Какой обычный способ обойти это с помощью Selenium? Я полагаю, что люди не регистрируются на каждом отдельном тесте, так как это может привести к значительным накладным расходам в больших наборах тестов. Есть ли способ настроить сеанс в тесте, а затем использовать информацию cookie для последующих тестов или выполнить условный вход (без повторения массового повторения кода!)?

Я использую PHPUnit с Selenium ATM.

Спасибо!

Гонсало

Ответ 1

(Я использую С# + NUnit + Selenium RC)

В большинстве случаев каждый тест проходит через форму входа. Однако, если я пишу серию тестов, которые очень короткие (< 10 секунд каждый), и их очень много, я обычно использую один и тот же экземпляр браузера в тестах, перемещая вызовы запуска селена selenium из SetUp\TearDown методам SetUp\TearDown Test Fixture. Это позволяет избежать затрат на повторную аутентификацию, а также затраты на запуск нового браузера каждый раз. Я уверен, что вы можете сделать что-то подобное с PHPUnit.

Ответ 2

Если это основной http-адрес auth, вы можете использовать имя пользователя/пароль с запросом url, как описано в разделе Selenium FAQ: http://wiki.openqa. орг/дисплей/SEL/Селен + ядро ​​+ FAQ # SeleniumCoreFAQ-HowdoIuseSeleniumtologintositesthatrequireHTTPbasicauthentication% 28wherethebrowsermakesamodaldialogaskingforcredentials% 29% 3F

Как использовать Selenium для входа в систему сайтов, для которых требуется базовый HTTP аутентификация (где браузер делает модальный диалог с просьбой учетные данные)?

Используйте имя пользователя и пароль в URL, как описано в RFC 1738: Test Тип открытый   http://myusername:[email protected]/blah/blah/blah

Обратите внимание, что в Internet Explorer это не будет работать, поскольку Microsoft отключить имена пользователей/пароли в URL-адресах в IE. Однако вы можете добавить, что функциональности, изменяя ваш реестр, как описано в связанная статья KB. Установите "iexplore.exe" DWORD в 0 в HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE.

Если вы не хотите изменять реестр, вы всегда можете просто используйте Selenium Remote Control, который автоматически устанавливает этот реестр для вас с версии 0.9.2.