0

Я видел, как этот вопрос задавали несколько раз, и предлагается множество решений, но ни один из них не работает для RemoteWebDriver (т. Е. Используя селеновую сетку). Обычно они сосредоточены вокруг, используя локальные классы ChromeDriver/FirefoxDriver/IEDriver.Selenium RemoteWebDriver и Windows Authentication Dialogs

Я использую привязки .NET, кстати :).

Что я хочу сделать, достаточно просто (с точки зрения требований). У меня есть настройка Selenium Server, и в настоящее время я использую RemoteWebDriver для выполнения автоматических тестов пользовательского интерфейса на разных сайтах. Эта настройка работает нормально.

Однако на некоторых сайтах используется аутентификация NTLM/Windows, и нам необходимо начать автоматические тесты для них. Однако, насколько я могу судить, для этого нет решения.

Я видел следующие «решения», но - если кто-то может исправить меня - они либо не работают последовательно, или не будет работать, используя RemoteWebDriver:

  • Использование функции IAlert (как here) , Однако это не реализовано в привязках .NET и не работает для всех браузеров, насколько я могу судить.
    • Использование API робота для взаимодействия со всплывающим окном (например, here). Но это для работы на вашей локальной машине и не поддерживается RemoteWebDriver.
    • Использование AutoIt, чтобы сделать аналогичную вещь с API-интерфейсом Robot. Однако это не будет работать с помощью RemoteWebDriver.
    • Передача учетных данных в URL-адресе (например: http://username:[email protected]). Однако это не работает для проверки подлинности Windows - просто обычная HTTP-аутентификация.

Я не могу реально увидеть какие-либо другие решения, если кто-либо другой не может помочь?

Обходной путь в настоящее время заключается в регистрации на сервере Selenium, переходе на сайты в каждом браузере и сохранении учетных данных. Но это не идеально, и добавляет уровень ручного взаимодействия для каждого теста.

Любая помощь будет оценена :).

+0

Ваше решение прокси-сервера является хорошим. Я просто укажу, что методы аутентификации на интерфейсе IAlert, безусловно, были реализованы в привязках .NET. Этот метод называется 'SetAuthenticationCredentials'. Тем не менее, вы абсолютно правы, что он не реализован во всех браузерах (только IE, съел время написания). – JimEvans

+0

Спасибо @JimEvans - я стою исправлено о том, что IAlert реализуется в привязках .NET :). Есть так много старых сообщений в блогах, когда это было не то, что это может быть довольно запутанным! Спасибо за разъяснение. – stevehayter

ответ

0

Похоже, что я нашел свое собственное решение - используйте прокси-сервер, который автоматически добавляет переговоры/авторизацию NTLM. Довольно просто настроить :).

http://cntlm.sourceforge.net/