新しいウィンドウ/タブ API

Selenium 4では、**新しいウィンドウやタブを扱うためのAPI(newWindow())**が導入され、従来のようにJavaScriptや複雑なウィンドウハンドルの操作をしなくても、より直感的かつ簡潔にマルチウィンドウ操作が行えるようになりました。以下に詳細を説明します。


従来のSelenium(3以前)での課題

Selenium 3以前では、新しいウィンドウやタブを開くには、次のような方法が必要でした:

  • JavaScriptを使ってwindow.open()を実行

  • getWindowHandles()switchTo().window(handle)を組み合わせてハンドルを切り替える

この方法は手続きが複雑でエラーが起きやすいため、特に複数ウィンドウのテストでは保守性が低下する傾向がありました。


Selenium 4での改善点:newWindow() API

Selenium 4では、WebDriverインターフェースに新たにnewWindow(WindowType)メソッドが追加され、明示的に「新しいタブ」または「新しいウィンドウ」を開くことが可能になりました。

使用例(Java)

java
// 既存のWebDriverインスタンス WebDriver driver = new ChromeDriver(); // 新しいタブを開いて切り替え driver.switchTo().newWindow(WindowType.TAB); driver.get("https://example.com"); // 新しいウィンドウを開いて切り替え driver.switchTo().newWindow(WindowType.WINDOW); driver.get("https://selenium.dev");

パラメータの種類

  • WindowType.TAB:新しいタブを開く

  • WindowType.WINDOW:新しいウィンドウを開く

このメソッドは自動でフォーカスの切り替えも行うため、getWindowHandles()switchTo().window()の手動操作を省略できます。


メリット

  • コードの簡潔化と可読性向上:複雑なウィンドウハンドル操作が不要

  • テストの安定性向上:動的なウィンドウ生成と切り替えが統一的に処理される

  • マルチタブ対応のテスト実装が容易


注意点

  • 一部の古いブラウザやWebDriverバージョンではサポートされていない場合があるため、事前に対応状況を確認する必要があります。

  • 開いたウィンドウ/タブの後始末(クローズ)を忘れずに行うことが重要です(テストの信頼性・リソース管理のため)。


まとめ

Selenium 4のnewWindow() APIは、マルチウィンドウ/マルチタブ操作を明示的かつ簡便に行えるように設計された、実用的な進化ポイントです。これにより、複数ページ間の動作確認やクロスウィンドウシナリオのテスト設計がより容易になっています。

ChatGPT4o 生成日:2025/06/21