第5回 Seleniumでのテストの記述方法 (その1)
Seleniumのテスト記述方法
前回のおさらいとしてSelenium CoreでのHTMLテーブルの構造をもう一度思い出してみましょう。

- テストはHTML Tableで記述する
- Tableは3つの列で構成される
- 1行目はテストのタイトル(3列連結した状態で記述)
- 2行目以降が実際のテスト
- 1列目は実行するコマンド(command)
- 2列目はコマンドのターゲット(target)
- 3列目は値(value)
図1 HTMLテーブルの構造
| テスト名 | ||
| command1 | target1 | value1 |
| command2 | target2 | value2 |
| command3 | target3 | value3 |
| : | : | : |
| commandN | targetN | valueN |
Seleniumのテストが上記のような構造をしていることが理解できれば、後はどのようなコマンドがあるのかを覚えればいいだけです。
ではコマンドを覚えましょうといきたいところですが、その前にターゲットの記述方法を解説したいと思います。
ターゲットの記述方法
SeleniumではWebアプリケーションを実際に操作しているかのようにテストを行うことができるわけですが、それを記述するときに「何に対して操作するか?」ということを記述する必要があります。それがターゲットになります。
Webアプリケーションに対するテストで「何に対して?」ということをどのように記載するかというと、HTMLの中でこのラジオボタンとか、このリンクとか、このテキストエリアとかそういう指定をすることになります。
その指定方法は次の3つがあります。
- (1) Element Locator
- (2) Element Filter
- (3) 文字列マッチングパターン
この中で感覚的にわかりやすいのが"(1) Element Locator"で次のようなパターンがあります。
- (1) id
- (2) name
- (3) dom
- (4) xpath
- (5) link
なんか覚えることがたくさんあるなぁと思ったかもしれませんが、1つ基本ルールを守ることができればそんなに大変ではなくなります。
どうすれば簡単になるかというとHTMLの各要素にきちんとidを付与すればidでターゲットを指定することができるので、(1)の方法だけを覚えればよくなります。もちろんそれではダメな場合もあると思いますので、その場合はlinkやxpathやdomによる指定が必要になりますが、それらの方法については必要になったときに覚えていくということでいいのではないかと思います。
具体的にターゲットってどういうものになるの?というのは各コマンドと併せて覚えるのがいいと思いますので、コマンドの説明に移りましょう。
Seleniumのコマンド
コマンドには大きく分けると次の2つがあります。
- Actionコマンド
- Accessorsコマンド(Assertionコマンド含む)
(1) Actionコマンド
Actionコマンドはブラウザに対する操作をエミュレートするためのコマンドになります。今回はopenとclickの2つを紹介します。
- openコマンド
テストを開始する場合、テストをしたいWebアプリケーションにアクセスするところから始まることが多いと思いますので、まずはopenコマンドを覚えてみましょう。
openコマンドはSeleniumのWebアプリケーション動作領域のフレームにターゲットに指定したURLのページを開き、指定したURLのページが完全にロードされるまで待ちます。
テストがしたいWebアプリケーションが"/index.php"で動作する場合にはopenコマンドのターゲットにはこのURLを指定することになります。
図2 openコマンドの記述例
| open | /index.php |
- clickコマンド
テストを進めていくときには、Webアプリケーションで表示されているページの各HTML部品にアクセスすることによって動作確認を進めることになると思うので、次にclickコマンドを覚えましょう。
clickコマンドを使えば、リンク、ボタン、チェックボタン、ラジオボタン等、HTMLとしてクリックできる部品のクリックをエミュレートできます。ターゲットにはクリックしたいHTML部品を指定します。
例えば次のようなHTMLがあったとします。
図3 テスト対象のHTMLファイル
<form method="post" action="http://xxx.jp/foo"> <input type="radio" id="yes" value="Yes"> <input type="radio" id="no" value="No"> <input type="submit" id="answer" name="answer" value="answer"> <a href="http://xxx.jp/bar">最初からやりなおし</a> </form>
上記のHTMLに対してclickアクションを実行するには次のような形になります。
- radioボタンのyesを選択したい場合のターゲットは"yes"(id="yes"というのを指定してるので)
- radioボタンのnoを選択したい場合のターゲットは"no"(id="no"というのを指定しているので)
- submitボタンをクリックしたい場合のターゲットは"answer"(id="answer"というのを指定しているので)
- "最初からやりなおし"のリンクをクリックしたい場合のターゲットは"link=最初からやりなおし"
※ただし、submitボタンやリンクの場合はクリックした後のページが表示されるまで待つ必要があるので、clickコマンドではなくclickAndWaitを使うか、clickコマンドの後にwaitForPageToLoadコマンドを使用してください(バージョン0.7.0以降のバージョンではwaitForPageToLoadコマンドが追加されたのでそちらを使うこともできます)
図4 openコマンドの記述例
| click | yes | |
| click | no | |
| click | answer | |
| click | link=最初からやりなおし |
そのほかにも便利なActionコマンドがありますので、以下のページでご確認ください。
Selenium リファレンスガイド(日本語版)
http://wiki.openqa.org/display/SEL/Selenium+0.7+Reference+(Japanese)







