これはテストの範囲によって異なります。 CucumberやJBehaveのようなGherkinベースのシステムを使用している場合、テストは一般的にはストーリー内のシナリオを伴うステップです。複数のシナリオや複数のストーリーがある場合は、一度(静的)にドライバを設定し、そのインスタンスを他のシナリオやストーリーに渡す方が簡単な場合があります。一方、毎回新しいドライバが必要な場合は、ドライバを静的に定義しないでください。これは、各シナリオでドライバのインスタンス化に必要な手順が必要であることを意味します。ユーザーは、など、最後にドライバを閉じることができます。これは、より明らかに自己完結型のシナリオを可能にしますが、スタティックドライバでも、ドライバがインスタンス化されているかどうか(またはユーザがログインしている)を確認してから、それは新鮮なスタートです。
完全に自己完結型のテストをお持ちの場合は、ドライバの動的(非静的)宣言を使用してください。ドライバで実行されるすべての場合は、初期化して閉じる必要があるためです。あなたのスイートに他のテストが含まれていて、同じドライバを使用することで恩恵を受ける場合は、そのように設計してください。 JBehaveでは、テストランナーでドライバを初期化するので、1つのテスト、1つのストーリー、または複数のストーリーを、最も迅速かつ効率的な方法で実行するかどうかは問題ありません。
私はこれを明確に説明してくれることを願っています。
静的である必要はありません。セレンコード – kushal
のすべてにドライバインスタンスを使用できるようにする方法に基づいています。実装ははっきりと動作します。あなたはそれに問題があると思いますか?あなたのアプローチを変更するような点はありません。あなたは1つのドライバをウィンドウ間で切り替えることができますが、問題のように思えます。 –
@Mark LapierreこのアプローチはWebdriverとPageObjectModelアプローチを使用すると機能しますが、現在はCucumberを使用するフレームワークを開発する必要があります。私のDriverFactoryクラスの中で、TestNGを使用してBeforeClassなどを呼び出すなど、CucmberとJUnitライブラリを使用するときに問題が発生することはありません。 – Gbru