私はテストフレームワークをよりよく理解しようとしており、Seleniumを検討しています。私は以前に HTMLUnit を使用しました。これは主に、Webサイトなどから情報を収集する必要がある場合です。
テスト自動化を作成する文脈において、Selenium vs HTMLUnitの利点/欠点は何ですか? SeleniumはHTMLUnitよりセットアップが複雑ですが、同時にSelenium用のHTMLUnitDriverがあり、HTMLUnit自体とまったく同じように動作すると思いますか?
Seleniumは明らかにより堅牢なフレームワークを提供し、パラレルテスト用のSelenium RCを使用します。また、使用できるブラウザードライバーも異なります。ただし、ブラウザードライバーを使用した場合、テストは実際にヘッドレスではなくブラウザーアプリケーションを開閉します。
Seleniumを正しく理解していないのかもしれません。いくつかの指示とポインタは素晴らしいでしょう!
別のメモ-別の質問-私はモバイルブラウザで自動テストを行うことも見ています、Seleniumには IPhoneDriver がありますが、実際にはそれが必要なのでヘッドレステストではありませんiOSシミュレーター。
とにかく、モバイルサイトでヘッドレステストを行う方法はありますか?ユーザーエージェントを変更するだけで十分ですか?私は、ユーザーエージェントの変更に関するいくつかの投稿を見てきました。 Selenium RCでユーザーエージェントを設定
どうもありがとう!
よく、詳細に違いを説明しようとします。
並列テストについて言えば、Seleniumグリッドを使用する方が適切です。 Selenium RCおよびSeleniumグリッドの基本概念。 詳細を確認できます こちら
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-WebDriver’s DriversWebDriverは、テストを記述する主要なインターフェースの名前ですが、いくつかの実装があります。これらには以下が含まれます:
HtmlUnit Driverこれは現在、WebDriverの最速で最も軽量な実装です。名前が示すように、これはHtmlUnitに基づいています。 HtmlUnitはGUIなしのWebBrowserのJavaベースの実装です。Java以外の言語バインディングの場合、Selenium Serverはこのドライバーを使用する必要があります。
長所
短所
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 documentation :HtmlUnitは一般的な単体テストフレームワークではありません。具体的には、テスト目的でブラウザーをシミュレートする方法であり、JUnitやTestNGなどの別のテストフレームワーク内で使用することを目的としています。
SeleniumとHtmlUnitの違いを結論付ける:HtmlUnitはJava GUIを使用しないWebBrowserの実装およびテスト目的でブラウザをシミュレートする方法およびSelenium-WebDriverは、各ブラウザの自動化のネイティブサポートを使用してブラウザを直接呼び出します。HtmlUnitが提供することがわかります自動化のためのGUIなしのAPIに対して、WebDriverは自動化のための内部ブラウザの可能性を提供します。
モバイルオートメーションについて言えば、SeleniumにはiPhoneドライバーもあります iPhoneドライバーwiki記事 およびAndroidドライバー Androidドライバーwiki記事
このプレゼンテーション も参照してください
残念ながら、ウェブオートメーション(モバイルではない)を扱っているため、モバイルドライバーの実務経験評価を提供することはできません。また、Cucumber
(自動化ツール)がモバイルオートマトンの間で人気があることも知っておいてください。 this および this を参照してください。
少しわかりやすくなりました=)
SeleniumとHTMLUnitの概念はやや似ていますが、Seleniumはより成熟/堅牢で、より多くの機能を備えています。
Seleniumには、Firefoxの記録(IDE)プラグインが含まれていることに注意してください。これにより、テストを記録したり、基本的にブラウザーを駆動するRC/WebDriverオートメーションフレームワークを記録したりできます。この2つを一緒に使用して、テストの作成を非常に簡単にすることができます。
HTMLUnitを使用することで得られる唯一の利点は、リソースをあまり使用しないことです。したがって、ハードウェアでテストを実行できる可能性があります。
Jenkinsからテストを一晩実行する場合、通常、Webブラウザーを実行するX11やWindowsなどのウィンドウシステムにアクセスできません。したがって、ウィンドウシステムへのアクセスを必要としないため、その場合はHTMLUnit Webドライバーを使用する利点があります。
Selenium WebDriverを自動化に使用しました。ブラウザをヘッドレスにする非常に簡単な方法があります。 ChromeOptionsを適用するだけです(私の場合、他のDriverOptionsが利用可能です) ChromeOptions( "Headless")
別の例として、オプションまたはサービスを使用することで得られる多くの優れた方法があります。これにより、Driver/CommandPromptウィンドウが「表示」されなくなり、「サイレント」および非公開のままになります。 ChromeDriverServices( "Silent")
お役に立てれば。
少なくともUXシステムでは、たとえばXvfbを使用して、ブラウザーをそのディスプレイに向けて「ヘッドレス」にすることができます。 http://infiniteundo.com/post/54014422873/headless-Selenium -testing-with-firefox-and-xvfb または XvfbでSeleniumを実行するにはどうすればよいですか?