2017-06-06 13 views
0

現在、私は5つのインスタンスを、それぞれ異なるノード上のSelenium Gridに設定しています。一度に5つの並列テストを実行しようとしていますが、これらのテストのいくつかは失敗します。毎回、異なる行で失敗する異なるテストです。並列実行のためのSeleniumテストの最適化

要素が表示されるまで待機するアサーションも待機していますが、テストケースは毎回異なる場所で失敗しています。しかし、テストを1つずつ実行すると、すべてのテストが100%時間を過ぎます。

パラレル実行のテストを最適化する方法はありますか?

私のテストは、Windows環境でJavaで書かれています。私はphantomjs 1.9.8とSelenium 3.54を使用しています

+0

私はあなたがボトルネックを特定しようとするべきだと思います。それが何であるかを知ったら、それを排除するか、それを回避することができます。 –

答えて

1

Anecdotal:私のテストは私のマシンでうまく動作しますが、グリッドノードでうまく動作していないのは、通常はタイミングの問題です。私のワークステーションは私のVM(グリッドノード)よりも強力なので、単純なアニメーションはレンダリングに時間がかかります。それは私が.Click()の代わりに使用する.ClickViaJavaScript()を書いたところになっています。私はまた、jsのクリック後に500msの睡眠をとった。

// Click element via JavaScript 
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", element); 
// Wait a moment 
System.Threading.Thread.Sleep(500); 

パラレルは本当に長い間、あなたが実行時にグローバル変数を変更しないと、各テストがアトミックであるように書き換えされている任意のコードを必要としません。

+0

私のテストでは、クリックして別のページを読み込むことが多いので、問題が発生する可能性があります。私はアクティブウェイトを入れています(私のページ上の特定の要素があるまで待ちますが、これらは約4秒後にタイムアウトします)。私は静的な待機が悪いコーディングの練習であると聞いたことがありますか? – Jay

+0

スタティック・ウェイトはベスト・プラクティスとはみなされませんが、時には必要なことをすることもあります。また、4秒のタイムアウトはかなり低いです。通常、タイムアウトは約10,30、または60秒(暗黙的または明示的)になります。 –

+0

はい、私はダイナミックタイムアウトを増やして、そのショットを与えます、それが動作しない場合、私は静的待機を調べます。ご協力いただきありがとうございます :) – Jay

関連する問題