Встраивание учетных данных в URL-адрес не работает с селеном и хромом

Я использую селен для автоматизации тестирования разрабатываемого пользовательского интерфейса, и я застрял, пытаясь получить доступ к сайту из-за аутентификации. Я видел, что вы можете аутентифицировать встраивание учетных данных в URL-адрес, например «http://admin:[email protected]», но я пробовал использовать драйвер Selenium как driver.get («http://admin:[email protected]»), но он не работает, и всплывающее окно все еще появляется. Я также попытался захватить это всплывающее окно, используя Alert as driver.switchTo().alert(), но он говорит, что оповещения нет. Я даже включил веб-ожидание предупреждения, и в браузере я ясно вижу, что всплывающее окно есть, но безрезультатно. Я даже пытался использовать робота Java для записи учетных данных, но это не сработало, потому что мы запускаем его в безголовой среде, а робот выдает исключение.

Я видел, что вы можете использовать стороннее программное обеспечение, такое как AutoIT или Sikuli, но я просто хотел знать, есть ли особый способ использования драйвера селена для этого типа аутентификации?

Заранее спасибо за вашу помощь!

РЕДАКТИРОВАТЬ 1:

Итак, благодаря рекомендациям Тейлор мне удалось заставить его работать в браузере Firefox, добавив код для обработки предупреждения:

Alert alert=driver.switchTo().alert();
alert.sendKeys(user+Keys.TAB+pass+Keys.TAB);
alert.accept();
driver.switchTo().defaultContent();

С помощью этого кода мне удалось отправить имя пользователя и пароль для аутентификации, но для Chrome это не работает. Я пытался исследовать пару сайтов, но единственный ответ, который работает для всех, — это встраивание учетных данных в URL-адрес, и это не работает для меня, как описано выше. Одной похожей ссылкой была Selenium не может принять предупреждение от Google Chrome [java], но я не хочу игнорировать предупреждение, так как мне нужно ввести туда учетные данные. Любая другая помощь будет принята с благодарностью!

Какую аутентификацию ожидает приложение?

Taylor 11.03.2019 17:36

Приложение ожидает базовое имя пользователя и пароль для аутентификации.

Isaac Rivera 11.03.2019 17:39

Http basic для селена, попробуйте: sqa.stackexchange.com/questions/12892/…

Taylor 11.03.2019 17:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
1 274
1

Ответы 1

Итак, из того, что я прочитал, я считаю, что проблема заключается в самом драйвере Chrome, поскольку он на самом деле не может распознать наличие предупреждения, но драйвер Firefox может. Судя по тому, что я видел, один драйвер поддерживает некоторые вещи, а другой драйвер поддерживает другие вещи, например, вы можете получать журналы браузера из Chrome, но не из Firefox, и вы можете получать оповещения из Firefox, но не из Chrome.

Я нашел обходной путь для этого. Встраивание учетных данных в URL-адрес не сработало, потому что сами учетные данные были не для страницы, которую я тестировал, а для вызова REST API, который делает страница, требующая аутентификации. Как только я понял это, я теперь делаю два вызова с драйвером: первый с учетными данными, встроенными в URL-адрес, к вызову REST, который страница делает только для того, чтобы учетные данные кэшировались и использовались повторно; а второй — на саму страницу, которая теперь загружается без предупреждения.

Надеюсь, это поможет кому-то еще!

Другие вопросы по теме