とりあえずSeleniumを触ってみたので少しメモ書き。と言っても全部試したわけじゃないので不足点は多いです。
そもそもSeleniumとは?
Webサイトをテストするためのツール。あらかじめスクリプトを書いておくことで、ブラウザ上でその通りの操作を行い、途中途中で要素が存在するか、URLが期待値と合致しているかどうか などといった検査を行うことができるというものです。
とりあえず「Webサイトの試験と言ったらSelenium」みたいな話を聞いていたのでググってみたら、該当記事が古いのばっかりで凄く不安を感じていたのですが、2012年あたりに2.x系列がリリースされて今も十分使えるプロダクトのようです。
で、Seleniumを使うには
とりあえず 英語版の Seleniumのサイトからダウンロードできます。Seleniumのサイト自体には日本語版があるのですが、日本語サイトからダウンロードできるのは1.xです。まずここで割とハマった。いくら「最新版は公式サイトを見てください」とはいえ・・・。
とりあえず、それぞれのファイルは以下の場所に配置します。
- Selenium IDE→Firefoxに拡張機能としてインストールします
- Selenium ServerとInternet Explorer Driver Server→あとで参照可能なフォルダに配置します。IE Driverはパスの通ったフォルダに置いておかないとダメらしいのでC:\Seleniumあたりにフォルダを作って適当においておきます。
- Selenium Client & WebDriver Language Bindings→とりあえず自分がメインで使う言語のクライアントをインストールしておきます。自分はPythonを使いました。
なお、ここでのPythonは、Version2系統でなければダメなようです(3.xは各所に非互換の部分があるため、正常に動作しません)。自分はPythonの公式ページからダウンロードしましたが、(Selenium Clientのインストールに必要な)setuptoolsやpipが同梱されていないので、以下のサイトを参考にインストールします。
とりあえず、軽く使ってみる
簡単に使うには、ひとまずSelenium IDEを起動して操作を記録→再生するのが一番簡単です。
- Firefoxを起動し、Selenium IDEを起動する
- Selenium IDEの「アクション>テストの記録」にチェックが入っているのを確認する
- Firefoxのウィンドウに戻り、テストしたいサイトを開く
- テストしたいページまでリンクを辿って移動する
- 「アクション>テストの記録」のチェックを外して記録を停止する
あとは、テストを行いたい行を選択して、右クリックメニューの「コマンドの挿入」、コマンドに「assertTitle」などのコマンドを入れてテストを追加していきます。このとき、期待する値は「値」フィールドではなく、「対象」フィールドに入れないといけないので注意(ここでまたハマった)
そのほか注意するべき点として、クリック後、ページ遷移が完了するまで待ちたい場合は、click
コマンドでなく、clickAndWait
コマンドを使うこと、Ajaxなど画面遷移せずに画面が切り替わる処理を待ちたい場合は、waitForVisible
コマンドなどを使って要素の存在を確認すること くらいです。
テストケースを出力する
テストケースをファイルに出力する場合は、「ファイル」メニューの「テストケースを保存」または「テストケースをエクスポート」を選択します。テストケースを保存を選択した場合、テーブルタグで一行に1つずつのテストコードが書かれたHTMLファイルが出力されます。
エクスポートを選ぶと、言語を指定してテストコードをファイルに保存できます。標準ではpython, ruby, c#, javaの4つの言語から選択できますが、コードフォーマットが気に入らない場合、別の言語で出力したい場合は、「オプション>設定」より追加できます。
エクスポートしたテストケースを実行する
エクスポートしたテストケースは、通常通りそれぞれのインタプリタを使って実行できます(ただし、それぞれの言語用のSeleniumクライアントモジュールが事前にインストールされている必要があります)。
ただし、前述の通り、Pythonを使う場合は、バージョン2系列である必要があります。3系列ではスクリプトが上手く動きませんので、ご注意ください。
また、自分の環境ではRubyで出力したファイルがのっけから構文エラーになって使えませんでした。C#などはコンパイルが面倒なので試していません。
言語名の後に「Remote Control」と書かれているものでエクスポートしたテストケースは、Selenium Serverを使って任意のブラウザを起動し処理しますので、事前にSelenium Serverを起動しておく必要があります。Selenium Serverの起動方法は以下のサイトを参照。
とりあえずこのような感じ。また何か見つけたら追記するかもしれません。