WebDriverでブラウザを再利用するとうまく動作することがわかるan example I wroteが表示されます。基本的に、ブラウザウィンドウがWebDriverからインスタンス化されている限り、getWindowHandles()を使用して常に取得できます。複数のウィンドウが開いている場合は、Listを使用してそれらのウィンドウを追跡してください。さまざまなWebDriverメソッドを使用して、特定の方法で表示されるウィンドウや特定の情報を含むウィンドウを識別できます。
つまり、ブラウザウィンドウがWebDriverによって開かれていない場合、WebDriverにはフックする機能がありません。
ラフ例:私は一つのプロジェクトで
public static boolean selectWindow(WebDriver driver, String windowTitle){
//Search ALL currently available windows
for (String handle : driver.getWindowHandles()) {
String newWindowTitle = driver.switchTo().window(handle).getTitle();
if(newWindowTitle.equalsIgnoreCase(windowTitle))
//if it was found break out of the wait
return true;
}
return false;
}
は、私は窓の私の配置に応じて、特定のint型のステータスコードを返すメソッドを作成しました。ステータスコードが私の予想どおりであれば、次のテストは、再度ログインするか新しいウィンドウを開くことなく進めることができます。
もちろん、SurefireやTestNGなどのテストフレームワークがスレッドごとにスレッドをフォークする場合、クラスごとに1つのWebdriverインスタンスが必要です。あなたのテストフレームワークがメソッドでフォークするならば、スレッドがそれにアクセスできるように、テストメソッドへの引数としてwebdriverインスタンスを渡す必要があります。
そうです。すべてのウィンドウが同じドライバインスタンスから起動されている限り、ウィンドウを再利用するのはあまり問題になりません。子ウィンドウを閉じ、親ウィンドウを開いたままにする方法が必要です。 – djangofan