Встраивание учетных данных в URL не работает с селеном и хромом - PullRequest
0 голосов
/ 11 марта 2019

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

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

Заранее благодарен за помощь!

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

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

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

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

1 Ответ

0 голосов
/ 30 марта 2019

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

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

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

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