50

PhantomJS が必要な理由がわかりません。誰かが助けてくれることを願っています。

4

4 に答える 4

120

DOM を必要とする JavaScript は、通常はブラウザーで実行する場所が必要です。そのため、テスト フレームワークは多くの場合、テストを実行してアサートを実行するために制御するブラウザーを起動します。多くの場合、テスト フレームワーク自体はブラウザーを直接制御できないため、テストには 3 つのレイヤーが必要になります。

  • フレームワーク: ジャスミンなど
  • ドライバー: 例 Selenium
  • ブラウザ: 例: Firefox

簡単に言うと、PhantomJS はヘッドレスで実行される (つまり、画面を引き出さない) ブラウザーです。その利点は速度です。コンピューターで実際のプログラムを制御している場合、ブラウザーの起動、プロファイルの構成などに一定のオーバーヘッドが生じます。

これに関しては、PhantomJS の方がはるかに高速です (テストが 1/3 未満の時間で実行されるのを見てきました)。唯一のトレードオフは、実行中のテストを確認できないことですが、自動化されたスイートではそれほど問題にはなりません! 必要に応じてスクリーンショットを撮ることもできます (失敗など)。本当に必要な場合は、24 fps でスクリーンショットを撮り、ffmpeg に送信してテストのビデオをレンダリングすることもできますが、その場合、速度の節約が損なわれる可能性があります :)

于 2013-11-17T13:34:49.607 に答える
25

これはよくある誤解です。ドキュメントに時間を費やすと、通常は混乱が解消されます。たとえば、PhantomJS は、Buster.JS、Capybara、Mocha、Jasmine、QUnit、WebDriver、YUI Test など、多数のフレームワークで記述されたテストのヘッドレス テスト ランナーとしてよく使用されます。ここでわかるように、PhantomJS はこれらのフレームワークをまったく置き換えません。

もちろん、プログラムによる Web ページのキャプチャから自動ネットワーク監視まで、PhantomJS には他にも多くの用途があります。PhantomJS のさまざまな使用例が報告されている、さまざまなブログ投稿や記事のリストがあります。

于 2012-10-04T07:19:54.333 に答える
7

PhantomJSは、テストフレームワークを置き換えることを意図したものではなく、テストフレームワークと連携して機能します。

たとえば、これはJasmineと組み合わせて使用​​されるランダムな例のPhantomJSです。

また、PhantomJSはテスト専用ではなく、この例のように、画面のスクレイピングや、サーバーへの重いレンダリング負荷のオフロード(CPUに問題のあるモバイルブラウザーなど)に使用できます。

于 2012-10-03T14:34:40.850 に答える