Как выполнить базовую проверку подлинности для FirefoxDriver, ChromeDriver и IEdriver в Selenium WebDriver?

Я использую Selenium-Firefox-драйвер и Selenium-Chrome-Driver версии 2.0a5 ( API веб-драйверов ), и я пытаюсь протестировать веб-приложение, имеющее BASIC-аутентификацию (есть всплывающее окно, которое позволяет аутентифицировать пользователя, когда Я ударил любую страницу, всплывающее окно не является частью HTML).

Теперь мне нужна страtagsя аутентификации пользователя в Firefox, Chrome и IE (скоро я импортирую драйвер IE).

Я читал в нескольких статьях, что я могу установить профиль Firefox, например, что-то вроде:

FirefoxProfile ffProfile = new FirefoxProfile(); ffProfile.setPreference("network.http.phishy-userpass-length", 255); WebDriver driver = new FirefoxDriver(ffProfile); driver.get("http://username:[email protected]"); 

но это не работает для меня. У кого-нибудь есть рабочее решение для этих браузеров?

Я получил его для работы с веб-браузером Firefox следующим образом:

 profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com"); driver = new FirefoxDriver(profile); driver.Navigate().GoToUrl("http://user:[email protected]"); 

Правда, BASIC HTTP-аутентификация в настоящее время не поддерживается, но теперь я получил ее для FF и для Chrome.

Код, который я написал в вопросах, работает для этих драйверов. Я просто попытался использовать FF3.6 в качестве браузера Firefox по умолчанию (установленного в папке Firefox) вместо FF4 (пока не поддерживается). Для IE я могу попытаться отключить проверку подлинности через реестр Windows.

Эта страница http://code.google.com/p/selenium/issues/detail?id=34 может помочь.

Добавьте этот новый профиль Firefox в свой код

 ProfilesIni profile = new ProfilesIni(); FirefoxProfile myprofile = profile.getProfile("myProjectProfile"); //replace "myProjectProfile" with your profile" WebDriver driver = new FirefoxDriver(myprofile); 

Настройки конфигурации Firefox

Это работает отлично, не запрашивая аутентификацию при выполнении следующих настроек.

  • Введите « about: config » на свой URL-адрес FF
  • Теперь введите « Прокси » в поле поиска
  • Убедитесь, что « signon.autologin.proxy » установлен « true » (по умолчанию «false»)

Загрузить по умолчанию / Пользовательский профиль Chrome для запуска тестов с использованием Selenium WebDriver


  1. Загрузить chromedriver.exe
  2. Извлеките папку chromedriver_win_26.0.1383.0.zip и найдите файл .exe в папке C: /

Добавьте этот скрипт в свой код JAVA

 DesiredCapabilities capability = DesiredCapabilities.chrome(); System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe"); capability.setCapability("chrome.switches", Arrays.asList("–disable-extensions")); capability.setCapability("chrome.binary", "C:/Users/user_name/AppData/Local/Google/Chrome/Application/chrome.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data/Default"); driver = new ChromeDriver(capability); 

Примечание. IE не нуждается в настройке профиля для запуска тестов, поскольку они запускаются на сервере, а Firefox и Chrome работают с двоичным кодом.

Если вы хотите включить HTTP-аутентификатор в Internet Explorer, вам нужно отредактировать реестр и добавить его (создавать ключи, если они отсутствуют):

  1. в HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE , создайте файл DWORD iexplore.exe со значением 0

  2. в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE , создайте файл DWORD iexplore.exe со значением 0

  3. Закрыть и снова открыть Internet Explorer

Если у вас есть x64 IE, путь немного отличается:

  • HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE

Для большей переносимости это можно обрабатывать с помощью заглушки API и использования Alert .

Пример кода Java ( образец ):

 import org.openqa.selenium.Alert; import org.openqa.selenium.security.Credentials; public void authenticateUsing(Credentials credentials) { private final Alert alert; alert.authenticateUsing(credentials); } 

См. Также: auth_tests.py

Или путем отправки ключей вручную, например:

 SendKeys("user"); SendKeys("{TAB}"); SendKeys("password"); SendKeys("~"); // Enter 

См. Также следующий запрос функции: # 453 Portable BASIC Auth at GitHub

Связанный:

  • Как отправить заголовки базовой аутентификации в Selenium? в QA SE

Существует решение для проверки подлинности с Selenium 1.x путем ручной настройки заголовков HTTP по адресу http://mogotest.com/blog/2010/06/23/how-to-perform-basic-auth-in-selenium, но я не думайте, что это можно передать Selenium 2, так как у вас нет доступа к заголовкам.

Согласно информации, приведенной здесь, в «Selenium 2 Beta 2» была добавлена ​​поддержка базовой аутентификации для Selenium 2, но, просматривая исходный код, я вижу только, что она реализована как способ защиты удаленных серверов Selenium от анонимного доступа.

Поэтому я думаю, что ответ заключается в том, что BASIC HTTP-аутентификация в настоящее время не поддерживается.

Я не смог использовать базовую аутентификацию с Selenium 2 и Chrome (из-за ошибки с Chrome), поэтому я создал расширение для Chrome, которое автоматически отправляет основные учетные данные аутентификации (см. https://chrome.google.com/webstore/ detail / basic-authentication-auto / dgpgkkfheijbcgjklcbnokoleebmeokn ).

  • Можно ли запустить несколько версий Google Chrome на одном компьютере? (Mac или Windows)
  • Как вернуть «Режим браузера» в IE11?
  • Как определить совместимость HTML 5 в браузере
  • HTML5 аудио не работает в Firefox
  • Удалить настройку Safari / Chrome textinput / textarea
  • IE7 и свойство table-cell CSS
  • Поддержка браузера для номеров страниц CSS
  • Как исправить Array indexOf () в JavaScript для браузеров Internet Explorer
  • Как определить, работает ли браузер Chrome с помощью jQuery?
  • Что такое WebKit и как это связано с CSS?
  • Какие запросы вызывают обновления браузеров «F5» и «Ctrl + F5»?
  • Давайте будем гением компьютера.