アプリケーションで (何らかのリンクをクリックすることによって) 別のウィンドウやタブが自動的に起動される場合は、テストの自動化を最前面で処理できます。
このようなコマンドは、SUT (テスト対象システム) によって開かれたタブを扱うものであり、リンクやアクションを新しいタブで開くためのものではありません。
SwitchWindow と CloseWindow の 2 つの単純なコマンドを使用してタブを扱います。前者は、現在のタブをテストコマンドの実行対象に設定するためのもので、後者は、タブを閉じるためのものです。
どちらの場合でも、次のルールに従って WindowID パラメーターを指定する必要があります。
- win_ser_local: Start コマンドを使用して最初に開かれたウィンドウ
- win_ser_1: 最初に開かれたタブ
- win_ser_2: 2 番目に開かれたタブ
- ... 以降も同様
動作がよく分かるように、このページの下部に
テストの例を紹介しています。
現在のブラウザーのウィンドウ/タブを自動化の対象として設定します。
パラメーター:
- WindowID: ウィンドウの ID を示す特殊文字列です (win_ser_local、win_ser_1、win_ser_2、...)。
使用例:
&driver.SwitchWindow("win_ser_1")
開いているウィンドウ/タブを閉じます。
パラメーター:
- WindowID: 閉じるウィンドウの ID を示す特殊文字列です (win_ser_local、win_ser_1、win_ser_2、...)。
使用例:
&driver.CloseWindow("win_ser_1")
Chrome ブラウザーを開き、3 つの異なるタブを処理する UI テストの例を示します。
//GXtest Recorder により生成されたスクリプト
//ブラウザーを設定
&driver.SetBrowser(Browsers.Chrome)
//WebDriver を起動
&driver.Start()
&driver.Maximize()
//複数のタブで構成される Web ページを開く
&driver.Go("https://the-internet.herokuapp.com/windows")
//最初のタブを開く
&driver.ClickByLinkText("Click Here")
//直近に開いたタブを現在のタブとして設定
&driver.SwitchWindow("win_ser_1")
//新しいタブが表示されていることを確認
AssertStringEquals("New Window",&driver.GetTextByCSS("h3"),"problem on tab #1")
//最初のタブに戻る:
&driver.SwitchWindow("win_ser_local")
//2 番目のタブを開く
&driver.ClickByLinkText("Click Here")
//2 番目のタブを現在のタブとして設定
&driver.SwitchWindow("win_ser_2")
//ここで各種処理を実行できることを確認 ....
AssertStringEquals("New Window",&driver.GetTextByCSS("h3"),"problem on tab #2")
//2 番目のタブを閉じる
&driver.CloseWindow("win_ser_2")
&driver.SwitchWindow("win_ser_local")
&driver.SwitchWindow("win_ser_1")
//最初のタブを閉じる
&driver.CloseWindow("win_ser_1")
&driver.SwitchWindow("win_ser_local")
&driver.End()