生成された別ウインドウを追いかける方法

まぁ良くある話なのだけど、Seleniumでテストしているときに、生成された別ウインドウのテストに失敗するというアレに遭遇したのでメモ。

普通に

<a href="" target="_blank">click here!</a>

を使うと, JavaScriptのWindowIDが取れなくて、Seleniumが新ウィンドウを見つけられない。なので, window.open()を使ってWindowIDを指定してあげる必要がある。

    <a href="child.html" target="child">child:link</a>
    <a href="" 
      onclick="window.open('child.html', 'childWindow'); return false;">
      child:onclick
    </a>

この場合、一つ目のリンクではSeleniumで追いかけられないが、二つ目のリンクだと成功するのであった。


追記:
Railsだとlink_toの:popupにWindowIDを渡せるのであった. あぶなくヘルパー自作するとこだった。

link_to('Select hoge' , hoges_path, :popup => ["selectHoge"])