WatiNまたはSelenium?[閉まっている]


148

プレゼンテーションの自動テストのコーディングをすぐに開始します。誰もがWatiNSeleniumを推奨しているようです。ASP.NET Webフォームの自動テストでどちらを好みますか?これらの製品のどれがあなたのためによりよく働きますか?

補足として、WatiN 2.0が2008年3月からCTPに参加していることに気付きましたが、それは懸念事項ですか?


30
この質問は閉じるべきではないと思います。私や他の開発者に役立ちます(賛成票を参照)。このような質問は、Stackoverflowが必要な理由の1つです。管理者の決定に反対票を投じることができればと思います。
Maxim Eliseev 2013

7
なぜこの質問は締め切られたのでしょうか。それは非常に建設的です。私は両方を勉強していて、そのdiferencesを知りたいのですが
マルセロ・Ferrazの

14
建設的ではない??? ...このサイトは、あまりにも多くの制御をしている馬鹿に圧倒されています。
ロナルドマクドナルド

回答:


108

2009年の第1四半期のどこかで、WatiN 2.0のベータリリースに取り組んでいると言いたいだけです。これは、現在のCTP 2.0バージョンへのメジャーアップグレードであり、基本的に、FireFoxとIEを自動化するための同じ機能を提供します。バージョン1.3.0はIEの自動化を提供します。

そこで心配はありません。

これがあなたの選択に役立つことを願っていますJeroen van Menen Lead dev WatiN


23
@jcollum申し訳ありませんが、-1を与えることには同意しません。Jeroenは2番目の質問「副次的注意として...」にのみ回答しました。そして、製品の主任開発者ではないにしても、それに応えるのに適した人は誰でしょうか。この回答をベストアンサーとしてマークすることのみが問題になる場合があります。
Henry99、2011年

1
@ Henry99は、質問または別の質問の下のコメントとしてより適切でした。ここでの中心的な質問は「AまたはB」です。AやBの作者は、バイアスがかかることは明らかであるため、このような質問に答えるべきではありません。
jcollum

3
@jcollum Jeroenは、Seleniumと比較した彼の製品の品質については言及していません。おそらくあなたは質問の2番目の部分を読まなかったかもしれませんが、プロジェクトの主任開発者は疑いもなくその質問に答える最も有能な人物です。
グリン

2
@Grinn:私はあなたの上のコメントでそれに対処しました、あなたはそれを読みましたか?彼はメインの質問(WatinまたはSelenium)に答えていません。別の質問に完全に含まれるべきだった何かに対処しています。
jcollum 2011

いい答え...
Mohsin Awan

58

コミュニティによって継続的に改善され、サポートされるフレームワークに深刻な長期的な投資をする場合は、おそらくSeleniumが最善の策です。たとえば、Matt Raibleのブログでこの情報を見つけました。

金曜日の時点で、Googleには50を超えるチームがあり、内部のSelenium Farmで1日に5万回以上のテストを実行しています。これらのテストの96%は、Selenium RCおよびFarmマシンによって正しく処理されます。残りの4%は、一部はRCのバグによるもので、一部はエラーのテストによるものですが、原因の特定は困難な場合があります。Seleniumは、Google内のWebアプリケーションの機能テストのための主要なテクノロジーとして採用されています。それは朗報です。

私は最近Seleniumのミートアップの1つに行ったところ、GoogleがSeleniumを改善し、Simon Stewartが開発した自動テストツールであるWebDriverと統合するために真剣なリソースを投入していることを知りました。WebDriverの主な利点の1つは、ブラウザ内でJavascriptアプリケーションとして実行するのではなく、ブラウザ自体を制御することです。つまり、「同じオリジン」問題のような大きな障害は問題ではなくなります。


1
Seleniumは現時点ではより成熟したプロジェクトのようであり、Googleが使用しているという事実はかなり確かな推奨事項です(
Watinを

37

私たちは両方をテストし、WaTiNを使用することにしました。他の人が指摘したように、SeleniumにはWaTiNにはない優れた機能がいくつかありますが、Seleniumを機能させるのに問題が発生しました。私の記憶が正しければ、SeleniumがWaTiNが処理中のすべてを実行する実際のブラウザーを制御する別のアプリを持っているという事実から生じたセットアップの問題が発生しました。


4
パフォーマンスのメモと実際の使用状況の場合は+1。
ジェレミー・マギー

私は同じ問題に気づきました:#1パフォーマンスはあまり良くなく、#1テストはJavaサーバーで実行されています([TestSetup]で設定する必要があります)。
Peter Gfader 2010

18
これはもう問題ではありません-Selenium 2.0にはWebDriverライブラリが付属しているため、Javaサーバーだけでなくブラウザを直接制御できます。
Igor Brejc

2
私はSeleniumを試したことはありませんが、Watinに問題がありました。明らかな理由もなくテストが突然停止し、COMエラーがランダムにスローされました(少なくともパターンが見つかりませんでした)。
Piotr Owsiak 2012

30

私はそれらを両方試してきました、そしてここに私の最初の考えがあります...


WatiN

いいもの

  • 高速実行。
  • スクリプト作成ツールは独立したプロジェクトです。私が知っている2つがあります:ワックス(Excelベース、CodePlexでホスト)とWatiNテストレコード(SourceForgeでホスト)。どちらもSelenium IDEほど堅牢ではありません。
  • 非常に優れたIEサポート。実行中のインスタンスにアタッチしたり、インスタンスからデタッチしたりできます。ネイティブウィンドウハンドルなどにアクセスできます(以下のスクリプト例を参照)。
  • NuGetはパッケージ化されており、.NET、Visual Studioスタイルの環境で簡単に実行でき、更新を維持できます。

悪い人

  • 多くの場合、WatiN(watin xyz)をググリングすると、代わりに「watir xyz」が推奨されます。そこにはそれほど多くのドキュメントはありません。
  • 少ししかありません(ドキュメント)、それは混乱しています。たとえば、最初は、CSSセレクターのネイティブサポートがないように見えます。特に、「WatiNCssSelectorExtensions」のような拡張ライブラリと、代替の技術(ページへのjQuery / sizzleの挿入など)に関する多くのブログ記事があるためです。Stack Overflowで、ネイティブサポートがあることを示唆するJeroen van Menenのコメントを見つけました。少なくともリード開発者はStack Overflowに時間を費やしています:)
  • ネイティブ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に関連する速度の問題が説明される場合があります。
  • 分離されたプロセス-「ドライバー」と「制御」は、堅牢性、複雑性などが向上するだけでなく、グリッド/分散テスト環境の作成が容易になります。「配布」メカニズム(つまり、Driver&Control間の通信)がWebSphereまたは他の既存の堅牢なメッセージキューマネージャー全体にある場合、それは本当に気に入りましたか。
  • そのままでChromeやその他のブラウザをサポートします。

すべてにもかかわらず、私は結局WatiNに行きました。主に小さな画面スクレイピングアプリケーションを書くつもりで、開発にLINQPadを使用したいと思っています。リモートのIEインスタンス(私が自分でスポーンしなかったもの)に接続することは、大きなプラスです。既存のインスタンスをいじくりまわすことができます。次に、スクリプトを少し実行してから、もう一度いじくります。これは、Seleniumで行うのが難しいですが、その間にスクリプトに「一時停止」を埋め込むことができると思います。ブラウザで直接いじる。


2
詳細な比較をありがとう。
Sam

18

最大の違いは、Seleniumがさまざまなブラウザーをサポートしていることです(IEまたはFFだけでなく、http: //seleniumhq.org/about/platforms.html#browsersを参照してください)

また、Seleniumにはリモートコントロールサーバー(http://seleniumhq.org/projects/remote-control/)があります。つまり、テストコードが実行されているのと同じマシンでブラウザーを実行する必要はありません。したがって、Webアプリをテストできます。異なるOSプラットフォーム。

一般的に、Seleniumの使用をお勧めします。私は数年前にWatiNを使用しましたが、その安定性に満足していませんでした(おそらく、現在までに改善されています)。私にとってSeleniumの最大の利点は、Webアプリをテストできることです。別のブラウザで。


3
セレンは、別のブラウザをサポートしています -エキストラ重要な今、我々はクローム、サファリ、FF、およびIE 6、7、および8をサポートする必要が与えられた
トニー・エニス

17

どちらでもない。Coypuを使用します。Seleniumをラップします。はるかに耐久性。https://github.com/featurist/coypu

あなたが正しいイェオリバーを更新します。なんでそれがいいの?個人的には、特にIEのSeleniumドライバーは非常に壊れやすいことに気づきました。ajaxの重いWebサイトで単体テスト用のSeleniumを駆動するときに、何度も見つかった「標準」ドライバー例外があります。

スクリプトをテストプロジェクトとしてc#で記述したいと言ったことはありますか?はい継続的なビルド展開内の受け入れテスト。

さて、ヌートリ​​アは上記を扱います。これは、次のようなテストフィクスチャを可能にするSeleniumのラッパーです。

browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");

...(構成可能なブランドの)ブラウザーを起動し、スクリプトを実行します。範囲指定されたリージョンでうまく機能し、非常に拡張可能です。

GitHubには他にも例があり、以下のOlvierが言及しているように、Adrianのビデオは素晴らしいものです。私はそれが.Netの世界でブラウザベースのテストを推進する最良の方法だと思い、それをRubyの名前に倣うようにしていますcapybara


この回答にはさらに多くの注意が必要です。Coypuは、YOUと自動化されたブラウザテストとの間の欠けているリンクです。すごい!今それを見てください!Selenium(またはWatiN)で苦労したことがある場合は、AJAXまたは要素を正しく見つけようとする-Coypuが祈りの答えです;-)
Oliver

@penderi、詳細を追加してくれてありがとう:-)
Oliver

12

私は両方を使用しましたが、どちらも問題なく動作するようです。私のうなずきはSeleniumです。Ajaxのサポートが改善されたようです。WaTiNは成熟していると思いますが、前回から使用しているので、同じものが必要です。

最大のことは、どの開発環境にしたいですか?SeleniumとWatinにはレコーダーがありますが、Seleniumはブラウザーにあり、watinはビジュアルスタジオにあります。+と-の両方に。


6

これまで、私たちはエンタープライズ向けのソリューションを提供する純粋なマイクロソフトショップであり、WatiNを採用していました。これは将来変更される可能性があります。

より最近の情報源として:

Microsoftは、MSDNマガジン 12/2010で、SpecFlowとWatiN(クールなBDD-Behavior Driven Development)を組み合わせたBDD-Primerを印刷しました。その作者であるブランドンサトロム(msft開発者エバンジェリスト)は、2010年12月に、上記の調査結果を1対1でビデオビデオキャストで詳しく教えています。

SpecFlowを構築したChristian Hassaの SpecLog、SpecFlow、およびTeam Foundation Server(Acceptance Test Driven Development / Behavior Driven Development)を使用したATDD / BDDのサポートに関する2011年4月のホワイトペーパーがあります。


5

私はワティンを使用していますが、セレンは使用していません。私はWatinですぐに立ち上がって実行しており、問題はほとんどまたはまったくありませんでした。自分がやりたかったことで、それが分からなかったとは思えません。HTH


4

私は通常、テストの開始点を記録するためにFireFoxのSelenium IDEプラグインが好きなため、Seleniumを使用します。


サポートされているFFのバージョンを知っていますか?FF6とFF5でIDEを試してみましたが、愛はありませんでした。6のサポートは期待していませんでしたが、5の場合は驚きました。
MikeJ 2011

4

WebAiiをお勧めします。それが私が成功した理由であり、それを使用するときに私の不満はほとんどありませんでした。私はSeleniumを試したことがなく、WaTiNをあまり使ったことを覚えていません。少なくとも、うまく機能するようになるまでは。WebAiiには独自のダイアログハンドラーを実装するためのインターフェイスがありますが、Windowsダイアログを適切に処理するフレームワークについては知りません。


私は3番目の選択肢を提示するために+1を与えたいのですが、製品に関する経験を提供していないことと、他の2つとの比較については-1と言います。
ジェフマーティン

Windowsダイアログ= js警告ボックス?もしそうなら、セレンはそれをサポートしています。私はそれらの警告ボックスを不愉快に思うのでそれをテストしたことがありません。
jcollum

4

両方の使用を検討しました。Seleniumのレコーダーを使用して、FFでいくつかのテストを作成しました。私はWatinでも同じことをしようとしましたが、Watin Recorder(2.0.9.1228)は私たちのサイトにはまったく役に立たないことがわかりました。それはIE6でサイトをレンダリングしているようでした-私たちのサイトを事実上記録に使用できなくしています。IE6はサポートしていません。使用しているブラウザを変更する方法が見つかりませんでした。私はそこにWatin Recorderを1つだけ見つけました。複数ある場合、または最新の状態になっている場合は、コメントしてください。

Selenium Recorder IDE for Firefoxは使いやすく、テストをC#に移植します。これは得意ではありません。回避策のあるブログ投稿を1つまたは2つ読んだにもかかわらず、移植したテストスイートを機能させることができませんでした。そのため、生成されたコードを少し操作します。それでも、90%は機能し、他の方法よりも優れています。

私のお金/時間については、セレンは新しいテストを簡単に構築できる点で優れています。IEには、Firebugに近い優れた開発者ツールバーはありません。そのため、私は最初にFirefoxで開発を行っているので、Firefoxで優れたレコーダーを使用できることは大きなボーナスです。

ここでの私の結論は、Churchillによる民主主義の引用によく似ています。セレンは、自動UIテストの最悪の形式です。他のすべてのものを除いて。


QAチームがFFプラグインを使用して「手動」テストを作成し、開発者が生成されたC#テストを移植できるようになったことで、私たちのインフラストラクチャはSeleniumへの移行を非常に簡単にしました。WaitInは十分に公正に見えますが、テストを構築する「骨の折れる」プロセス(WaitInプロジェクトページのビデオによる)は、この場合、お客様にとっての選択肢ではありませんでした。
sonstabo

@sonstabo:それは私が行きたいと思っている方向です。いつか私たちがQA部門を持っているとき:puppydogeyes:
jcollum

3

接線で行くリスクがあるので、Axe / WatiNをお勧めします。Axeを使用すると、基になるテストの「言語」を知らなくても、「手動」テスターがExcelでテストを記述できます。オーダーメイドのアクションを作成するには「技術者」が必要です(IE。今日は少し複雑なテーブルのルックアップと相互参照を行う必要がありました)。

英国政府ゲートウェイプロジェクト(6K +テストの自動テストがあると思われます)は最近、すべてのテストをAxe / WinrunnerからAxe / Watinに1週間以内に移植したと聞いています。そして、テストの多くはかなり複雑です-数年前にテストしたので知っています...

現在、Seleniumを検討しています。潜在的なクライアントが使用しているためです。しかし、私はAxを「作業馬」ツールの上のレイヤーとして少し見直すことをお勧めします。


3

iframe、モーダルダイアログ、クロスドメインiframeにアクセスする必要がある場合は、WatiNが適しています。Seleniumは、commandtimeout例外をスローしていたiframeを処理できませんでした。WatiNは、特にWebサイトがShowModalDialogなどのIE固有のものを使用している場合、さらに多くのことを実行できます。WatiNはそれらすべてを非常にうまく処理します。クロスドメインのiframeアクセスもできます。


-1

IEとFFのテストを実行する必要がある場合は、両方を実行する必要がありますが、プレゼンテーションテストの場合にのみうまく機能します。それらは、1つの要素がわずかに外れているかどうかを検出できません。要素が存在するだけです。UI /プレゼンテーションテストの人間の目を置き換えることができるものは知りませんが、それを支援するためにいくつかのことを行うことができます(ユーザーが確認するために、各ステップでページのスクリーンショットを撮ります)。


「IEとFFのテストを行う必要がある場合は、両方を実行する必要があります」-Seleniumは両方を実行できませんか?
marcumka 2009年

1
セレンrcはサファリとffを行うことができます
redsquare 2009年

FFでのみ録音できますが、RCを使用してIEとFFの両方を制御できます(おそらく他のものも)
Jeff Martin

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.