web-dev-qa-db-ja.com

HtmlUnitDriver(HtmlUnit)vs GhostDriver(PhantomJS)?

Selenium WebDriverの実装であるheadless browserドライバーソリューションを選択している最中です。 GhostDriver があります。これは、一方のバックエンドで PhantomJS を活用し、 HtmlUnitDriver に基づいています HtmlUnit もう一方の。

PhantomJSは、SafariのレンダリングエンジンであるWebKitを使用してページをレンダリングしますが、HtmlUnitDriverは、他のブラウザーが使用しないRhinoエンジンを使用します(ブラウザーの動作を「シミュレートする」だけです。最後の事実は、人気のあるブラウザ。

私たちの意見では、PhantomJSははるかに強力な候補です。しかし、私たちはすべてを知っているわけではありません:)決定に考慮すべき他の考慮事項とトレードオフはありますか? HtmlUnitDriverがより良いソリューションになる他のシナリオ

33
Johnny

多数のヘッドレスブラウザーでの経験から、次のように言います。

HtmlUnitDriver:私が遭遇したすべての実装の中で最速で、特にJavaScriptを使用しない単純な静的ページに最適です。リモートで複雑なページは問題を引き起こすようです-詳細に正当化できないとしても、それは私の実際的な経験です。デモページ、スクレイピングステータスページなどでSelenium機能をテストするのに最適です。

PhantomJSDriver(PhantomJS + GhostDriver):デスクトップブラウザと比べて期待したほど高速ではありませんが、Firefox + xvfbよりも設定がはるかに簡単です。デフォルトでは、スクリーンショットは少し奇妙に見えますが、 通常、PhantomJSは明示的に設定しない限りデフォルトで狭いウィンドウに設定されるため、 (理由については以下をお読みください)。


Update:my other answer から、PhantomJSバージョンの詳細を少し。

Safariと同様に、PhantomJSはレンダリングに WebKit を使用します(例:FirefoxはGeckoを使用します)

異なるWebKitバージョンに対して異なるPhantomJSバージョンが構築されます。 PhantomJS2.xuses WebKit538.x。これは と同等Safari 7または8 。一方、PhantomJS1.9.8uses WebKit 534.34(Safari 5と同等).

これは、GoogleがSafari 5を「古い」ブラウザであると判断し、そのため検索ページを異なる レンダリングする可能性があるため、問題になる可能性があります

したがって、PhantomJS 2.xを使用することで、多くの人が報告するレンダリングとデスクトップブラウザーのレンダリングの違いを減らすことができます。


別の興味深い可能性は SlimerJS です。しかし、私はまだ十分に信頼性の高い動作をさせることができていません。

HtmlUnitDriverまたはPhantomJSDriverで信頼性の問題が発生したことはありません(唯一の厄介な問題は HttpClient 4.5/HtmlUnit 2.17 incompatibility issue でした)。

(HTTPリクエストの変更に関するコメントへの回答では、WebDriver APIに固執し、 のようなproxyを使用することを個人的にお勧めしますBrowserMob は、ブラウザ固有の機能を利用するのではなく、リクエストとレスポンスを変更します。

全体として、)強制的にユーザーが別のブラウザを選択するようにするツールまたはプロセスを作成しないことをお勧めします。可能であれば、構成またはオーバーライドを許可します。たいていの場合、PhantomJSにふさわしいと思います。ただし、最もシンプルなページでは、HtmlUnitのパフォーマンスを考慮する必要があります。

参照(おそらく): http://www.guru99.com/Selenium-with-htmlunit-driver-phantomjs.html および https:// www .quora.com/Software-Testing/How-does-PhantomJS-compare-to-Selenium

23
Andrew Regan

過去2、3年にわたって、いくつかのプロジェクトでphantomJSを使用しましたが、しばしば問題がありました。たとえば、chrome、firefox、Internet Explorerとは異なる動作をするページのjavascript。一部のページは、おそらくリダイレ​​クトが原因でロードされていませんが、私は肯定的ではありません(たとえば、keycloakページにログインします)。

私はHtmlUnitをあまり使用していませんが、これを入力すると、keycloakログインページでのテストで上記の幻の問題のいくつかが回避されます。

3
Timmeh

PhantomJS開発には 2018年3月3日現在中断中 がありますが、ヘッドレスモードはChromeおよびFirefox

これは、更新を受信する場合は、ヘッドレスドライバーに対してHtmlUnit、 Chrome または Firefox を使用する必要があることを意味します。

1