最初に行う必要があるのは、新しいタブを開いてそのハンドル名を保存することです。キーは自動化サーバーで常に使用できるとは限らないため、キー(ctrl + t)ではなくjavascriptを使用して実行するのが最適です。例:
public static String openNewTab(String url) {
executeJavaScript("window.parent = window.open('parent');");
ArrayList<String> tabs = new ArrayList<String>(bot.driver.getWindowHandles());
String handleName = tabs.get(1);
bot.driver.switchTo().window(handleName);
System.setProperty("current.window.handle", handleName);
bot.driver.get(url);
return handleName;
}
次に行う必要があるのは、タブを切り替えることです。ウィンドウハンドルを切り替えるだけでそれを行うと、作業するタブが常にフォーカスされているとは限らず、Seleniumが失敗することがあるため、常に機能するとは限りません。私が言ったように、キーを使用するのは少し問題があり、javascriptはタブの切り替えを実際にはサポートしていないので、アラートを使用してタブを切り替えました。これは魅力のように機能しました。
public static void switchTab(int tabNumber, String handleName) {
driver.switchTo().window(handleName);
System.setProperty("current.window.handle", handleName);
if (tabNumber==1)
executeJavaScript("alert(\"alert\");");
else
executeJavaScript("parent.alert(\"alert\");");
bot.wait(1000);
driver.switchTo().alert().accept();
}