多くのヘッドレス ブラウザでの私の経験から、私は次のように言います。
HtmlUnitDriver : 私が遭遇したすべての実装の中で最速であり、単純で静的なページ、特に JavaScript を使用しないページに最適です。どんなに複雑なページでも問題が発生するようです。詳細に説明することはできませんが、これは私の実際の経験です。デモ ページでの Selenium 機能のテスト、ステータス ページのスクレイピングなどに最適です。
PhantomJSDriver (PhantomJS + GhostDriver): デスクトップ ブラウザーと比較して期待するほど高速ではありませんが、Firefox + xvfb よりもセットアップがはるかに簡単です。デフォルトでは、スクリーンショットが少し奇妙に見える場合がありますが、これは通常、明示的に設定しない限り、PhantomJS がデフォルトで狭いウィンドウに設定されているためです(理由については以下を参照してください)。
更新: PhantomJS のバージョンについて、私の他の回答からもう少し詳しく説明します。
Safari と同様に、PhantomJS はレンダリングにWebKitを使用します (たとえば、Firefox は Gecko を使用します) 。
異なる PhantomJS バージョンは、異なる WebKit バージョンに対してビルドされます。PhantomJS 2.x はWebKit 538.x を使用するため、Safari 7 または 8 と同等になります。一方、PhantomJS 1.9.8 はSafari 5 と同等の WebKit 534.34を使用します。
Google は Safari 5 を「古い」ブラウザと判断し、検索ページを別の方法でレンダリングする可能性があるため、これは問題になる可能性があります。
そのため、PhantomJS 2.x を確実に使用することで、多くの人が報告するデスクトップ ブラウザーとのレンダリングの違いを減らすことができます。
別の興味深い可能性はSlimerJSです。ただし、まだ十分に確実に機能するようにはなっていません。
HtmlUnitDriver または PhantomJSDriver で信頼性の問題が発生したことはありません (唯一の厄介な問題は、HttpClient 4.5 / HtmlUnit 2.17 の非互換性の問題でした)。
(HTTP リクエストの変更に関するコメントへの回答として、ブラウザー固有の機能を利用するのではなく、WebDriver API に固執し、 BrowserMobのようなプロキシを使用してリクエストと応答を変更することを個人的にお勧めします。)
全体として、ユーザーにブラウザの選択を強制するようなツールやプロセスを作成しないことをお勧めします。可能であれば、構成またはオーバーライドできるようにします。ほとんどの場合、私は PhantomJS を選びます。ただし、最も単純なページについては、HtmlUnit のパフォーマンスを考慮する必要があります。
(おそらく) も参照してください: http://www.guru99.com/selenium-with-htmlunit-driver-phantomjs.htmlおよびhttps://www.quora.com/Software-Testing/How-does-PhantomJS-compare-セレンへ