Подтвердить что ты не робот

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

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

Теперь мне нужна стратегия аутентификации пользователя в 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]");  

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com");
driver = new FirefoxDriver(profile);

driver.Navigate().GoToUrl("http://user:[email protected]");

Ответ 3

Добавьте этот новый профиль 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" (по умолчанию это "ложь" )

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


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

Добавьте этот Script в свой код 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 работают с двоичным кодом.

Ответ 4

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

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

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

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

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

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

Ответ 5

Для большей переносимости это можно обработать с помощью заглушки 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

по теме:

Ответ 6

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

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

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