8

Rails 3.1.2 プロジェクト (mac OS X) で作業して、PhantomJS を適切にインストールしました (次のようなコードを実行でき、完全に動作し、ページのタイトルを正確に取得し、正確なスクリーンショットを保存します)。

try_phantom.coffee

page = require('webpage').create()
page.open 'http://localhost:5000/parties/onetestparty', (status) ->
    title = page.evaluate -> document.title
    console.log "Title: #{title}"
    page.render './log/javascript_screenshot.png'
    phantom.exit()

ただし、次のようにrspecでカピバラ/ポルターガイストを使用しようとすると:

spec_helper.rb

require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist

次に、javascript を必要とする呼び出しで仕様を使用します。

party_spec.rb

        it "should allow a simple screenshot", js: true do
            visit "/"
            page.driver.render('./log/screen_Home.png', :full => true)
        end

私のJavaScriptがレンダリングされているようには見えず、スクリーンショットも常に空白です!

デバッガーを試してみましたが、空白の HTML ページ (head タグと body タグが空の HTML のみ) が表示されるようです。

問題は、カピバラとポルターガイストの間のインターフェース、または(可能性が高い)ポルターガイストとファントムジスのいずれかであると確信しています。関連する gem のバージョンは次のとおりです。

capybara 1.1.3
capybara-webkit 0.13.0
ポルターガイスト 1.0.2 phantomjs
は 1.7.0

さらにトラブルシューティングする方法がわからない...どんな助けでも大歓迎です。

4

3 に答える 3

6

私も同じ問題を抱えていましたが、私の場合はサブドメインの使用が原因でした。Poltergeist は無意味な URL (「http://spb.:22789」のようなもの) を指していたため、「about:blank」しか受信しません。

この問題を解決するために、次のことを行いました。

  1. カピバラの app_host と server_port を設定する

    Capybara.app_host = 'http://city.tulp.test:3003'
    Capybara.server_port = 3003

  2. /etc/hosts にダミードメインを追加

お役に立てれば。

于 2012-12-05T11:00:49.807 に答える
2

ドライバーを登録していただくと助かりますでしょうか?

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {debug: false})
end
Capybara.current_driver = :poltergeist # NOTE THE CURRENT_DRIVER, NOT JAVASCRIPT_DRIVER!
于 2012-11-26T22:02:09.070 に答える