Как передать HttpAuthentication в селеновый веб-драйвер - PullRequest
0 голосов
/ 13 февраля 2012

В моем проекте на python процесс входа в систему обрабатывается обработчиком HttpBasicAuth.После получения ответа я должен загрузить главную страницу через селен.

Как это должно быть сделано?

У него есть baseurl.Когда базовый URL загружен python-selenium, всплывающее окно запрашивает имя пользователя и пароль для аутентификации.Затем он входит в главную страницу.

Вот два шага:

  • Шаг 1: Вход в систему (с использованием обработчика HttpBasicAuth)

Причина, по которой яИспользование обработчика HttpBasicAuth заключается в том, что когда я открываю свой URL, он открывает всплывающее окно для входа в систему.Так как мы не знали управления всплывающим модальным диалоговым окном, которое должно обрабатываться Selenium, мы переключились на HttpAuthentication.

(Это часть, для которой мне нужны предложения.)

  • Шаг 2: После получения ответа обработайте оставшиеся шаги в селене.

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

Как я могу сделать сайт аутентифицированным в Selenium?Нужно ли создавать cookie для веб-драйвера Selenium с помощью ответа HttpBasicAuthentication, чтобы пропустить окно входа в систему?

1 Ответ

5 голосов
/ 13 февраля 2012

Эта проблема может быть легко решена путем добавления заголовка к вашему HTTP-ответу, к сожалению, Selenium2 не поддерживает эту функцию.

Вы можете попробовать использовать его следующим образом, вставив имя пользователя и пароль в URL:

browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://myusername:mypassword@www.yourpage.com") # Load page

Обратите внимание, что это не работает для IE (из-за проблем безопасности), но вы можете заставить его работать, немного изменив реестр.

Согласно вашему комментарию, я не очень понимаю ваш вопрос. Если вы выполните первый запрос, как я указал, браузер автоматически сохранит специальный заголовок Authorization: с конкатенацией пароля и имени пользователя и в кодировке base64. Все остальные запросы теперь будут аутентифицироваться, пока вы не закроете браузер.

Этот метод имеет мало общего с Selenium 1 или Selenium 2, но поддерживается конкретным браузером. IE - единственный известный мне браузер, который ограничивает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...