WatiN か Selenium?[閉まっている]
-
03-07-2019 - |
解決
私は現在、2009年の第1四半期にWatiN 2.0のベータリリースに取り組んでいます。これは、現在のCTP 2.0バージョンへのメジャーアップグレードであり、基本的にFireFoxを自動化する同じ機能を提供しますIEを自動化するためのバージョン1.3.0として提供されています。
だから心配はありません。
これがあなたの選択に役立つことを願って イェロエン・ファン・メネン 主任開発者WatiN
他のヒント
コミュニティによって継続的に改善およびサポートされるフレームワークに深刻な長期投資をしたい場合は、おそらくSeleniumが最善の策です。たとえば、Matt Raibleのブログでこの情報に出会いました。
金曜日の時点で、Googleには50以上のチームがあります 1日あたり51Kを超えるテストを実行 内部のセレン農場。これらの96% テストはSelenium RCによって処理され、 ファームマシンが正しく。他の 4%は一部RCバグによるものであり、一部は エラーをテストしますが、 原因は難しい場合があります。セレンは 一次技術として採用された Webの機能テスト用 Google内のアプリケーション。それは 良いニュース。
また、最近Seleniumミートアップの1つに行って、GoogleがSeleniumの改善とSimon Stewartによって開発された自動テストツールであるWebDriverとの統合に深刻なリソースを投入していることを知りました。 WebDriverの主な利点の1つは、ブラウザー内でJavascriptアプリケーションとして実行するのではなく、ブラウザー自体を制御することです。つまり、「同じ起源」のような大きな障害問題はもはや問題ではありません。
両方をテストし、WaTiNを使用することにしました。他の人が指摘したように、SeleniumにはWaTiNにはない優れた機能がいくつかありますが、Seleniumが動作する問題に遭遇しました。正しく覚えていれば、私たちが遭遇したセットアップの問題は、Seleniumが、WaTiNがすべての処理を行っていた実際のブラウザーを制御するための別個のアプリを持っているという事実に起因していました。
私は両方試してみましたが、ここに私の最初の考えがあります...
WatiN
良い
- 高速実行。
- スクリプト作成ツールは独立したプロジェクトです。私が知っている2つがあります: Wax (Excelベース、CodePlexでホスト)およびWatiNテストレコード(SourceForgeでホスト)。どちらもSelenium IDEほど堅牢ではありません。
- IEの非常に優れたサポート。実行中のインスタンスにアタッチおよびデタッチできます。ネイティブウィンドウハンドルなどにアクセスできます(以下のスクリプト例を参照)。
- NuGetはパッケージ化されており、.NET、Visual Studioスタイルの環境で簡単に実行でき、最新の状態を維持できます。
悪い点
- Googling WatiN(watin xyz)により、Googleは「watir xyz」を推奨します。代わりに。それほど多くのドキュメントはありません。
- ほとんど何もありません(ドキュメント)。たとえば、最初の赤面では、CSSセレクターのネイティブサポートがないように見えます。特に、「WatiNCssSelectorExtensions」などの拡張ライブラリと、代替技術(ページへのjQuery / sizzleの挿入など)に関する多くのブログ記事があるためです。 Stack Overflowで、 Jeroen van Menen によるコメントが見つかりました。ネイティブサポートがあります。少なくともリード開発者は、スタックオーバーフローに時間を費やしています:)
- ネイティブXPathサポートなし。
- すぐに使えるリモート実行/グリッドベースの実行はありません。
スクリプトの例(C#)。 Seleniumでこれを行うことはできません(少なくとも私が知っていることではありません):
class IEManager
{
IE _ie = null;
object _lock = new object();
IE GetInstance(string UrlFragment)
{
lock (_lock)
{
if (_ie == null)
{
var instances = new IECollection(true); //Find all existing IE instances
var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
_ie = match ?? new IE();
if (match==null) //we created a new instance, so we should clean it up when done!
_ie.AutoClose = true;
}
}
return _ie;
}
}
セレン
- WatiNよりも遅い(特に新しいプロセスを作成する必要があるため)。
- ビルトインCSSセレクター/ XPathサポート。
- Selenium IDEは優れています(素晴らしいとは言えませんが、クラス最高です!)。
- .NETのようなものよりもJavaのようなものを感じますが、実際にはプログラミング言語にとらわれません。すべてのコマンドは、アウトプロセスの「ドライバー」に送信されます。ドライバーは、実際にはブラウザーインスタンスの「ホスト」プロセスです。すべての通信は、プロセスの境界を越えてシリアル化する必要があります。これにより、WatiNに関連する速度の問題が説明される場合があります。
- 分離されたプロセス-"ドライバー"および「コントロール」堅牢性、複雑さなどを意味しますが、グリッド/分散テスト環境の作成も簡単です。 "分布"が本当に好きだったでしょう。メカニズム(つまり、ドライバーと制御間の通信)は、WebSphereまたはその他の既存の堅牢なメッセージキューマネージャーを介して行われました。
- クロムおよびその他のブラウザをそのままサポートします。
すべてにもかかわらず、私は最後にWatiNを使いました。私は主に小さなスクリーンスクレイピングアプリケーションを作成し、開発にLINQPadを使用したいと考えています。リモートIEインスタンス(自分で作成しなかったインスタンス)にアタッチすることは大きなプラスです。私は既存のインスタンスをいじることができます...それからちょっとしたスクリプトを実行します...そしてもう一度いじります。これはSeleniumで行うのが難しいですが、「一時停止」と思われます。スクリプトに埋め込むことができます。その間、ブラウザを直接操作できます。
最大の違いは、Seleniumがさまざまなブラウザをサポートしていることです(IEやFFだけでなく、 httpを参照してください) ://seleniumhq.org/about/platforms.html#browsers 。
また、Seleniumにはリモートコントロールサーバーがあります( http://seleniumhq.org/projects/remote- control / )。テストコードが実行されているのと同じマシンでブラウザを実行する必要がないことを意味します。したがって、Webアプリをテストできます。異なるOSプラットフォームで。
一般に、Seleniumの使用をお勧めします。私は数年前にWatiNを使用しましたが、その安定性に満足していませんでした(おそらく今では改善されているでしょう)。私にとってのSeleniumの最大のプラスは、Webアプリをテストできるという事実です。異なるブラウザで。
どちらでもない。コイプを使用します。Seleniumをラップします。はるかに耐久性があります。 https://github.com/featurist/coypu
アップデートオリバー、あなたは正しいです。わかりました、なぜそれが良いのですか?個人的には、特に IE 用の Selenium ドライバーが非常に脆弱であることがわかりました。Ajax を使用する Web サイトで単体テスト用に Selenium を実行するときに、「標準」ドライバーの例外が多数あることが改めてわかりました。
テスト プロジェクトとして C# でスクリプトを書きたいと言いましたか?はい 継続的なビルド展開内での受け入れテスト。
さて、Coypu は上記を扱います。これは、次のようなテスト フィクスチャを可能にする Selenium のラッパーです。
browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");
...これにより、ブラウザ (設定可能なブランド) が起動し、スクリプトが実行されます。スコープ付きリージョンでうまく機能し、非常に拡張可能です。
GitHub にはさらに多くの例があり、以下の Olvier が言及しているように、Adrian のビデオは優れています。私は、これが .Net の世界でブラウザベースのテストを推進する最良の方法だと考えており、Ruby の同名に倣おうとしています。 capybara
両方を使用しましたが、どちらも正常に動作するようです。私のうなずきはSeleniumに対するもので、Ajaxのサポートが優れているように見えました。 WaTiNは成熟したと思いますが、前回使ったので同じことが必要です。
最大のことは、どの開発環境に参加したいですか? SeleniumとWatinにはレコーダーがありますが、Seleniumはブラウザーにあり、watinはVisual Studioにあります。 +と-はそれらの両方になります。
今まで、私たちはエンタープライズ向けのソリューションを提供するための純粋なマイクロソフトショップであり、WatiNを採用しました。これは将来変更される可能性があります。
より最近のソースとして:
マイクロソフトは、 MSDN Magazine 12/2010 は、SpecFlowとWatiN(クールなBDD-Behavior Driven Development)を組み合わせたBDD-Primerです。著者のBrandon Satrom(msft Developer Evangelist)も2010年12月にビデオウェブキャスト上記の調査結果を1対1で詳しく説明しています。
ATDDのサポートに関する2011年4月の Whitepaper があります。 クリスチャンハッサ、チームがSpecFlowを構築しました。
私はWatinを使用していますが、Seleniumは使用していません。私はWatinですぐに立ち上がって実行し、ほとんど問題がなかったと言うことができます。私がやりたかったことを思い付くことができなかったことを考えることができません。 HTH
主にテストの開始点を記録するためにFireFox用のSelenium IDEプラグインが好きなため、私は通常Seleniumを使用しています。
WebAii をお勧めします。私の不満は少なかった。私はSeleniumを試したことは一度もありませんでしたが、WaTiNを使用したことはあまり覚えていません。 WebAiiには独自のダイアログハンドラを実装するためのインターフェイスがありますが、Windowsダイアログを適切に処理するフレームワークは知りません。
両方の使用を検討しました。 Seleniumのレコーダーを使用して、FFでいくつかのテストを作成しました。 Watinでも同じことをしようとしましたが、 Watin Recorder(2.0.9.1228)は私たちのサイトにとってはまったく価値がないことがわかりました。 IE6でサイトをレンダリングしているように見えたため、私たちのサイトは事実上記録できなくなりました。 IE6はサポートしていません。使用しているブラウザを変更する方法が見つかりませんでした。 Watin Recorderは1台しか見つかりませんでした。複数ある場合、または最新のものがあれば、コメントしてください。
Firefox用Selenium Recorder IDEは使いやすく、テストをC#に移植します。これは素晴らしいことではありません。回避策のあるブログ投稿を1つか2つ読んでも、テストスイートの移植を機能させることができませんでした。そのため、生成されたコードを少し操作します。それでも、それは90%動作し、それは代替よりも優れています。
私のお金/時間では、セレンは新しいテストを簡単に構築できるという点で優れています。 IEには Firebug ほど優れた開発者用ツールバーがないため、Firefoxで開発を始めているので、Firefoxで正常に動作するレコーダーを使用することは大きなボーナスです。
ここでの私の結論は、チャーチルによる民主主義の引用によく似ていました。 Seleniumは、自動UIテストの最悪の形態です。他のすべてのものを除きます。
話が逸れる危険がありますが、私は Axe/WatiN をお勧めします。Ax を使用すると、基礎となるテスト「言語」の知識がなくても、「手動」テスターが Excel でテストを作成できます。特注のアクションを作成するには「技術者」が必要です (IE.今日は少し複雑なテーブルルックアップと相互参照を実行する必要がありましたが、一度記述したアクションは、技術に詳しくないテスターでもテストで使用できます。
また、英国政府ゲートウェイ プロジェクト (6K 以上の自動テストがあると思います) が最近、すべてのテストを 1 週間以内に Axe/Winrunner から Axe/Watin に移植したと聞きました。そして、テストの多くはかなり複雑です - 私は数年前にそれに取り組んでいたので知っています...
潜在的なクライアントが Selenium を使用しているため、現在 Selenium を検討しています。ただし、「馬車」ツールの上のレイヤーとして Axe を少し見てみることをお勧めします。
iframe、モーダルダイアログ、およびクロスドメインiframeにアクセスする必要がある場合は、WatiNが最適です。 Seleniumはcommandtimeout例外をスローしていたiframeを処理できませんでした。 WatiNは、特にWebサイトがShowModalDialogなどのIE固有のものを使用している場合、より多くのことを行うことができます。WatiNはそれらすべてを非常にうまく処理します。クロスドメインのiframeアクセスもできます。
IEとFFのテストを行う必要がある場合は、両方を行う必要がありますが、プレゼンテーションテストではうまく機能します。 1つの要素がわずかにずれているかどうかは検出できず、要素が存在するだけです。 UI /プレゼンテーションテストの人間の目を置き換えることができるものは何も知りませんが、それを支援するためにいくつかのことができます(ユーザーがレビューするために各ステップでページのスクリーンショットを撮る)。