1

Spring を使用して WebDriver を注入することは可能ですか? シングルトンにすることはできず、通常は @Before ブロック中にインスタンス化する必要があることを読みました。その時点で作成されても問題ありませんが、参照を手動で渡すのではなく、一部の「ヘルパー」クラスに「魔法のように」提供したいと考えています。

アップデート

を使用して1回のテストでローカルで正常に動作しました

@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

しかし、同時テストを実行するサーバーに配置するとすぐに、このエラーが発生します。

このファクトリのシングルトンが破棄されている間は、シングルトン Bean の作成は許可されません。

を使用するのPrototypeも良い考えではありません。なぜなら、私も注入したいからですWebDriverBackedSelenium(これにはドライバーが必要で、最終的に 2 つのインスタンスが作成されます)。いくつかのプロトタイプのケースでは、これに遭遇します。

ネストされた例外は org.openqa.selenium.WebDriverException: 新しいセッションの転送中にエラーが発生しました ノードが利用可能になるのを待って要求がタイムアウトしました

4

2 に答える 2

0

Spring を使用してロジックを模倣する 1 つの方法@Beforeは、ドライバー Bean スコープをプロトタイプとして設定することです。これにより、リクエストごとにドライバーの新しいインスタンスが作成されます。問題は、@Autowiredwebdriver の新しいインスタンスを作成するヘルパー クラスで使用する場合です。

テストを同時に実行するために、webdriver を threadlocal として実装しました。これにより、テスト クラスごとにドライバーのインスタンスを 1 回だけ使用して、テスト ケースのドライバー インスタンスを再利用できます。スレッド ローカル コピーは、同じ JVM およびスレッド内で実行されている任意のクラスで参照できます。

于 2015-03-12T15:21:13.267 に答える