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

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

autoit
java
webdriver
selenium
Теги: #<Tag:0x00007fedb74330a8> #<Tag:0x00007fedb7432f68> #<Tag:0x00007fedb7432db0> #<Tag:0x00007fedb7432bd0>

(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


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

Как я понимаю, проблема не в этом, в некоторых версиях хрома такая запись просто не поддерживается. Браузер просто воспринимает это как url и пишет, что адрес https://login:password@domain.com не найден. Сейчас пытаюсь сделать через BrowserMob Proxy.


(Lev Yarushin) #22

Ну насколько мне известно, это было сделано в 59-м хроме
https://www.chromestatus.com/feature/5669008342777856
А теперь обратно вернули )

Только что проверил в 41-й версии Chrome - работает basic auth через url
Попробуйте через прокси снять лог, большая вероятность что проблема в url


(Taras) #23

тогда в той ссилке, что я вставил есть решение


(Mike Maciejewski) #24

1.Создаете экстеншн для хрома.

var config = {
mode: “fixed_servers”,
rules: {
singleProxy: {
scheme: “http”,
host: “proxy ip”,
port: parseInt(proxy port)
},
bypassList: [“URL”]
}
};

chrome.proxy.settings.set({value: config, scope: “regular”}, function () {
});

function callbackFn(details) {
return {
authCredentials: {

        username: "login",
        password: "password"
    }
};

}

chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
[‘blocking’]
);

  1. Упаковка через хром
  2. Кладете в папку к тестам.
  3. На сервере или на локали разворачиваете прокси.
  4. Читаете его и прокидываете в хром при создании драйвера.

Код экстеншна взят на просторах интернета. Проверен. Тесты на протяжении полугода работают так. Все ок.


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

Спасибо большое всем за помощь!
Но все равно не вышло пока пройти авторизацию.
На данный момент: окошко не появляется, переадресации нет, переходит на нужный сайт, но страница не загружается. Была одна ошибка со слешем внутри логина, поправил.


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

В результате долгих мучений попробовал снова через AutoIT и все заработало. Если вдруг выйдет сделать без этого скрипта, напишу в чем была проблема сюда.


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

А вы уверены, что это basic auth?
Я пробовал работать на phantomjs на своем ноутбуке и проходил basic auth,
когда переходил на компьютер, где появлялось выше представленное мной окошко, аутентификация не работала. Использовал selenium, phantomjs одной версии и там, и там.


(Юрий Чухрай) #28

Тоже начал использовать этот extension для Chroma. До этого использовал SikuliX для борьбы с Basic Authorization для [https], нужна была кросс платформенность (AutoIt - только под Windows).