2017-11-01 6 views
0

@BeforeTestアノテーションにドライバインスタンスを持つシングルトンを1つ宣言し、2つのブラウザを並行して@Testアノテーションのすべてのテストを実行するために使用します。1つのシングルトンをエラーなく2つのブラウザ(ChromeとFirefox)で並列実行するにはどうすればよいですか?出来ますか?

私の質問は、@AfterTestでドライバを終了または終了しようとすると、「quit()が呼び出された後にFirefoxDriverを使用できません」というエラーがスローされますか?それを解決することは可能ですか?

+1

コードを投稿できますか? –

答えて

0

コード例が必要ですが、あなたはスレッドの問題を抱えているように聞こえるされます。

何をやろうとしていることは一つの中央の場所にあなたのテストクラスから抽象webdriverを構成であれば、私はシングルトンが最善の解決策であるかわかりません。

どのようにTestNG threads it's test executionを調べると、WebDriverインスタンスがテストとは別のクラスに存在する場合、予期せぬWebDriverの動作が発生しやすくなります。あなたの場合、これはシングルトンです。私の場合、最初にこの問題に遭遇したとき、それは親クラスでした。私は場所に置か

ソリューションは、すべての構成とwebdriverをのセットアップ/ティアダウンのための親クラスを使用していた、そして、すべて私のテストクラスで、このクラスを拡張します。この作業を適切に行うために、WebDriverをThreadLocal<>に配置する必要がありました。これを行うことで、各スレッド(テスト)が自分自身のWebDriverインスタンスを使用するようにすることができました。

ThreadLocalの操作は非常に難しくありませんが、詳細はhereで確認できます。

あり、この問題を解決するために、他の多くの方法があり、私たちの多くは私たち自身の道を発見した...これは単に私のアプローチです。

関連する問題