Как обойти проверку подлинности NTLM во время тестирования автоматизации с использованием веб-драйвера Selenium для браузера Chrome? - PullRequest
6 голосов
/ 22 мая 2019

Я использовал следующий код Python для обхода всплывающего окна NTLM.

chromedriver = webdriver.Chrome(executable_path=chromedriver_path, chrome_options=options)
chromedriver.get("https://username:password@url.com")

Всплывающее окно не может обойтись и все еще существует, и тестовые перерывы.

Ответы [ 2 ]

3 голосов
/ 23 мая 2019

Как @ BhuvaneshMani упомянул в комментарии к этот ответ ...

Вам необходимо наблюдать, как NTLM проходит аутентификацию.(используйте devTools в chrome в разделе «Сеть»)

После того, как вы найдете вызов аутентификации, используйте этот URL!

Как @ Пример * BhuvaneshMani :

For e.g., app url may be app.url however after hitting the url, it redirects to auth.server.url. So if you append username and password into app.url it wont work. It should be appended to auth.server.url.

Итак, ваш код должен выглядеть примерно так:

driver = webdriver.Chrome(executable_path=chromedriver_path, chrome_options=options)
driver.get("https://username:password@auth.server.com")

Или (я обнаружил, что большинство вызовов аутентификации относятся к одному и тому же URL-адресу только к порту сервера:port:8080/auth/login)

driver.get("https://username:password@url.com:8080/auth/login")

Надеюсь, это поможет вам!

1 голос
/ 14 июня 2019

Возможно, вы сталкиваетесь с проблемой входа в домен, поскольку браузер преобразует разделитель домена \ в / и учетные данные становятся недействительными.Используйте закодированный разделитель %5C, и он будет работать.

Браузер преобразует https://domain\username:password@URL в https://domain/username:password@URL.

Кодированный пользователем разделитель для запроса.
https://domain\username:password@URL => https://domain%5Cusername:password@URL

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