SeleniumとSame Origin Policy

Seleniumでは、TestRunner.htmlと同じドメイン・ポート・スキームでないと、ブラウザに実装されているSame Origin Policyによって、Javascriptエラーになります。これはただ単に同じドメインのサイトでHTTPとHTTPSを行き来するテストケースを作りたいのに、これが上記理由から不可ということになります。

このSame Origin Policyを回避する方法が、http://lists.public.thoughtworks.org/pipermail/selenium-users/2005-February/000115.htmlに列挙されています。

  1. ブラウザのSame Origin PolicyをOffにする。(mozilla限定)
  2. htaXULとしてTestRunner.htmlを実行する。
  3. リバースプロキシを使って、レスポンス中のドメイン、ポート、スキームを書き換える。
  4. プロキシのリダイレクタ機能を使って、TestRunnerと異なるドメイン

1,2はSeleniumの長所であるクロスブラウザ性を損なってしまいます。3,4も一長一短あります。

3はレスポンスを書き換えてしまうため、動くことは動くのですが、「個人情報表示画面でhttpsモードになっていること」みたいなテストケースが実施できません。

4はTestRunnerを設置しているドメインと異なるサイトのアプリケーションは可能になりますが、度々例に挙げているような、http→httpsの切替えはできません。

以上、現段階では1つのテストケースの中で、ドメイン、ポート、スキームを切替えるテストは、なるべく作らないようにした方がよさそうです。