2012-10-09 12 views
37

私はテストフレームワークをよりよく理解し、Seleniumを調べようとしています。私は前にHTMLUnitを使っていましたが、主に私がウェブサイトなどの情報を掻き集める必要があるときでした。セレン対HtmlUnit?

書き込みテスト自動化の文脈では、SeleniumとHTMLUnitのメリットとデメリットは何ですか?私に見えるSeleniumはHTMLUnitよりセットアップが複雑ですが、同時にHTMLUnit自体とまったく同じように動作するSerenium用のHTMLUnitDriverがありますか?

セレンは、明らかにPararelテスト用のSelenium RCを備えています。また、使用できるブラウザドライバも異なります。ただし、ブラウザドライバを使用した場合、実際にブラウザアプリケーションを開く/閉じるヘッドレスよりも。

私はセレンを正しく理解していないかもしれません。いくつかの方向とポインタが素晴らしいでしょう!

別の質問 - 私はモバイルブラウザで自動テストを行っていますが、SeleniumにはIPhoneDriverがあることがわかりましたが、実際のiOSシミュレータを必要とするためヘッドレステストではありません。

モバイルサイトでヘッドレステストを実行する方法はありますか?ユーザーエージェントの変更で十分でしょうか?私は自分の挑戦しているように見えるユーザエージェントの変更について、いくつかの記事を見てきました。 Set user-agent in Selenium RC

ありがとうございます!

+1

を参照するために、そのディスプレイにブラウザを指すことができUXシステムでは、代わりにPhantomJSを使用するか、「ヘッドレスクローム」と考えたことがあり? – djangofan

答えて

62

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

並列テストについて言えば、セレングリッドを使用する方がよいでしょう。 セレンRCとセレングリッドの基本概念。 traditional selenium setup selenium grid setup selenium grid:Requesting a Specific Environment あなたは詳細セレンwebdriverをについてhere

いくつかの単語に入ることができます。

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

WebDriverは「Selenium-RC」と比較してブラウザを「ドライブ」していますか?

Selenium-WebDriverは、各ブラウザのネイティブサポートを使用してブラウザを直接呼び出します。これらのダイレクトコールがどのように行われ、サポートされる機能は使用しているブラウザによって異なります。各「ブラウザドライバ」に関する情報は、この章の後半で説明します。 Selenium-RCに精通している人にとって、これはあなたが慣れ親しんだものとはかなり異なっています。 Selenium-RCはサポートされているブラウザごとに同じ方法で動作しました。ブラウザがロードされたときにブラウザにjavascript関数が挿入され、javascriptを使用してブラウザ内でAUTが実行されました。 WebDriverはこの手法を使用しません。再び、ブラウザの内蔵オートメーションサポートを使用してブラウザを直接駆動します。

webdriverをとSelenium-サーバー

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

  • あなたは、複数の マシンまたは仮想マシン(VM)上でテストを配布するためにセレングリッドを使用しています。
  • 現在のマシンにない特定のブラウザ のバージョンを持つリモートマシンに接続します。
  • あなたはHtmlUnitドライバーに

セレンwebdriverをのドライバを使用したいJavaバインディング(つまりはPython、C#、またはルビー)と を使用していない webdriverをキーインターフェースに対しての名前です。どのテストが記述されるべきか、いくつかの実装があります。これらには、

HtmlUnitドライバー をこれは、現在webdriverを最速かつ最も軽量な実装です。名前が示すように、これはHtmlUnitに基づいています。 HtmlUnitは、GUIのない​​WebブラウザのJavaベースの実装です。任意の言語バインディング(java以外)では、このドライバを使用するためにSelenium Serverが必要です。 webdriverを

  • 純粋なJavaソリューションとの

    賛否

    • 最速の実装では、それはプラットフォームに依存しないです。
    • はJavaScript

    短所

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

    のJavaScript HtmlUnitドライバーで一般的なブラウザの なしJavaScriptエンジンを使用しないをサポートHtmlUnit(Rhino)で使用されています。HtmlUnitを使用してJavaScriptをテストすると、その結果がブラウザと大きく異なる場合があります。 「JavaScript」とは、実際には「JavaScriptとDOM」を意味します。 DOMはW3Cによって定義されていますが、各ブラウザには独自の特徴があり、DOMの実装方法とJavaScriptがJavaScriptとどのように相互作用するかが異なります。 HtmlUnitはDOMを完全に実装しており、JavaScriptを使用するのには優れたサポートを持っていますが、他のブラウザと違いはありません.W3C標準と主要なブラウザのDOM実装との独自の違いがあります。他のブラウザを模倣する能力。 WebDriverでは、選択する必要がありました。 HtmlUnitのJavaScript機能を有効にし、チームがそこに現れるだけの問題にぶつかるリスクを実行するか、JavaScriptに依存するサイトが増えていることを認識してJavaScriptを無効にしますか?我々は保守的なアプローチをとっており、デフォルトではHtmlUnitを使用するとサポートが無効になっています。 WebDriverとHtmlUnitの各リリースでは、この決定を再評価しています.HtmlUnitでJavaScriptをデフォルトで有効にしたいと考えています。 HtmlUnit documentationからthis

    参照

    はwebdriverをのセットアップを深く調査するために: HtmlUnitは、一般的なユニットテストフレームワークではありません。具体的には、テスト目的でブラウザをシミュレートする方法であり、JUnitやTestNGなどの別のテストフレームワークで使用することを意図しています。

    だからセレン及びHtmlUnit差を締結する: HtmlUnitは、GUIなしセレンwebdriverを直接呼び出しを行うテスト目的のためにブラウザをシミュレートするための方法のWEBブラウザのJavaベースの実装です各ブラウザのネイティブな自動化サポートを使用してブラウザに送信します。 WebDriverは自動化のために内部ブラウ​​ザの可能性を提供するのに対して、HtmlUnitはGUIの可能性なしでAPIを提供することがわかります。

    モバイル自動化についていえば、 セレンはまた、iPhoneドライバ iPhone Driver wiki article とAndroidのドライバを持ってい Android Driver wiki article

    も参照してくださいthis presentation

    残念ながら、私は、私のようにあなたの携帯ドライバの私の作業経験の評価を与えることはできませんWebオートメーション(モバイルなし)を扱うまた、Cucumber(自動化ツール)がモバイル・オートメーター間で普及していることも知っています。 thisおよびthisを参照してください。 からジェンキンスをテストを実行する場合

    は一晩、あなたは通常、ウェブを実行するためのX11やWindowsなどのウィンドウシステムにアクセスできません

  • +0

    説明をいただきありがとうございます! ...したがって、ブラウザー固有のドライバー(HTMLUnitDriverではなく)は、ブラウザーの動作を正確にテストするために優れていますが、これはブラウザーが画面上に出たり出たりするコストになります(テストを実行しているときローカルでは、このブラウザアプリが単独でポップアップして出て​​くるのが見えます) - 実際のブラウザーを読み込まない(HTMLUnitDriverを使用する以外の)方法はありません。 –

    +0

    があります。迷惑行為を発見した場合は、リモートマシン(VM)を入手して取得できます。セレンテストはリモートマシン上で実行されます。現在のプロジェクトで使用しているアプローチを共有するには:hudson -jenkinsに新しいタスクを追加して、毎日のビルドで一連のテストを実行し、テストステータスに関する電子メール通知を取得します。 自動テストセットの基本的な目的を忘れてはなりません。使用しているドライバの種類にかかわらず、アプリケーションの機能が安定していて、リリース準備が整っていることを完全に確信する必要があります。詳細(HTMLUnitDriverまたはその他の選択肢)は、要件やその他の依存関係によって異なります。 –

    +0

    数年前、JavaServiceツールを使用してSelenium RCをWindowsサービスとしてインストールしました。これにより、マシンにログインせずにヘッドレスプロセスとして無人で実行できるようになりました。 JenkinsはANT execタスクを介してWindowsサービスを開始し、テストスイートの完了時に別のANTタスクがサービスを停止します。私はこのhttp://bit.ly/pWS7yRに従って、サービスのインストールを実行するためのカスタムbatファイルを作成しました。たとえば、http://pastebin.com/zvivguaP –

    2

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

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

    HTMLUnitを使用することで唯一の利点は、リソースの消費量が少ないため、ハードウェアを少なくしてテストを実行できることですが、Seleniumの並列サポートでもそれは本当に真実ではありません。

    1

    )=それは今あなたのためのlilのビットより明確に出てほしいですブラウザ。したがって、ウィンドウイングシステムにアクセスする必要がないため、HTMLUnit Webドライバを使用する利点があります。

    +0

    Xvbfを使用して、JenkinsのGUIブラウザを実行できます –