2012/09/13

[Selenium] WebDriverを使ってtarget=_blankで開いた別ウインドウにフォーカスする

最近、Seleniumを使ってる。
まだ使い始めでよくわかってないので色々メモ。

WebDriverを使ってテスト中、リンクをクリックして開いたページで処理を続けるってのはよくあることだと思うけど、そのリンクがtarget="_blank"で別ウインドウで開くとちょっと面倒
//後で比較するために、現在のウインドウIDを取得
String current_window_id = driver.getWindowHandle();

//別ウインドウで開くリンクをクリック
link_element.click();

//開いたウインドウも含め全部のウインドウIDを取得する
java.util.Set window_ids = driver.getWindowHandles();

String new_window_id = null;

for(String id :window_ids){
 if(!id.equals(current_window_id)){
  //現在のウインドウIDと違っていたら格納
  //最後に格納されたIDが一番新しく開かれたウインドウと判定
  new_window_id = id;
 }
}

//最後に格納したウインドウIDにスイッチ
driver.switchTo().window(new_window_id);
//以上
参考:Selenium2.xのちょっとした小技

0 件のコメント:

コメントを投稿