過去 4 か月から、 を使用して自動化テストを行っていますSelenium RC
。
しかし、最近、Selenium RC が非推奨であることを知りました。非常に多くの人が に変更することを提案しましたSelenium Webdriver
。
では、Selenium RC の問題点と、Webdriver が RC より優れている理由を教えてもらえますか??
ありがとうございました。
過去 4 か月から、 を使用して自動化テストを行っていますSelenium RC
。
しかし、最近、Selenium RC が非推奨であることを知りました。非常に多くの人が に変更することを提案しましたSelenium Webdriver
。
では、Selenium RC の問題点と、Webdriver が RC より優れている理由を教えてもらえますか??
ありがとうございました。
まあ、複数の理由があります。以下は順不同です
Webdriver は、Selenium RC よりもクリーンな API を提供します。最も一般的な例は、selenium.type と selenium.typeKeys がある場合で、どちらも実質的に同じことを行います。Webdriver は、タイプに関連するすべてのアクションに対してメソッド sendKeys を 1 つだけ提供します。要するに、webdriver クラスはよりよく整理されていると言えますか?
Selenium は、javascript インジェクションを使用して動作します。Selenium をしばらく使用したことがある場合は、同じ生成元ポリシーの問題と JavaScript インジェクションの制限に注意する必要があります。Webdriver は、ブラウザごとにドライバを使用することでこれを克服します。これは、Firefox の場合、webdriver がアドオンとしてブラウザーにアタッチされ、IE の場合は自動化アトムを使用し、chrome と Opera の場合は chrome ドライバーを使用することを意味します。
上記の理由により、Web ドライバーのテストは Selenium よりも高速です。
Selenium に比べて webdriver を拡張する方がはるかに簡単です。Webdriver は、独自のカスタマイズされたアクションを組み合わせて作成できる拡張可能なアクション クラスを提供します。
Webdriver は、Iphone、iPad、Android の携帯電話やタブレットなどのモバイル デバイスでのテストをサポートできます。
最後になりましたが、現在、セレン プロジェクトで開発作業は行われていません。現在利用可能なものはすべて引き続きサポートされますが、セレンの新しい方法や機能強化は行われていません。Selenium と webdriver プロジェクトは数年前に統合され、Selenium 2.0 になりました。
AJが言ったこと。
RC には、簡単に克服できない制限があります。
拡張性は大きな問題です。私は真剣にそれを十分に強調することはできません. いくつかの RC メソッドを拡張して、通常よりも多くの作業を行ったところ、簡単には通過できない障壁にぶつかりました。RC で 750 行のコードとCommand パターンを多用することで実行できることは、WebDriver ではいくつかの単純な方法で実行できます。
同じオリジンポリシー。これは、現在のドメインからのみコードを実行できる Javascript セキュリティ ポリシーです。また、RC は完全に Javascript で記述されているため、ドメインを簡単に切り替えたり、多くのドメインからのコンテンツを含むフレームをリダイレクトまたは使用する一部の Web サイトで作業したりすることはできません。
<input type='file' />
Javascript の別のセキュリティ ポリシーにより、入力を埋めることができず、いくつかの回避策を使用する必要があります。
onload
Javascript モーダル ダイアログではうまく動作しません。これらも、回避する必要があります。
Selenium は、(window.alert、window.confirm、window.prompt を置き換えることによって) これらのダイアログを隠そうとするため、ページの実行が停止することはありません。アラート ポップアップが表示される場合は、ページの読み込みプロセス中に発生した可能性があります。通常、ページを保護するには早すぎます。
RCでウィンドウを実際に最大化することはできません:)。
要素を待つ必要がある場合は、独自のメソッドを作成する必要があります。
RCはもはや開発されておらず、新しいものは何もありません。WebDriver がすべての機能を理解するまでには時間がかかりましたが、ついに WebDriver が RC よりもわずかに多くの機能 (待機と最大化) を提供できるようになる時が来ました。そして、それは良くなるだけです!
RC のgetEval()
方法は、WebDriver の方法と似ていませんexecuteJavascript()
。前者は aString
を返し、特定のページ要素などを指定することはできません。WebElements
後者は、多くの組み込み言語データ構造、 を直接返すことLists
ができ、それらを引数として受け取ることもできます! つまり、WebDriver で要素を見つけて、その上で JS を実行できるということです。RC では、JS でも要素を見つける必要があります。それは可能ですが、より難しく、エラーが発生しやすくなります。
それはほとんどそれです。切り替えない理由もありWebDriver
ます。API は新しく、まだ変化しています。バグを修正すると、動作がわずかに変化することがあります。したがって、アップグレードして何かが壊れていることを発見するのが面倒な場合があります。
とは言っても、WebDriver の方が使いやすいので、RC には戻りません。そして来年、WebDriver の最も厄介な問題が修正されることを期待しています。