2016-07-28 4 views
0

だから、基本的なHTTP認証であると思われるものを必要とRailsのサイト上でいくつかの自動テストを実行しようとしてイム。カピバラ/ポルターガイストHTTP認証

Capybara.app_host = "http://localhost:3000" 
Capybara.server_host = "localhost" 
Capybara.server_port = "3000" 

イムは、今のFirefoxでこれを実行している、と私はhttp://username:[email protected]:3000をやってみましたが、それは通常、「フィッシングサイト」について警告したが、私はとにかく進むが、それは動作しませんし、HTTPポップアップがまだ表示されます。 (私は多くのブラウザがこの能力を無効にしていると聞きました)。

私はセレンがそれを回避する方法を持っていることを知っていますが、ポルターガイストはどうですか?またはカピバラに建てられたもの。

は、私はここに述べた前の質問を見ました: HTTP basic auth for Capybara

が、上記のURLが、これはどちらか動作していないようでした動作しませんかと見て。

編集:現在のポルターガイストドライバーのセットアップ:

options = { 
     :timeout => 45, 
     :phantomjs_options => ["--proxy-auth="] 
    } 
    Capybara.register_driver :poltergeist do |app| 
     Capybara::Poltergeist::Driver.new(app, options) 
    end 
    Capybara.default_driver = :selenium 
    Capybara.javascript_driver = :poltergeist 

答えて

1

あなたはポルターガイストのページを訪問する前に

page.driver.basic_authorize(username, password) 

を試すことができます。それは、「認証」ヘッダー

+0

私はそれがそれほどシンプルになることを望んでいましたが、残念ながら私は「サーバに到達できませんでした」ということになります。このアプリは、DBのためにローカルでは本当に遅く実行されます...しかし、それが問題になる前に設定したユーザー名/パスワードが間違いない限り?タイムアウトを高く設定するようにしました。 (セレンで動作していますが、実行中に手動でユーザー名/パスワードを入力したとき) – msmith1114

+0

実際、問題はプロキシサイトとして実行されているため、通常のhttpヘッダーが機能しないと思います。 – msmith1114

+0

@ msmith1114 poltergeistには、page.driver.headers =/add_headers/add_headerがありますので、必要なヘッダーを設定できます。「サーバーに到達できませんでした」は実際に認証拒否のようには聞こえません。 (Poltergeistsのタイムアウトオプションはドライバ登録に設定されています) –

1

セレン+ Firefoxで働く人々のために、ここでは別のソリューションを投げもphantomjsにユーザー名とパスワードを設定します:

あなたは、HTTP Firefoxの基本的な認証を必要とするページにアクセスするとユーザー名とパスワードを尋ねるダイアログボックスが表示されます。

enter image description here

セレンは、ダイアログボックスとの対話のためにあなたに多くのオプションを与えるものではありませんが、それは、オプションのキーストロークを取るaccept_alert方法があります。一度に両方のフィールドにテキストを入力するには

、あなたはセレンのtabキーコードを使用することができます

tab = Selenium::WebDriver::Keys::KEYS[:tab] 
SESSION.accept_alert(with: username + tab + password) 

をこれは私が働いて得ることができる唯一のソリューションです - 私は持っていませんセレンのremoteドライバを使用していますHTTP基本認証の組み込みのサポート。

他のすべてが失敗した場合は、このショットを付けます。