HTTP Основной Автор через URL в Firefox не работает?

Я знаю, что обычно можно войти в сайты, которые требуют Базовой аутентификации HTTP с Селеном путем передачи имени пользователя и пароля в URL, например:

selenium.open("http://myusername:myuserpassword@mydomain.com/mypath");

Я запускал тест Селена с Firefox 2 или 3, и там я все еще получаю диалоговое окно "Authentication Required"?

Обновление: Это, кажется, не проблема Селена, а скорее проблема Firefox. Если я введу URL вручную в FF, то я получу диалог аутентификации, но если я ввожу URL в Opera, моя страница отображена, не показывая диалог аутентификации.

18
задан Reinstate Monica 27 September 2013 в 13:27
поделиться

3 ответа

Вы можете попробовать манипулировать заголовками напрямую следующим образом:

Сначала, когда вы начнете, вы должны включить Selenium, чтобы манипулировать заголовками:

selenium.start("addCustomRequestHeader=true");

Затем вы должны использовать некоторую базовую кодировку и такие манипуляции с заголовком:

    String authHeader = "";
    try {
    BASE64Encoder coder = new BASE64Encoder();
    authHeader = coder.encode("developers:Str492ight".getBytes());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    setUpSelenium();
    startSelenium();
    selenium.addCustomRequestHeader("Authorization", "Basic " + authHeader);
    selenium.open("/");
    selenium.waitForPageToLoad("10000");

Пробел после Basic является обязательным. Так выглядит заголовок базовой HTTP-аутентификации.

Более того, вы можете использовать некоторые Http Watchers, чтобы увидеть, содержит ли запрос ваш запрос аутентификации.

Либо используйте Wireshark, либо лучше Fiddler или Charles Proxy.

Надеюсь, что это помогло. Гергей.

2
ответ дан 30 November 2019 в 07:33
поделиться

Как уже упоминалось, решение addCustomRequestHeader может работать только в режиме внедрения прокси. Но когда я попытался реализовать это, у меня возникли другие проблемы, связанные с этим режимом внедрения прокси.

Мне не ясно, работает ли вообще прокси-инъекция при использовании Java-клиента. Каждый раз, когда я звонил open (), я получал странную ошибку: «this.onXhrStateChange.bind не является функцией». Единственное решение, которое я нашел, подразумевает, что вам нужно добавить дополнительный параметр со значением true в метод open (), но клиентский API Java принимает только один параметр.

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

Перенос ваших тестов на Selenium 2 (пока еще альфа-версия) может быть лучшей перспективой, но в моем случае это будет невозможно, пока Selenium Grid не будет поддерживать Selenium 2.

Надеюсь, что это поможет любому, Себастьян

0
ответ дан 30 November 2019 в 07:33
поделиться

У меня есть решение для Firefox и Internet Explorer.

Для Firefox вам нужно зайти в about:config и создать целое число network.http.phishy-userpass-length с длиной 255. Это указывает Firefox не всплывать окно аутентификации, если имя пользователя и пароль меньше 255 символов. Теперь вы можете использовать http://user:pass@domain.com для аутентификации.

Для Internet Explorer необходимо отредактировать реестр. В ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE, создайте значения DWORD iexplore.exe и explorer.exe и убедитесь, что их значения равны 0.

Мне также пришлось отменить NTLM-аутентификацию. Для NTLM-аутентификации с использованием синтаксиса базовой аутентификации HTTP в Firefox, просто укажите используемые домены в строке конфигурации Firefox network.automatic-ntlm-auth.trusted-uris (сопровождающей первый параметр конфигурации). Это будет работать в IE с одной только правкой регистрации.

10
ответ дан 30 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: