Selenium IDEですべてのテスト ケースを記録し、それをJava/WebDriverにエクスポートして、Eclipse を使用して WebDriver で実行できないのはなぜですか?
WebDriver を使用する際に非常に混乱しているため、明確な説明が必要です!
IDE で記録されたスクリプトが WebDriver で失敗する理由を誰か説明してもらえますか?
Selenium IDEですべてのテスト ケースを記録し、それをJava/WebDriverにエクスポートして、Eclipse を使用して WebDriver で実行できないのはなぜですか?
WebDriver を使用する際に非常に混乱しているため、明確な説明が必要です!
IDE で記録されたスクリプトが WebDriver で失敗する理由を誰か説明してもらえますか?
Selenium IDE ですべてのテスト ケースを記録し、それを Java/WebDriver にエクスポートして、Eclipse を使用して WebDriver で実行できないのはなぜですか。
実際、これは Selenium IDE で非常に簡単に行うことができます。テスト ケース / テスト スイートを Selenium IDE に記録し、"Java / JUnit 4 / Webdriver" を .java ファイルにエクスポートします。これにより、Eclipse からインポートして実行できる JUnit テストが生成されます (もちろん、正しいバージョンの JUnit を使用して)。
100% 信頼できるわけではなく、手動で変更や修正を加える必要があるかもしれませんが、一般的にはうまく機能します。単一の小さなテストケースから始めて、そこから作業してください。
IDEで記録して、WebDriverで記録を再生しないのはなぜですか???
Bob が手動チェックを実行し、Selenium IDE とのやり取りを記録しているとします。GUI の更新に時間がかかる操作を実行し、操作が完了したらボタンをクリックします。Bob は、操作の開始時に表示されていたスピナーが操作の終了時に削除されるため、GUI の更新が完了したことを認識しています。ボタンをクリックする前に操作が完了している必要があるという事実を、IDE はどのように捉えるのでしょうか? (これは、操作が完了するまでボタンが無効になっている場合ではないことに注意してください。) これは仮説ではありません。動的テーブル (DataTables によって管理されるものなど) をテストする場合、ユーザーはいつでも何でも変更できます。
これは、IDE で作成された一連のコマンドが WebDriver で失敗する理由の 1 つです。何を待つべきかわからないだけです。
IDE で待機を手動で追加することは可能ですが、これを行うと、「すべてのテスト ケースを記録するだけ」ではなくなります。そして、あなたがしていることは、WebDriver のコードを書くことに似ています。
少し前に、ユーザーが複数ページのレコードを持つテーブルの最後のレコードを Selenium にクリックさせたいという Selenium の質問がありました。問題は、どうすればテーブルをページングして最後のページまでスクロールし、最後のレコードをクリックできるかということでした。誰か (おそらく私、おそらく他の誰か) は、テーブルが並べ替え可能な場合、逆の順序で並べ替えることができ、Selenium コードが最初のレコードをクリックできると指摘しました。これは、操作ではなく 2 つの操作p+1
です。p
p
WebDriver のコードを作成するときは、必要な結果を得るために風光明媚なルートを取らないようにテストを作成する機会があります。それが重要な理由に関する技術的な詳細については、次のポイントを参照してください。
Selenium コマンドを実行するソフトウェアがローカルで、ブラウザーがローカルである場合、Selenium の操作にコストがかかるとは思わないかもしれませんが、コマンドを 1 台のマシンで実行し、ブラウザーがリモートである場合、大幅な速度低下に気付くでしょう。たとえば、Sauce Labs VM または BrowserStack VM でブラウザーを生成してテスト スイートを実行する場合、ネットワークの遅延により、スイートが完了するまでの時間が大幅に長くなります。完全なアプリケーション テスト スイートの場合、これはさらに何分もかかる可能性があります。
IDE は、Selenium スクリプトとブラウザーの間の往復を必要とする一連のコマンドを生成します。各往復が加算されます。2 つの要素に同じテキストが含まれていることを確認したいとします。通常は IDE を使用しないため、Selenese は使用しませんが、Python で WebDriver コードを使用すると、スクリプトは次のようになります。
a = driver.find_element_by_id("a")
b = driver.find_element_by_id("b")
assert_equal(a.text, b.text)
このコードには 4 回の往復が必要です。フィールドfind_element...
へのアクセスごとに 1 回と 1 回の往復です。text
同じテストを書くことができます:
a_text, b_text = driver.execute_script("""
var a = document.getElementById("a");
var b = document.getElementById("b");
return [a.textcontent, b.textContent];
""");
assert_equal(a_text, b_text);
これは 1 回の往復で済みます。IDE を使用してアクションを記録する場合、コマンドのシーケンスは前のスニペットのようになり、多くのラウンドトリップが発生します。WebDriver 用のコードを記述するときは、コードを最適化する機会があります。
これは、Selenium IDE が役に立たないという意味ではありませんが、Selenium IDE でテストを記録し、それらの記録を WebDriver で再生することは決して考えません。
あなたが初心者の場合、IDE スクリプトの80%を webdriver JAVA スクリプトとして実際に使用できます。エクスポートした IDE スクリプトを少し改良するだけで問題なく動作します。
しかし、複雑な機能のテストを開始するときは、それを解決するための基本的な Java メソッドのいくつかを学ぶ必要があります!
webdriver を使用すると、Selenium IDE で取得したテスト ケースを Selenium サーバーで、または RC 経由で複数のサーバーに実行できます。これには、Selenium 対応プロバイダーと統合するためのオプションが含まれます (下部のリンクを参照)。
たとえば、IDE でテスト ケースをキャプチャした場合、独自の Selenium サーバーまたは Saucelabs のようなプロバイダーと簡単に統合して、Ubuntu の Firefox、OSX の Safari、および Windows 8 の IE10 でテスト ケースの実行を処理できます。 . 他のテスト ケースと同様に、IDE (Eclipse / IDEA / etc )、ビルダー (maven / gradle /)、および / または CI システム経由で実行できます。
いくつかの例については、https://saucelabs.com/seleniumをご覧ください。また、Soasta での負荷テストにセレン テスト ケースを使用しました。WebDriver を使用すると、単純な IDE テストをさまざまなコンテキストで使用できます。
コードの複雑さが増すと、IDE を使用してコードを管理することが困難になるためです。IDE を使用してスクリプトを保守するのは困難です。
また、IDE から webdriver へのテスト ケースのエクスポートは、100% 信頼できるわけではありません。