客先で個人的にSeleniumでのテストの自動化を実行したくて試行錯誤しているときに学んだことをココにメモします。忘れないうちにあわて気味で書いたので、あとから加筆とかするかもしんないけど。
Seleniumは実行するアプリケーションが別サーバだと実行できない。
私が今まで携わった開発でSeleniumを使うときは、開発PCにサーバを立てて、その中でWebアプリ動かして、そのPCでSeleniumコード流して・・・という具合でひとつの開発環境PCで済んでいたのですが、今回は開発は自PC、Webアプリの実行は別サーバでという具合で、しかもWebアプリの実行サーバには勝手にファイルを入れることができないとう状況。
そんな中、自PCでSeleniumを起動して、別サーバのWebアプリにアクセスするようなコードが実行できなくて「何でかなぁ・・・」って悩んでいたんですが、Seleniumは実行するWebアプリと同じサーバにある必要があるので今回のような環境では実行できないんですね・・・ぐすん・・・
今回はこんな感じでSeleniumが実行できない
できれば、実行サーバ上にSeleniumコードを配置して実行したいのですが、そういったこともプロジェクトの制約上できない状況なので、どうすればできるかなと思っていたのですが、Selenium RCをプロキシサーバとして使えば、問題なくSeleniumを実行できるとのこと。今までRCはなんだか難しそうな存在だったので避けていたのですが、簡単な使い方を覚えたので、ここにメモしておきます。多分、色々なサイトで紹介されていると思いますが・・・
SeleniumとSelenium RCの違い
Seleniumは「実行するWebアプリと同じサーバにある必要がある」とう制約がありますが、Selenium RCを使うとこんな感じで書いたSeleiumコードをSelenium RCが参照して実行してくれます。
インストール
Seleniumのサイトのダウンロード画面(http://seleniumhq.org/download/)からSelenium RCをダウンロードして適当な場所に解凍すると次のようなフォルダ構成になっていますので、そのうち、selenium-server.jarを使います。(下記の図はSelenium RC 1.0.1の場合)
テストケース
普通にSeleniumの左側のテスト一覧と、そのテスト内容を作っていきます。以下ではSelenium Coreをダウンロードすると付いてくる、サンプルテスト(ErrorCheckingTestSuite.html)をRCを使って実行してみます。
実行
コマンドで解凍した場所に移って次のように打ちます。これはWindowsの場合です。途中、バッチファイル内での改行を意識して"^"を使っています。(Windowsの場合は"^"を打ってエンターキーを打つと、次の行にまたがって打っていくことができます。但し、字下げするときはTabキーは使用しないで半角スペースを使用してください。)
java -jar ^ selenium-server.jar ^ -port 80 ^ -htmlSuite "*iexplore" "http://localhost" ^ "C:\tests\ErrorCheckingTestSuite.html" ^ "C:\結果.html"
そうすると、ブラウザが勝手に起動して、おなじみのSeleniumの画面を表示後、テストスイートを表示して、勝手に実行してくれます。結果は、コマンドライン最後で指定したファイルに書き込まれます。結構便利ですね。
複数ブラウザで行う回帰テストも、コマンドラインの起動ブラウザを変えてやればいいです。なお、サポートするブラウザは、次の文字列だけ指定できます。どれがどれだかわかんないけど、*firefox、*iexplore、*googlechrome、*operaぐらいしか自分は使わないなぁ。
*firefox *mock *firefoxproxy *pifirefox *chrome *iexploreproxy *iexplore *firefox3 *safariproxy *googlechrome *konqueror *firefox2 *safari *piiexplore *firefoxchrome *opera *iehta *custom
参考URL
Selenium RC(selenium-server.jar)を起動させる際のパラメータ情報が日本語であまり見当たらなかったので翻訳して表形式の一覧でおとどけします。 Selenium RCのバージョンは0.9.2のものを利用しています。
http://colo-ri.jp/develop/2008/02/selenium_rc_seleniumserverjar.html