Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

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

autoit
java
selenium
webdriver
Теги: #<Tag:0x00007fedb80c2148> #<Tag:0x00007fedb80c1e50> #<Tag:0x00007fedb80c1ce8> #<Tag:0x00007fedb80c1ba8>

(Дмитрий Андреевич Макаровский) #1

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


(Taras) #2

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


(Lev Yarushin) #3

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

https://login:password@example.com

(Taras) #4

sso через basic auth ?)


(Nikita) #5

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


(Lev Yarushin) #6

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


(Дмитрий Андреевич Макаровский) #7

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


(Дмитрий Андреевич Макаровский) #8

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


(Lev Yarushin) #9

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

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


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


(Дмитрий Андреевич Макаровский) #10

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


(Taras) #11

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


(Дмитрий Андреевич Макаровский) #12


(Lev Yarushin) #13

Это Basic auth :smiley:


(Lev Yarushin) #14

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

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

(Taras) #15

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


(Дмитрий Андреевич Макаровский) #16

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


(Дмитрий Андреевич Макаровский) #17

это native


(Остап Олексин) #18

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


(Дмитрий Андреевич Макаровский) #19

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


(Lev Yarushin) #20

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

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