t.me/atinfo_chat Telegram группа по автоматизации тестирования

SSO(Single sign on) при работе в Selenium WebDriver

Теги: #<Tag:0x00007f9b041520b0> #<Tag:0x00007f9b04151f48> #<Tag:0x00007f9b04151e08> #<Tag:0x00007f9b04151ca0>

Здравствуйте! Проблема: при написании автотеста на Java с помощью Selenium браузер Chrome требует SSO(Single sign on) авторизацию, то есть появляется окошко с формами для логина и пароля. Как можно при помощи Selenium осуществить эту аутентификацию? Пробовал писать скрипт на autoIT, но безуспешно. Очень мало информации в интернете по этой теме. Буду благодарен за любую информацию.

покажите скриншот окошка

Вангую что это basic auth )
Решаем через запись логина-пароля в url

https://login:password@example.com
3 Симпатий

sso через basic auth ?)

Использовать webdriver для авторизации это плохая практика.
Попробуйте использовать отправку запросов к сервису авторизации и используйте полученную сессию в дальнейшем. Обратитесь к разработчикам, они смогут помочь с этим.

2 Симпатий

Бывало что путали SSO с basic auth )

Спасибо за помощь, однако данным способом я пользовался при basic авторизации, и он работал, конечно. Сейчас же у меня точно SSO авторизация и такая штука не прокатывает.

Скриншот по некоторым причинам скинуть не могу , название окошка: “Необходима авторизация”. В ФФ обойти это легче, думаю, но нужно именно в хроме.

Просто предположил что всё проще, по описанию сложилось впечатление что это браузер выводит окошко с логином и паролем.

Ну тогда вы хотя бы название SSO-решения приведите. Их вон сколько


Вдруг у кого-то есть опыт.
AutoIT может не подойти, из-за того что такие вещи как правило защищают от подобного.
Если вам не смогут помочь те кто отвечает за SSO, возможно придётся смотреть в сторону аппаратной эмуляции HID-устройств.

Спасибо за помощь, буду ковырять

Не можете снять скриншот auth поп апа ?)

Это Basic auth :smiley:

1 Симпатия

Скорее всего при переходе на основной адрес происходит переадресация на другой домен.
И логин/пароль из url уже не помогают.
Делаем так - сначала заходим на адрес куда перенаправляют, а затем на основной

driver.get("https://login:password@адрес_переадресации.рф");
driver.get("https://login:password@основной_адрес.рф")

не совсем понятно - ето native pop up или html ? похоже что native - для етого https://stackoverflow.com/questions/42358965/how-to-handle-authentication-alert-of-browser-in-selenium-webdriver

Неожиданно, мне утверждали обратное, спасибо!
Обнаружилась другая проблема: на компе, где этот тест должен работать, запись “https://login:password@domain.com” не работает (в смысле вообще не воспринимается подобная запись), стоит хром 41 версии, использую вебдрайвер 2.53.1
Сделал скрипт через autoIT, на моем ноуте этот скрипт победил аутентификацию, на компе же со старой версией хрома и вебдрайвера не работает.
Скрипт просто вставляет логин и пароль в нужное место.

это native

Похожий вопрос уже был недавно - Как запускать тесты с прокси у которого есть логин и пароль

еще нашел способ через BrowserMob Proxy
http://internetka.in.ua/selenium-basic-authorization/

Возможно у вас в логине/пароле есть символы которые нужно закодировать (URLEncode)
т.е., если пароль pa$$word то в URL мы ставим pa%24%24word

Есть множество сайтов где это можно сделать онлайн, например - https://www.samltool.com/url.php