Selenium Builder と IE11 で UI テスト
Selenium による UI テスト
http://www.seleniumhq.org/Selenium はポピュラーな UI テストツールですが、Firefox のアドオンである「Selenium Builder」を使えば、テストケースをプログラムしなくてもテストケースを作成することができます。
Selenium Builder のインストール
Firefox アドオンの「Selenium Builder」をダウンロード。
https://addons.mozilla.org/ja/firefox/addon/selenium-builder/
[ツール] - [ウェブ開発] - [Launch Selenium Builder](Ctrl + Alt + B)で Selenium Builder を起動。ちなみに言語を Japanese にすれば日本語にも対応しています(変更後は再起動)。
テストはブラウザから画面を操作することで自動的に保存されます。
Selenium Builder で UI テストを実施するための準備
現在のバージョンでは Selenium Builder をローカル実行するためには色々と設定等が必要になります。大まかに分けると以下の二つの手順が必要になります。- 事前準備
- Selenium Grid サーバーの起動(ハブサーバー起動,ノードサーバー起動)
事前準備
- Selenium Standalone Server
ローカルで実行させるためにはサーバーが必要になります。これは jar ファイルなので解凍などせずにそのまま任意のフォルダに配置します。
- Driver
テスト対象ブラウザのドライバが必要です。特に注意が必要なのは IE で、64bit 版を使用するとテキストボックス等の入力が激しく遅いという不具合があります。
ダウンロードしたドライバ(IEDriverServer.exe 等)は、Selenium Standalone Server と同じフォルダに配置します。
- ノードサーバーの設定ファイル
ハブサーバーに紐付けるノードサーバーの設定ファイルを node.json 等の名前にして保存します。これもドライバ等と同じフォルダに配置してください。
サンプルファイルhttps://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json
IE の設定
IE で動作させる場合は、以下の設定も行います。[インターネットオプション] - [セキュリティ] の「保護モードを有効にする」のチェックを統一する(インターネット、ローカルイントラネット等ですべて設定を合わせる)。
上記設定は、レジストリエディタの設定変更でも対応可。
[64bit OS の場合]
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BFCACHE の iexplore.exe(DWORD)の値を「0」にする。キーがない場合は追加する。
Selenium Grid サーバーの起動
上記設定後、コマンドプロンプトを起動。selenium-server-standalone-{バージョン}.jar と IEDriverServer.exe を配置したフォルダに移動して、以下のコマンドを発行します。
java -jar selenium-server-standalone-{バージョン}.jar -role hub
成功した場合、Grid サーバー(ハブサーバー)が立ち上がります。今回は localhost でテストしています。
http://localhost:4444/grid/console
ノードサーバーの起動
ハブサーバーに紐付いているのがノードサーバーであり、複数のブラウザ毎にノードとして実行させることができます。別のコマンドプロンプトから以下のようなコマンドを発行します。
私の環境では -Dwebdriver を前に書かないとエラーが出ました。
java -Dwebdriver.ie.driver=IEDriverServer.exe -jar selenium-server-standalone-{バージョン}.jar -role node -nodeConfig node.json
ハブサーバーを開くと、ノードが登録されているのが確認できます。
ここまで設定して、ようやくテストを実行することができます。
けっこう面倒くさいので、C# が書けるなら、Test プロジェクトを作って WebDriver を使ったテストコードを書いちゃったほうが早いです。