PhantomJS が必要な理由がわかりません。誰かが助けてくれることを願っています。
4 に答える
DOM を必要とする JavaScript は、通常はブラウザーで実行する場所が必要です。そのため、テスト フレームワークは多くの場合、テストを実行してアサートを実行するために制御するブラウザーを起動します。多くの場合、テスト フレームワーク自体はブラウザーを直接制御できないため、テストには 3 つのレイヤーが必要になります。
- フレームワーク: ジャスミンなど
- ドライバー: 例 Selenium
- ブラウザ: 例: Firefox
簡単に言うと、PhantomJS はヘッドレスで実行される (つまり、画面を引き出さない) ブラウザーです。その利点は速度です。コンピューターで実際のプログラムを制御している場合、ブラウザーの起動、プロファイルの構成などに一定のオーバーヘッドが生じます。
これに関しては、PhantomJS の方がはるかに高速です (テストが 1/3 未満の時間で実行されるのを見てきました)。唯一のトレードオフは、実行中のテストを確認できないことですが、自動化されたスイートではそれほど問題にはなりません! 必要に応じてスクリーンショットを撮ることもできます (失敗など)。本当に必要な場合は、24 fps でスクリーンショットを撮り、ffmpeg に送信してテストのビデオをレンダリングすることもできますが、その場合、速度の節約が損なわれる可能性があります :)
これはよくある誤解です。ドキュメントに時間を費やすと、通常は混乱が解消されます。たとえば、PhantomJS は、Buster.JS、Capybara、Mocha、Jasmine、QUnit、WebDriver、YUI Test など、多数のフレームワークで記述されたテストのヘッドレス テスト ランナーとしてよく使用されます。ここでわかるように、PhantomJS はこれらのフレームワークをまったく置き換えません。
もちろん、プログラムによる Web ページのキャプチャから自動ネットワーク監視まで、PhantomJS には他にも多くの用途があります。PhantomJS のさまざまな使用例が報告されている、さまざまなブログ投稿や記事のリストがあります。
PhantomJSは、テストフレームワークを置き換えることを意図したものではなく、テストフレームワークと連携して機能します。
たとえば、これはJasmineと組み合わせて使用されるランダムな例のPhantomJSです。
また、PhantomJSはテスト専用ではなく、この例のように、画面のスクレイピングや、サーバーへの重いレンダリング負荷のオフロード(CPUに問題のあるモバイルブラウザーなど)に使用できます。