Selenium RemoteWebDriver и диалоги аутентификации Windows

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

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

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

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

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

  • Using the IAlert functionality (like here). However, this isn't implemented in the .NET bindings, and doesn't work for all browsers as far as I can tell.
    • Using the Robot API to interact with the popup (like here). But this is for running on your local machine, and not supported by RemoteWebDriver.
    • Использование AutoIt, чтобы сделать то же самое, что и Robot API. Однако это не будет работать с использованием RemoteWebDriver.
    • Передача учетных данных в URL (например: http://username:[email protected]). Однако это не работает для проверки подлинности Windows — только обычная базовая проверка подлинности HTTP.

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

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

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


person stevehayter    schedule 15.08.2016    source источник
comment
Ваше решение прокси хорошее. Я просто укажу, что методы аутентификации в интерфейсе IAlert наверняка были реализованы в привязках .NET. Метод называется SetAuthenticationCredentials. Однако вы совершенно правы, что это реализовано не во всех браузерах (только в IE, съеденном на момент написания этой статьи).   -  person JimEvans    schedule 15.08.2016
comment
Спасибо @JimEvans - я исправляюсь по поводу реализации IAlert в привязках .NET :). Есть так много старых сообщений в блогах, когда их не было, что это может сбить с толку! Спасибо за разъяснение, хотя.   -  person stevehayter    schedule 16.08.2016


Ответы (1)


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

http://cntlm.sourceforge.net/

person stevehayter    schedule 15.08.2016