ローカルイントラネット内でのSeleniumとIE11とwindow.openの相性の悪さ

2016/07/27

前提:Internet Explorer11, Windows7, Selenium WebDriver2.53.0
注意:ローカルイントラネットの話なので、会社の環境によって以下の内容が常に真になるか不明。

ローカルイントラネットでInternet Explorer11を使うという日本の業務システムにありがちな構成でSelenium WebDriverを動かしたとき、window.openで開いた子画面がSeleniumで取得できないという問題にあたった。
window.openで開く箇所は以下のようになっている。

Selenium WebDriverで子画面を取得する箇所は以下のようになっている。

同Webシステムをインターネット経由で利用したときには driver.getWindowHandles() で親画面と子画面の二つのwindowHanleが必ず取得できたが、イントラネット経由で利用したときには親画面のwindowHandleしか取得できなかった。

インターネットとイントラネットでのIE11の設定の違いが原因だろうと当たりをつけて、「インターネットオプション」の「セキュリティ」タブでインターネットとイントラネットの違いを確認した。
「このゾーンのセキュリティのレベル」欄の「保護モードを有効にする」項目でインターネットの場合はチェックがついているが、イントラネットの場合はチェックがついていなかったため、イントラネットでもチェックをつけてからSeleniumを実行した。
結果はイントラネットでもうまく動くようになり成功だったが、「保護モードを有効にする」の意味を深く理解できていないので根本原因は分からなかった。

-Java, Windows
-