2017-11-12 12 views
0

私が使用したフレームワークを作成しましたSet Browser Implicit Wait 30 合計700個のテストケースを含む50個のスイートがあります。いくつかのテストケース(200 TC)には、要素が存在し、要素が存在しないかどうかを判断するステップがあります。私の目的は、要素存在または要素が存在しないかどうかを確認するのに30秒間待つことを望んでいないことです。私はWait Until Element Is Visible ${locator} timeout=10を使ってみましたが、要素のためにわずか10秒待つことを期待しましたが、30秒間待っていました。 質問:私のフレームワークでこのようなシナリオに対処するための正しいアプローチをお手伝いできますか? 30秒待つことに同意すると、そのようなテストケースを完了するのにかかる時間が長くなります。私は現在20 * 200秒を節約しようとしています。ロボットフレームワーク:ロボットフレームワークでタイムアウトを設定する

答えて

1

最も簡単な解決策は、要素が存在しないことを確認する前に暗黙の待機を変更し、その後にそれを元に戻すことです。これはキーワードset selenium implicit waitで行うことができます。

たとえば、キーワードは次のようになります。

*** Keywords *** 
verify element is not on page 
    [Arguments] ${locator} 
    ${old_wait}= Set selenium implicit wait 10 
    run keyword and continue on failure 
    ... page should not contain element ${locator} 
    set selenium implicit wait ${old_wait} 
-1

"暗黙の待機対明示的な待機"という問題を扱っている問題があります。インターネットを検索すると、なぜミキシングが推奨されないのかよくわかるはずですが、私はJim Evans(IE Webdriverの作成者)がこれをうまく説明したと思います。stackoverflow answer

テストの実行が典型的には、1つまたはこれらの両方を利用して行われているのパフォーマンスの向上:

  1. 並行して、個々の試験
  2. ランテストの期間を短縮します。試験の期間を短縮

は、典型的には、アプリケーションが正常にそれが起こる瞬間をロードしたときにを知るスクリプトが得られるテスト対象アプリケーションの完全な制御にあることを意味します。これは、暗黙の待機をせず、Fluent待機(条件が発生するのを待つ)で排他的に動作することを意味します。これにより、アプリケーションで許容される速度でテストが実行されます。

これは、技術レベルでテストするアプリケーションを理解する時間を費やすことを意味する場合があります。 custom locatorを使用すると、通常のSeleniumLibraryキーワードをすべて使用して、集中待機機能を使用できます。

テストを並行して実行することは、スタンドアロンで実行され、他のテストに依存しないテストを開始することから始まります。 Robot Frameworkでは、Test Suiteファイルを互いに独立して実行できることを意味します。私たちのほとんどはPabotを使用して、スイートを並行して実行し、後でログファイルをマージします。

複数のブラウザアプリケーションテストを並行して実行するということは、同時に複数のブラウザを実行することを意味します。 Chromeでテストする場合、これは1つのホストで行うことができますが、必ずしもそうとは限りません。 IEを実行すると、複数のボックス/セッションが必要になります。次に、実行負荷を複数のマシンに分散するには、Selenium Gridタイプのソリューションが必要になります。

関連する問題