2009-12-22 1 views
1

Я пытаюсь использовать selenium-webdriver [ruby bindings] [1] для доступа к внутреннему веб-сайту, для которого требуется настройка прокси, и HTTP Basic Auth.HTTP Basic Auth и прокси для selenium-webdriver (привязки ruby)

я в настоящее время:

require "selenium-webdriver" 
    driver = Selenium::WebDriver.for :firefox 
    driver.navigate.to "http://my-internal-site.com" 

Но это не удается из-за обоих вопросов AUTH прокси и HTTP. Если я добавлю свое имя пользователя и пароль к URL-адресу (то есть http://username:[email protected]), я могу выполнить базовую проверку подлинности на другом сайте, который не требует прокси-сервера, но это не похоже на идеальное решение.

Любые предложения?

ответ

1

К сожалению, http://username:[email protected] был стандартным способом выполнения, но с большим количеством браузеров, блокирующих этот подход. Patrick Lightbody of BrowserMob обсудил в компании blog о том, как они работают.

+0

Спасибо! Это немного блокировщик, но, по крайней мере, есть какая-то работа. –

+0

network.http.phishy-userpass-length = 255 можно использовать для скрытия диалогового окна блокировки в firefox. http://kb.mozillazine.org/Network.http.phishy-userpass-length – Sam

0

До тех пор, пока в браузерах для WebDriver (или Selenium) не будет полной поддержки, альтернативный вариант заключается в интеграции инструментов автоматизации GUI для рабочего стола, где инструмент GUI для рабочего стола будет автоматизировать часть проверки подлинности HTTP. Вероятно, вы можете найти несколько примеров для загрузки этого файла или загрузки файлов, если вы используете Google для таких вещей, как «Selenium AutoIt» и т. Д.

Для кросс-платформенного решения замените AutoIt на Sikuli или что-то подобное.

0

Я попробовал подход с AutoIt и работал отлично до Селен 2.18.0, , потому что они реализованы UnhandledAlertException, которые будут брошены, как только как диалог прокси Войти выскочит. , если вы попытаетесь поймать его, вы получите драйвер = нуль, вам нужно будет выполнить цикл попытку создания драйвера и доверие к вашему скрипту AutoIt, чтобы убить окно.