web-dev-qa-db-ja.com

Selenium v​​s HtmlUnit?

私はテストフレームワークをよりよく理解しようとしており、Seleniumを検討しています。私は以前に HTMLUnit を使用しました。これは主に、Webサイトなどから情報を収集する必要がある場合です。

テスト自動化を作成する文脈において、Selenium v​​s HTMLUnitの利点/欠点は何ですか? SeleniumはHTMLUnitよりセットアップが複雑ですが、同時にSelenium用のHTMLUnitDriverがあり、HTMLUnit自体とまったく同じように動作すると思いますか?

Seleniumは明らかにより堅牢なフレームワークを提供し、パラレルテスト用のSelenium RCを使用します。また、使用できるブラウザードライバーも異なります。ただし、ブラウザードライバーを使用した場合、テストは実際にヘッドレスではなくブラウザーアプリケーションを開閉します。

Seleniumを正しく理解していないのかもしれません。いくつかの指示とポインタは素晴らしいでしょう!

別のメモ-別の質問-私はモバイルブラウザで自動テストを行うことも見ています、Seleniumには IPhoneDriver がありますが、実際にはそれが必要なのでヘッドレステストではありませんiOSシミュレーター。

とにかく、モバイルサイトでヘッドレステストを行う方法はありますか?ユーザーエージェントを変更するだけで十分ですか?私は、ユーザーエージェントの変更に関するいくつかの投稿を見てきました。 Selenium RCでユーザーエージェントを設定

どうもありがとう!

44
TS-

よく、詳細に違いを説明しようとします。

並列テストについて言えば、Seleniumグリッドを使用する方が適切です。 Selenium RCおよびSeleniumグリッドの基本概念。 traditional Selenium setupSelenium grid setupSelenium grid:Requesting a Specific Environment 詳細を確認できます こちら

Selenium webDriverに関するいくつかの言葉:

Selenium 2.0の主な新機能は、WebDriver APIの統合です。 WebDriverは、Selenium-RC APIの制限に対処するとともに、よりシンプルで簡潔なプログラミングインターフェイスを提供するように設計されています。 Selenium-WebDriverは、ページ自体がリロードされずにページの要素が変更される可能性がある動的なWebページをよりよくサポートするために開発されました。 WebDriverの目標は、最新の高度なWebアプリテストの問題に対する改善されたサポートを提供する、適切に設計されたオブジェクト指向APIを提供することです。

Selenium-RCと比較して、WebDriverはブラウザをどのように「駆動」しますか?

Selenium-WebDriverは、各ブラウザーの自動化のネイティブサポートを使用して、ブラウザーを直接呼び出します。これらの直接呼び出しが行われる方法、およびそれらがサポートする機能は、使用しているブラウザーによって異なります。各「ブラウザドライバ」に関する情報は、この章の後半で提供されます。 Selenium-RCに精通している人にとっては、これはあなたが慣れているものとはまったく異なります。 Selenium-RCは、サポートされている各ブラウザーで同じように機能しました。ブラウザーが読み込まれたときにJavaScript関数をブラウザーに「挿入」し、そのJavaScriptを使用してブラウザー内でAUTを駆動します。 WebDriverはこの手法を使用しません。繰り返しますが、ブラウザの組み込みの自動化サポートを使用してブラウザを直接駆動します。

WebDriverおよびSelenium-Server

Selenium-WebDriverの使用方法に応じて、Selenium Serverが必要な場合と必要でない場合があります。 WebDriver APIのみを使用する場合、Selenium-Serverは必要ありません。ブラウザとテストがすべて同じマシンで実行され、テストがWebDriver APIのみを使用する場合、Selenium-Serverを実行する必要はありません。 WebDriverはブラウザーを直接実行します。ただし、Selenium-ServerをSelenium-WebDriverで使用する理由はいくつかあります。

  • Selenium-Gridを使用して、テストを複数のマシンまたは仮想マシン(VM)に分散しています。
  • 現在のマシン上にない特定のブラウザバージョンを持つリモートマシンに接続したい。
  • Javaバインディング(Python、C#、またはRuby)を使用していないため、HtmlUnit Driverを使用したい

Selenium-WebDriver’s DriversWebDriverは、テストを記述する主要なインターフェースの名前ですが、いくつかの実装があります。これらには以下が含まれます:

HtmlUnit Driverこれは現在、WebDriverの最速で最も軽量な実装です。名前が示すように、これはHtmlUnitに基づいています。 HtmlUnitはGUIなしのWebBrowserのJavaベースの実装です。Java以外の言語バインディングの場合、Selenium Serverはこのドライバーを使用する必要があります。

長所

  • WebDriverの最速の実装
  • 純粋なJavaソリューションであるため、プラットフォームに依存しません。
  • JavaScriptをサポート

短所

  • 他のブラウザのJavaScript動作をエミュレートします(以下を参照)

HtmlUnitドライバーのJavaScript人気のブラウザーはどれも、HtmlUnit(Rhino)が使用するJavaScriptエンジンを使用していません。 HtmlUnitを使用してJavaScriptをテストする場合、結果はそれらのブラウザーと大幅に異なる場合があります。 「JavaScript」と言うとき、実際には「JavaScriptとDOM」を意味します。 DOMはW3Cによって定義されますが、各ブラウザーには独自の癖があり、DOMの実装とJavaScriptがそれと対話する方法に違いがあります。 HtmlUnitはDOMの非常に完全な実装を備えており、JavaScriptの使用を適切にサポートしていますが、他のブラウザーと違いはありません。他のブラウザを模倣する機能。 WebDriverでは、選択する必要がありました。 HtmlUnitのJavaScript機能を有効にし、チームがそこにのみ現れる問題に遭遇するリスクを負うか、JavaScriptに依存するサイトが増えていることを認識して、JavaScriptを無効のままにしますか?保守的なアプローチを採用し、デフォルトではHtmlUnitを使用するときにサポートを無効にしました。 WebDriverとHtmlUnitの両方のリリースごとに、この決定を再評価します。ある時点でHtmlUnitでデフォルトでJavaScriptを有効にすることを望んでいます。

WebDriverのセットアップをさらに詳しく調べるには、 this を参照してください

From HtmlUnit documentationHtmlUnitは一般的な単体テストフレームワークではありません。具体的には、テスト目的でブラウザーをシミュレートする方法であり、JUnitやTestNGなどの別のテストフレームワーク内で使用することを目的としています。

SeleniumとHtmlUnitの違いを結論付けるHtmlUnitはJava GUIを使用しないWebBrowserの実装およびテスト目的でブラウザをシミュレートする方法およびSelenium-WebDriverは、各ブラウザの自動化のネイティブサポートを使用してブラウザを直接呼び出します。HtmlUnitが提供することがわかります自動化のためのGUIなしのAPIに対して、WebDriverは自動化のための内部ブラウ​​ザの可能性を提供します。

モバイルオートメーションについて言えば、SeleniumにはiPhoneドライバーもあります iPhoneドライバーwiki記事 およびAndroidドライバー Androidドライバーwiki記事

このプレゼンテーション も参照してください

残念ながら、ウェブオートメーション(モバイルではない)を扱っているため、モバイルドライバーの実務経験評価を提供することはできません。また、Cucumber(自動化ツール)がモバイルオートマトンの間で人気があることも知っておいてください。 this および this を参照してください。

少しわかりやすくなりました=)

67

SeleniumとHTMLUnitの概念はやや似ていますが、Seleniumはより成熟/堅牢で、より多くの機能を備えています。

Seleniumには、Firefoxの記録(IDE)プラグインが含まれていることに注意してください。これにより、テストを記録したり、基本的にブラウザーを駆動するRC/WebDriverオートメーションフレームワークを記録したりできます。この2つを一緒に使用して、テストの作成を非常に簡単にすることができます。

HTMLUnitを使用することで得られる唯一の利点は、リソースをあまり使用しないことです。したがって、ハードウェアでテストを実行できる可能性があります。

3
CIGuy

Jenkinsからテストを一晩実行する場合、通常、Webブラウザーを実行するX11やWindowsなどのウィンドウシステムにアクセスできません。したがって、ウィンドウシステムへのアクセスを必要としないため、その場合はHTMLUnit Webドライバーを使用する利点があります。

2
DB Jav

Selenium WebDriverを自動化に使用しました。ブラウザをヘッドレスにする非常に簡単な方法があります。 ChromeOptionsを適用するだけです(私の場合、他のDriverOptionsが利用可能です) ChromeOptions( "Headless")

別の例として、オプションまたはサービスを使用することで得られる多くの優れた方法があります。これにより、Driver/CommandPromptウィンドウが「表示」されなくなり、「サイレント」および非公開のままになります。 ChromeDriverServices( "Silent")

お役に立てれば。

0
Alan How

少なくともUXシステムでは、たとえばXvfbを使用して、ブラウザーをそのディスプレイに向けて「ヘッドレス」にすることができます。 http://infiniteundo.com/post/54014422873/headless-Selenium -testing-with-firefox-and-xvfb または XvfbでSeleniumを実行するにはどうすればよいですか?

0