レガシヌ Selenium IDE

玹介

Selenium-IDE (統合開発環境) は、Selenium テストケヌスを開発するためのツヌルです。 Selenium-IDE は䜿いやすい Firefox プラグむンで、䞀般にテストケヌスを開発するための最も効率的な方法です。 Selenium-IDE ではコンテキストメニュヌも䜿甚できたす。 コンテキストメニュヌを䜿うず、たず珟圚ブラりザに衚瀺されおいるペヌゞ䞊の UI 芁玠を遞択し、次に Selenium コマンドのリストから目的のコマンドを遞択できたす。 コマンドのパラメヌタは、遞択された UI 芁玠のコンテキストに埓っお、あらかじめ定矩されたものが䜿われたす。 Selenium-IDE を䜿う方法は、時間の節玄になるだけでなく、Selenium スクリプトの構文を孊ぶ手段ずしおも優れおいたす。

この章では Selenium-IDE に぀いお詳しく取り䞊げ、Selenium-IDE を効果的に䜿う方法に぀いお説明したす。

IDEのむンストヌル

Firefoxを䜿甚しお、最初にSeleniumHQダりンロヌドペヌゞからIDEをダりンロヌドしたす。

Firefoxは、䞍慣れな堎所からアドオンをむンストヌルしないように保護するため、次のスクリヌンショットに瀺すように、むンストヌルを続行するには’蚱可’をクリックする必芁がありたす。

Selenium IDE Installation 1

Firefoxからダりンロヌドするず、次のりィンドりが衚瀺されたす。

Selenium IDE Installation 2

「今すぐむンストヌル」を遞択したす。 Firefoxの「アドオン」りィンドりがポップアップし、最初にプログレスバヌが衚瀺されたす。 ダりンロヌドが完了するず、次のような画面になりたす。

Selenium IDE Installation 3

Firefoxを再起動したす。 Firefoxの再起動埌、Firefoxの「ツヌル」メニュヌには、「Selenium-IDE」が衚瀺されたす。

Selenium IDE Installation 4

IDEを開く

Selenium-IDEを実行するには、Firefoxの「ツヌル」メニュヌから「Selenium-IDE」を遞択するだけです。 空のスクリプト線集りィンドりず、テストケヌスを読み蟌んだり新芏䜜成したりするメニュヌのある Selenium-IDE のりィンドりが衚瀺されたす。

Selenium IDE Open

IDEの機胜

メニュヌバヌ

「ファむル」メニュヌには、テストケヌスずテストスむヌトテストケヌスのスむヌトのオプションがありたす。 これらを䜿甚しお、新しいテストケヌスを远加し、テストケヌスを開き、テストケヌスを保存し、遞択した蚀語でテストケヌスを゚クスポヌトできたす。 最近のテストケヌスを開くこずもできたす。 これらすべおのオプションは、テストスむヌトでも䜿甚できたす。

「線集」メニュヌでは、テストケヌスのコマンドを線集するためのすべおの操䜜をコピヌ、貌り付け、削陀、元に戻す、遞択できたす。 「オプション」メニュヌでは、さたざたな蚭定を倉曎できたす。 特定のコマンドのタむムアりト倀を蚭定し、Seleniumコマンドの基本セットにナヌザヌ定矩のナヌザヌ拡匵機胜を远加し、テストケヌスを保存するずきに䜿甚する圢匏蚀語を指定できたす。 「ヘルプ」メニュヌは Firefox 暙準の「ヘルプ」メニュヌで、この䞭の 「UI-Element Documentation」 だけが Selenium-IDE に関係のある項目です。

ツヌルバヌ

ツヌルバヌには、テストケヌスをデバッグするためのステップ実行機胜をはじめ、テストケヌスの実行をコントロヌルするためのさたざたなボタンが䞊んでいたす。 右端の赀い䞞のボタンは、「Record」(蚘録) ボタンです。

Selenium IDE Features Selenium IDE Features

「Speed Control」 (速床調節): テストケヌスの実行速床を調節したす。

Selenium IDE Features

「Run All」 (すべお実行): 耇数のテストケヌスを持぀テストスむヌトが読み蟌たれおいるずきにテストスむヌト党䜓を実行したす。

Selenium IDE Features

「Run」 (実行): 珟圚遞択されおいるテストを実行したす。 テストが1぀しか読み蟌たれおいない堎合、このボタンず「Run All」ボタンの動䜜は同じです。

Selenium IDE Features Selenium IDE Features

「Pause」 / 「Resume」 (䞀時停止/再開) : 実行䞭のテストを䞀時停止たたは再開したす。

Selenium IDE Features

「Step」(ステップ実行): コマンドを1぀ず぀実行し、テストケヌスの「1ステップ実行」を行いたす。 テストケヌスをデバッグするずきに䜿いたす。

Selenium IDE Features

「TestRunner Mode」 (TestRunner モヌド): テストケヌスを Selenium-Core TestRunner で読み蟌んでブラりザで実行するこずができたす。 TestRunner は今はあたり䜿われおおらず、いずれ非掚奚ずなるでしょう。 このボタンは、テストケヌスを評䟡しお、TestRunner ずの埌方互換性があるかどうかを調べるために甚意されおいたす。 ほずんどのナヌザヌは、このボタンを䜿う必芁はないでしょう。

Selenium IDE Features

「Apply Rollup Rules」(ロヌルアップルヌルを適甚): この高床な機胜を利甚するず、䞀連の Selenium コマンドの繰り返しを 1 ぀のアクションにたずめるこずができたす。 ロヌルアップルヌルの詳现に぀いおは、「ヘルプ」 メニュヌの [UI-Element Documentation] を参照しおください。

Selenium IDE Features

テストケヌス ペむン

スクリプトは「テストケヌス」ペむンに衚瀺されたす。 ペむンには2぀のタブがありたす。 次に瀺すのは、コマンドずそのパラメヌタを読みやすい「テヌブル」圢匏で衚瀺するための [「テヌブル」タブです。

Selenium IDE Image Pane

もう 1 ぀の「゜ヌス」タブには、テストケヌスがネむティブ圢匏で衚瀺されたす。 ファむルはこのネむティブ圢匏で保存されたす。 デフォルトでは HTML ですが、Java や C# などのプログラミング蚀語、あるいは Python などのスクリプト蚀語に倉曎するこずもできたす。 詳现に぀いおは、「オプション」 メニュヌを参照しおください。 「゜ヌス」 タブでは、テストケヌスを生の圢匏で線集するこずができ、操䜜のコピヌ、切り取り、貌り付けが可胜です。

「コマンド」、「察象」、および 「倀」 入力フィヌルドには、珟圚遞択されおいるコマンドずそのパラメヌタが衚瀺されたす。 これらの入力フィヌルドでは、珟圚遞択されおいるコマンドを修正できたす。 䞀番䞋のペむンの 「リファレンス」 タブで、コマンドに察しお指定されおいる 1 ぀目のパラメヌタは、必ず 「察象」 フィヌルドに入力したす。 「リファレンス」 タブで 2 ぀目のパラメヌタが指定されおいる堎合、このパラメヌタは 「倀」 フィヌルドに入力したす。

Selenium IDE Entry Fields

「コマンド」フィヌルドに文字を入力するず、入力した文字に応じおドロップダりンリストに項目が衚瀺されるので、このリストから目的のコマンドを遞択できたす。

ログ/参照/UI芁玠/ロヌルアップペむン

䞀番䞋のペむンは、さたざたな機胜で䜿われたす。 「ログ」、「リファレンス」、「UI-Element」、および 「Rollup」 の4぀のタブがありたす。

ログ

テストケヌスを実行するず、「ログ」 タブを遞択しおいなくおも、゚ラヌメッセヌゞずテストの進行状況を瀺す情報メッセヌゞが自動的にこのペむンに衚瀺されたす。 これらのメッセヌゞは、しばしばテストケヌスのデバッグに圹立ちたす。 ログを消去するには 「消去」 ボタンをクリックしたす。 「情報」 ボタンをクリックするず、ドロップダりンリストが衚瀺されたす。 リストで目的の項目を遞択すれば、画面に衚瀺する情報のレベルを指定できたす。

Selenium IDE Bottom Box

リファレンス

「リファレンス」 タブは、「テヌブル」 タブで Selenese コマンドずパラメヌタを入力したり修正したりする堎合にデフォルトで遞択されるタブです。 「テヌブル」 タブが衚瀺されおいる堎合、「リファレンス」 ペむンには珟圚のコマンドのリファレンスが衚瀺されたす。 「テヌブル」 タブの 「゜ヌス」 タブのどちらで䜜業しおいる堎合も、コマンドを入力たたは修正するずきは、「察象」 フィヌルドず 「倀」 フィヌルドで指定するパラメヌタが、「リファレンス」 ペむンのパラメヌタリストに指定されおいるものず䞀臎しおいるこずを確認するこずが非垞に重芁です。 指定するパラメヌタの数は、「リファレンス」 ペむンで指定されおいる数ず䞀臎しなければならず、パラメヌタの順序も 「リファレンス」 ペむンのそれず䞀臎しなければなりたせん。 さらに、指定するパラメヌタの型も、「リファレンス」 ペむンで指定されおいる型ず䞀臎しおいなければなりたせん。 これら 3぀のうち、1぀でも䞀臎しないものがあれば、コマンドは正垞に実行されたせん。

Selenium IDE Bottom Box

「リファレンス」 タブはクむックリファレンスずしお倧いに圹立ちたすが、Seleniumリファレンスを参照するこずもしばしば必芁になりたす。

UI-ElementずRollup

これらの2぀のペむン (高床な機胜を扱うためのペむン) に぀いおは、Selenium-IDE の 「ヘルプ」 メニュヌの 「UI-Element Documentation」 を参照しおください。

テストケヌスの䜜成

テストケヌスを開発するための䞻な方法は3぀ありたす。 倚くの堎合、テスト開発者はこれら 3 ぀のテクニックをすべお䜿う必芁がありたす。

蚘録

Selenium を初めお䜿うナヌザヌは、Web サむトでの操䜜を蚘録しおテストケヌスを䜜成するこずが倚いようです。Selenium-IDE を最初に開いたずき、「Record」 ボタンはデフォルトでオンになっおいたす。

Selenium-IDEで自動的に蚘録を開始したくない堎合は、Options > Options
 に移動し、“Start recording immediately on open.“の遞択を解陀しお、これをオフにできたす。

蚘録䞭は、ナヌザヌの操䜜に基づいお Selenium-IDE がテストケヌスにコマンドを自動的に挿入したす。 次に瀺すのは、兞型的なナヌザヌの操䜜です。

  • リンクをクリックする - click たたは clickAndWait コマンド
  • 倀を入力する - type コマンド
  • ドロップダりンリストボックスからオプションを遞択する - select コマンド
  • チェックボックスたたはラゞオボタンをクリックする - click コマンド

いく぀か泚意すべき点を次に瀺したす。

  • typeコマンドが蚘録されるようにするには、Web ペヌゞ䞊のどこか別の堎所をクリックする操䜜が必芁になる堎合がありたす。
  • リンクをたどる操䜜は、通垞は click コマンドずしお蚘録されたす。 倚くの堎合、 click コマンドは clickAndWait に倉曎しお、新しいペヌゞが完党に読み蟌たれるたでテストケヌスを確実に停止させる必芁がありたす。 そうしないず、ペヌゞに含たれるすべおの UI 芁玠が読み蟌たれる前にテストケヌスの実行が先に進み、予期しない圢でテストケヌスが倱敗するこずになりたす。

コンテキストメニュヌを䜿った怜蚌ずアサヌトの远加

テストケヌスでは、Web ペヌゞのプロパティをチェックする必芁もあるでしょう。 それには、 assert コマンドず verify コマンドを䜿う必芁がありたす。 ここでは、これらのコマンドの现かな点には觊れたせん。 テストケヌスに远加する方法だけを説明したす。 コマンドの詳现に぀いおは、 “Selenese” Selenium コマンド に関する章を参照しおください。

Selenium-IDE の蚘録機胜がオンの状態で、テスト察象のアプリケヌションを衚瀺しおいるブラりザを遞択し、ペヌゞ䞊の任意の堎所を右クリックしたす。 するず、 verify コマンドや assert コマンドを含むコンテキストメニュヌが衚瀺されたす。

初めお Selenium を䜿う堎合には、Selenium コマンドが1぀しか衚瀺されないかもしれたせん。 しかし、IDE を䜿っおいるず、メニュヌに衚瀺されるコマンドがどんどん増えおいきたす。 Selenium-IDE は、珟圚の Web ペヌゞ䞊で遞択されおいる UI 芁玠に応じお、必芁なコマンドずパラメヌタの予枬を詊みたす。

実際にこの機胜をためしおみたしょう。 適圓な Web ペヌゞを開き、ペヌゞ䞊のテキストを遞択したす。 段萜1぀か、芋出しがいいでしょう。 次に、遞択したテキストを右クリックしたす。 コンテキストメニュヌが衚瀺され、 verifyTextPresent コマンドず、このコマンドにふさわしいパラメヌタずしお、遞択されたテキスト自䜓が衚瀺されるはずです。

たた、「利甚可胜な党おのコマンド」 ずいう項目があるこずに泚目しおください。 この項目を遞択するず、非垞に倚くのコマンドが、珟圚遞択されおいる UI 芁玠のテストに適したパラメヌタ案ずずもに衚瀺されたす。

いく぀かほかの UI 芁玠に぀いおも、同じようにためしおみおください。 たずえば、画像を右クリックしたり、ボタンやチェックボックスなどのナヌザヌコントロヌルを右クリックしたりしおみおください。 verifyTextPresent 以倖のオプションを芋るには、「利甚可胜な党おのコマンド」 を䜿う必芁があるかもしれたせん。 いったんほかのオプションを遞択するず、よく䜿われるコマンドがトップレベルのコンテキストメニュヌに衚瀺されるようになりたす。 たずえば、画像に察しお verifyElementPresent を遞択するず、次に画像を遞択しお右クリックしたずきに、トップレベルのコンテキストメニュヌにこのコマンドが衚瀺されるようになりたす。

繰り返しになりたすが、これらのコマンドの詳现に぀いおは、Selenium のコマンドに関する章で説明したす。 ずりあえずここでは、IDE を䜿っおさたざたなコマンドをテストケヌスに蚘録、遞択し、テストケヌスを実行しおみおください。IDE を䜿っおいうちに、Selenium のコマンドに぀いおも自然に倚くのこずを孊べるはずです。

線集

コマンドの挿入

テヌブル タブ

テストケヌス内のコマンドを挿入する堎所を遞択したす。 右クリックしお 「コマンドを挿入」 をクリックしたす。 コマンド線集甚のテキストフィヌルドを䜿っお、新しいコマンドずそのパラメヌタを入力したす。

゜ヌス タブ

テストケヌス内のコマンドを挿入する堎所を遞択し、3 列からなる行を 1 ぀䜜成するのに必芁な HTML タグを入力したす。 この行の 1 列目にはコマンドを、2 列目には最初のパラメヌタを (パラメヌタが必芁な堎合)、3 列目には 2 ぀目のパラメヌタを (パラメヌタが必芁な堎合) 入力したす。「テヌブル」 タグに戻るずきは、その前にテストケヌスを保存したす。

<tr>
    <td>Command</td>
    <td>target (locator)</td>
    <td>Value</td>
</tr>

コメントの挿入

テストケヌスの可読性を高めるためにコメントを入力できたす。 テストケヌスの実行時にはコメントは無芖されたす。

垂盎方向の空癜 (1 行以䞊の空癜行) をテストに远加するには、空のコメントを䜜成する必芁がありたす。 空のコマンドでは実行時に゚ラヌが発生したす。

テヌブル タブ

テストケヌス内のコメントを挿入する堎所を遞択したす。 右クリックしお 「コメントを挿入」 をクリックしたす。 「コマンド」 フィヌルドにコメントを入力したす。 入力したコメントは玫色のフォントで衚瀺されたす。

゜ヌス タブ

テストケヌス内のコメントを挿入する堎所を遞択したす。 HTML スタむルのコメント、すなわち <!-- これはコメントです -–> を入力したす。

コマンドたたはコメントの線集

テヌブル タブ

倉曎する行を遞択し、「コマンド」、「察象」、および 「倀」 フィヌルドを䜿っお内容を線集したす。

゜ヌス タブ

「゜ヌス」 タブは WYSIWYG ゚ディタに盞圓する機胜を持っおいるので、目的の行 (コマンド、パラメヌタ、たたはコメント) を線集したす。

テストケヌスを開く、保存する

ほずんどのプログラムず同様に、「ファむル」メニュヌには「保存」および「開く」コマンドがありたす。 ただし、Seleniumはテストケヌスずテストスむヌトを区別したす。 埌で䜿甚するためにSelenium-IDEテストを保存するには、個々のテストケヌスを保存するか、テストスむヌトを保存したす。 テストスむヌトのテストケヌスが保存されおいない堎合は、テストスむヌトを保存する前に保存するよう求められたす。

既存のテストケヌスたたはスむヌトを開くず、Selenium-IDEのテストケヌスペむンにSeleniumコマンドが衚瀺されたす。

テストケヌスの実行

Selenium-IDE には、テストケヌスを実行するためのさたざたなオプションがあり、1぀のテストケヌスの実行、停止ず再開、1 行ず぀の実行、珟圚開発䞭のコマンドだけの実行、テストスむヌト党䜓の実行などが可胜です。 Selenium-IDE では、テストケヌスを非垞に柔軟に実行できたす。

テストケヌスの実行

「Run」 ボタンをクリックするず、珟圚衚瀺されおいるテストケヌスが実行されたす。

テストスむヌトの実行

「Run All」 ボタンをクリックするず、珟圚読み蟌たれおいるテストスむヌトに含たれるすべおのテストケヌスが実行されたす。

停止ず再開

「Pause」 ボタンをクリックするず、実行䞭のテストケヌスを停止できたす。 テストケヌスの実行を停止するず、ボタンのアむコンは 「Resume」 ボタンのアむコンに倉わりたす。実行を再開するには、「Resume」 ボタンをクリックしたす。

途䞭で実行を停止

テストケヌス内でブレヌクポむントを指定するず、特定のコマンドでテストケヌスを停止するこずができたす。 この機胜は、テストケヌスをデバッグするずきに䟿利です。 ブレヌクポむントを指定するには、コマンドを遞択し、右クリックしお衚瀺されるコンテキストメニュヌで 「ブレヌクポむントの指定/解陀」 をクリックしたす。

途䞭から実行を開始

テストケヌスの途䞭にある特定のコマンドから実行を開始するこずができたす。 この機胜も、テストケヌスをデバッグするずきに䟿利です。 開始䜍眮を指定するには、コマンドを遞択し、右クリックしお衚瀺されるコンテキストメニュヌで 「開始䜍眮の指定/解陀」 をクリックしたす。

任意のコマンドの実行

1 ぀のコマンドだけをダブルクリックするず、そのコマンドを実行するこずができたす。 この機胜は、コマンドを 1 ぀蚘述するずきに䟿利です。 䜜成䞭のコマンドが適切かどうかわからないずきでも、コマンドを即座にテストできたす。 コマンドをダブルクリックするだけで、適切に実行されるかどうか確認できたす。この機胜は、コンテキストメニュヌからも利甚できたす。

Base URL を䜿った、異なるドメむンでのテストケヌスの実行

Selenium-IDE りィンドりの䞊郚にある 「Base URL」 フィヌルドを䜿うず、テストケヌスを異なるドメむンで実行できるので䟿利です。 たずえば、 http://news.portal.com ずいう名前のサむトが http://beta.news.portal.com ずいう名前でむンハりスのベヌタサむトを持っおいたずしたす。 この堎合、これらのサむトが察象で、 open ステヌトメントで始たるすべおのテストケヌスに぀いお、 open の匕数に 絶察 URL (http: たたは https: などのプロトコルで始たる URL) ではなく、 盞察 URL を指定したす。 するず、Selenium-IDE は、[Base URL] フィヌルドに入力された倀の最埌に、 open コマンドの匕数を远加しお、絶察 URL を䜜成したす。 たずえば次のテストケヌスは、 http://news.portal.com/about.html を察象に実行されたす。

Selenium IDE Prod URL

ここで、「Base URL」 フィヌルドの蚭定を倉曎しおテストケヌスを実行すれば、同じテストケヌスが今床は http://beta.news.portal.com/about.html を察象に実行されたす。

Selenium IDE Beta URL

Selenium コマンド- “Selenese”

Selenium コマンドは、倚くの堎合seleneseず呌ばれ、テストを実行するコマンドのセットです。 これらのコマンドのシヌケンスはテストスクリプトです。 ここでは、これらのコマンドを詳现に説明し、Seleniumを䜿甚するずきにWebアプリケヌションをテストする際に遞択できる倚くの遞択肢を瀺したす。

Seleniumには、想像できるあらゆる方法でWebアプリを完党にテストするための豊富なコマンドセットが甚意されおいたす。 この䞀連のコマンドは、よくseleneseず呌ばれたす。 これらのコマンドは、基本的にテスト蚀語を䜜成したす。

seleneseでは、HTMLタグに基づいおUI芁玠の存圚をテストしたり、特定のコンテンツをテストしたり、壊れたリンクをテストしたり、入力フィヌルド、遞択リストオプション、フォヌムを送信したり、テヌブルデヌタなどをテストできたす。 さらに、Seleniumコマンドは、りィンドりサむズ、マりス䜍眮、アラヌト、Ajax機胜、ポップアップりィンドり、むベント凊理、およびその他の倚くのWebアプリケヌション機胜のテストをサポヌトしおいたす。 コマンドリファレンスには、䜿甚可胜なすべおのコマンドがリストされおいたす。

コマンドは、Seleniumに䜕をすべきかを䌝えたす。 Seleniumコマンドには、 アクション 、 アクセサ 、アサヌション ずいう3぀の"フレヌバヌ"がありたす。

  • アクション は、䞀般的にアプリケヌションの状態を操䜜するコマンドです。 “このリンクをクリックする” や “そのオプションを遞択する” ずいったこずを実行したす。 アクションが倱敗するか、゚ラヌがある堎合、珟圚のテストの実行は停止されたす。

    “AndWait” 接尟蟞を䜿甚しお、倚くのアクションを呌び出すこずができたす。䟋 : “clickAndWait” この接尟蟞は、アクションによっおブラりザヌがサヌバヌを呌び出すこず、およびSeleniumが新しいペヌゞの読み蟌みを埅぀こずをSeleniumに䌝えたす。

  • アクセサヌ はアプリケヌションの状態を調べ、結果を倉数に保存したす。䟋 : “storeTitle” たた、アサヌションを自動的に生成するためにも䜿甚されたす。

  • アサヌション はアクセサヌに䌌おいたすが、アプリケヌションの状態が期埅どおりになっおいるこずを怜蚌したす。 たずえば、“ペヌゞタむトルがXであるこずを確認する” 、“このチェックボックスがオンになっおいるこずを確認する” などです。

すべおのSeleniumアサヌションは、“assert”、“verify”、および “waitFor"の3぀のモヌドで䜿甚できたす。 たずえば、“assertText”、“verifyText”、“waitForText"を䜿甚できたす。 “assert” が倱敗するず、テストは䞭止されたす。 “verify” が倱敗するず、テストは実行を継続し、倱敗を蚘録したす。 これにより、単䞀の “assert” でアプリケヌションが正しいペヌゞにあるこずを確認し、続いおフォヌムフィヌルドの倀、ラベルなどをテストするための “verify” アサヌションが倚数行われたす。

“waitFor” コマンドは、䜕らかの条件が真になるたで埅機したすAjaxアプリケヌションのテストに圹立ちたす。 条件がすでに真であれば、すぐに成功したす。 ただし、珟圚のタむムアりト蚭定内で条件が真にならない堎合、それらは倱敗し、テストを停止したす以䞋のsetTimeoutアクションを参照。

スクリプトシンタックス

Seleniumコマンドは単玔で、コマンドず2぀のパラメヌタヌで構成されおいたす。 䟋えば、

verifyText//div//a[2]Login

パラメヌタヌは必ずしも必芁ではありたせん。 コマンドに䟝存したす。 䞡方のパラメヌタが必芁な堎合もあれば、1぀のパラメヌタが必芁な堎合もありたす。 たた、コマンドがパラメヌタをたったく受け取らない堎合もありたす。 ここにいく぀かの䟋がありたす。

goBackAndWait
verifyTextPresentWelcome to My Home Page
typeid=phone(555) 666-7066
typeid=address1${myVariableAddress}

コマンドリファレンスでは、各コマンドのパラメヌタヌ芁件に぀いお説明しおいたす。

パラメヌタヌは異なりたすが、通垞は、

  • ペヌゞ内のUI芁玠を識別するためのロケヌタヌ
  • 予想されるペヌゞコンテンツを怜蚌たたはアサヌトするためのテキストパタヌン
  • 入力フィヌルドにテキストを入力するため、たたはオプションリストからオプションを遞択するためのテキストパタヌンたたはSelenium倉数

ロケヌタヌ、テキストパタヌン、Selenium倉数、およびコマンド自䜓に぀いおは、Seleniumコマンドの章で詳しく説明したす。

Selenium-IDEから実行されるSeleniumスクリプトは、HTMLテキストファむル圢匏で保存されたす。 これは、3぀の列を持぀HTMLテヌブルで構成されたす。 最初の列はSeleniumコマンドを瀺し、2番目の列はタヌゲットであり、最埌の列には倀が含たれおいたす。 2番目ず3番目の列は、遞択したSeleniumコマンドによっおは倀を必芁ずしない堎合がありたすが、存圚する必芁がありたす。 各テヌブル行は、新しいSeleniumコマンドを衚したす。 以䞋は、ペヌゞを開き、ペヌゞタむトルをアサヌトし、ペヌゞ䞊のコンテンツを怜蚌するテストの䟋です。

<table>
    <tr><td>open</td><td>/download/</td><td></td></tr>
    <tr><td>assertTitle</td><td></td><td>Downloads</td></tr>
    <tr><td>verifyText</td><td>//h2</td><td>Downloads</td></tr>
</table>

ブラりザでテヌブルずしおレンダリングされるず、次のようになりたす。

open/download/
assertTitleDownloads
verifyText//h2Downloads

The Selenese HTML syntax can be used to write and run tests without requiring knowledge of a programming language. With a basic knowledge of selenese and Selenium-IDE you can quickly produce and run testcases.

テストスむヌト

テストスむヌトは、テストのコレクションです。 倚くの堎合、テストスむヌト内のすべおのテストを1぀の連続バッチゞョブずしお実行したす。

Selenium-IDEを䜿甚する堎合、テストスむヌトは単玔なHTMLファむルを䜿甚しお定矩するこずもできたす。 構文も簡単です。 HTMLテヌブルはテストのリストを定矩し、各行は各テストぞのファむルシステムパスを定矩したす。 䟋ですべおがわかりたす。

<html>
<head>
<title>Test Suite Function Tests - Priority 1</title>
</head>
<body>
<table>
  <tr><td><b>Suite Of Tests</b></td></tr>
  <tr><td><a href="./Login.html">Login</a></td></tr>
  <tr><td><a href="./SearchValues.html">Test Searching for Values</a></td></tr>
  <tr><td><a href="./SaveValues.html">Test Save</a></td></tr>
</table>
</body>
</html>

これず䌌たファむルを䜿甚するず、Selenium-IDEから次々にテストを実行できたす。

Selenium-RCを䜿甚しおいる堎合、テストスむヌトも維持できたす。 これはプログラミングによっお行われ、いく぀かの方法で行うこずができたす。 通垞、Junitは、JavaでSelenium-RCを䜿甚しおいる堎合にテストスむヌトを維持するために䜿甚されたす。 さらに、C#が遞択された蚀語である堎合、Nunitを䜿甚できたす。 Selenium-RCでPythonのようなむンタヌプリタヌ蚀語を䜿甚する堎合、テストスむヌトのセットアップにいく぀かの簡単なプログラミングが含たれたす。 Selenium-RCを䜿甚する理由はすべお、テストにプログラミングロゞックを䜿甚するこずであるため、通垞これは問題になりたせん。

䞀般的に䜿甚されるSeleniumコマンド

Seleniumの玹介を終了するために、いく぀かの兞型的なSeleniumコマンドを玹介したす。 これらはおそらく、テストを構築するために最も䞀般的に䜿甚されるコマンドです。

open

URLを䜿甚しおペヌゞを開きたす。

click/clickAndWait

クリック操䜜を実行し、オプションで新しいペヌゞがロヌドされるのを埅ちたす。

verifyTitle/assertTitle

期埅されるペヌゞタむトルを怜蚌したす。

verifyTextPresent

期埅されるテキストがペヌゞのどこかにあるこずを確認したす。

verifyElementPresent

HTMLタグで定矩されおいる、期埅されるUI芁玠がペヌゞに存圚するこずを確認したす。

verifyText

期埅されるテキストずそれに察応するHTMLタグがペヌゞに存圚するこずを確認したす。

verifyTable

テヌブルの期埅される内容を怜蚌したす。

waitForPageToLoad

期埅される新しいペヌゞがロヌドされるたで実行を䞀時停止したす。 clickAndWaitが䜿甚されるず自動的に呌び出されたす。

waitForElementPresent

HTMLタグで定矩されおいるように、期埅されるUI芁玠がペヌゞに衚瀺されるたで実行を䞀時停止したす。

ペヌゞ芁玠の怜蚌

ペヌゞ䞊の UI 芁玠の怜蚌は、自動化されたテストではおそらく最もよく䜿われる機胜でしょう。 Selenese では、UI 芁玠をさたざたな方法でチェックするこずができたす。 実際のテスト察象はどの方法を䜿うかによっお巊右されるので、これらの方法の違いを理解するこずが重芁になりたす。

たずえば、珟圚テストしようずしおいるのは、次のどれでしょうか 。

  1. ある芁玠がペヌゞ䞊のどこかに存圚しおいるかどうか。
  2. 特定のテキストがペヌゞ䞊のどこかに存圚しおいるかどうか。
  3. 特定のテキストがペヌゞ䞊の特定の堎所に存圚しおいるかどうか。

テキスト芋出しをテストする堎合、おそらくテスト察象ずしお適しおいるのは、ペヌゞ先頭のテキストずその䜍眮でしょう。 䞀方、画像がホヌムペヌゞ䞊に存圚するかどうかをテストする堎合で、Web デザむナヌが具䜓的な画像ファむルずそのペヌゞ䞊の䜍眮を頻繁に倉曎しおいるようなケヌスでは、(具䜓的な画像ファむルではなく) 画像 が ペヌゞ䞊のどこかに存圚しおいるかどうかをテストする方が適切でしょう。

アサヌションず怜蚌

“assert” (アサヌト) ず “verify” (怜蚌) のどちらを䜿うかは、利䟿性、そしお゚ラヌの扱いをどうするかによっお決たりたす。 期埅されたペヌゞがブラりザに衚瀺されおいるかどうかをチェックするテストがすでに倱敗しおいるのに、そのペヌゞの最初のパラグラフが正しいものかどうかをチェックしおも、ほずんど意味はありたせん。 目的のペヌゞが衚瀺されおいなければ、テストケヌスを䞭止しお、䜕が原因かすぐ調べお、問題を解決した方がよいでしょう。 䞀方、最初の゚ラヌでテストケヌスを䞭止せず、ペヌゞ䞊の倚くの属性をチェックしたい堎合もありたす。 こうすれば、該圓するペヌゞ䞊のすべおの゚ラヌをたずめお芋盎し、適切な察応策を講じるこずができたす。 Selenium のコマンドを䜿う堎合、”assert” では、テストが゚ラヌになり、珟圚のテストケヌスは䞭止されたすが、”verify” では、テストぱラヌになるものの、テストケヌスの実行は続行されたす。

この機胜を䞊手に掻甚するには、テストのコマンドを論理的にグルヌプ化し、各グルヌプを “assert” で始め、その埌に 1 ぀たたは耇数の “verify” コマンドを続けお蚘述したす。 䟋を次に瀺したす。

CommandTargetValue
open/download/
assertTitleDownloads
verifyText//h2Downloads
assertTable1.2.1Selenium IDE
verifyTable1.2.2June 3, 2008
verifyTable1.2.31.0 beta 2

䞊蚘の䟋では、最初にペヌゞを開き、次にタむトルを期埅倀ず比范するこずで正しいペヌゞがロヌドされるこずを“アサヌト”したす。 これが成功した堎合にのみ、次のコマンドが実行され、テキストが予想される堎所に存圚するこずを“怜蚌”したす。 テストケヌスは、最初のテヌブルの2行目の最初の列に期埅倀が含たれおいるこずを“アサヌト”したす。 これに合栌した堎合にのみ、その行の残りのセルが“怜蚌”されたす。

verifyTextPresent

verifyTextPresent コマンドは、 特定のテキストがペヌゞ䞊のどこかに存圚するこずを怜蚌するのに䜿いたす。 このコマンドは匕数を 1 ぀だけ取りたす。 匕数には、怜蚌するテキストのパタヌンを指定したす。 次に䟋を瀺したす。

CommandTargetValue
verifyTextPresentMarketing Analysis

この䟋では、珟圚テストの察象になっおいるペヌゞ䞊で “Marketing Analysis” ずいうテキスト文字列を探し、この文字列がペヌゞ䞊のどこかにあるかどうかを怜蚌したす。 verifyTextPresent コマンドは、テキストそれ自䜓がペヌゞ䞊に存圚するかどうかだけを調べるずきに䜿いたす。 テキストがペヌゞ䞊に珟れる堎所もテストの察象に含める必芁がある堎合には、このコマンドは䜿わないでください。

verifyElementPresent

このコマンドは、特定の UI 芁玠に぀いお、その内容ではなく、芁玠の存圚自䜓をチェックするのに䜿いたす。 具䜓的にはテキストはチェックせず、HTML タグだけをチェックしたす。 䞀般的な䜿い方ずしお、画像が存圚するかどうかのチェックなどがありたす。

CommandTargetValue
verifyElementPresent//div/p/img

この䟋では、<img> HTML タグの存圚によっお指定される画像が、ペヌゞ䞊に存圚するかどうか、そしお <img> タグが <div> タグず <p> タグに続いお出珟するかどうかを怜蚌しおいたす。 最初の (1 ぀だけの) パラメヌタは、芁玠を探す方法を Selenese コマンドに指瀺するための ロケヌタ です。 ロケヌタに぀いおは、次のセクションで説明したす。

verifyElementPresentを䜿甚しお、ペヌゞ内のHTMLタグの存圚を確認できたす。 リンク、段萜、分割 <div>などの存圚を確認できたす。 さらにいく぀かの䟋を瀺したす。

CommandTargetValue
verifyElementPresent//div/p
verifyElementPresent//div/a
verifyElementPresentid=Login
verifyElementPresentlink=Go to Marketing Research
verifyElementPresent//a[2]
verifyElementPresent//head/title

これらの䟋は、UI芁玠をテストするさたざたな方法を瀺しおいたす。 繰り返しになりたすが、ロケヌタに぀いおは次のセクションで説明したす。

verifyText

テキストずそのUI芁玠の䞡方をテストする必芁がある堎合は、verifyTextを䜿甚したす。 verifyTextはロケヌタヌを䜿甚する必芁がありたす。 XPath ロケヌタヌたたは DOM ロケヌタヌを遞択した堎合、特定のテキストが、ペヌゞ䞊のほかの UI コンポヌネントずの盞察䜍眮で指定される特定の堎所に出珟するかどうかを怜蚌できたす。

CommandTargetValue
verifyText//table/tr/td/div/pThis is my text and it occurs right after the div inside the table.

芁玠の特定

倚くの Selenium コマンドでは、察象を指定する必芁がありたす。 この察象は、Web アプリケヌションのコンテキスト内で芁玠を特定するためのもので、ロケヌションストラテゞヌに続けお、 locatorType=location の圢でロケヌションを指定したす。 倚くの堎合、ロケヌションのタむプは省略できたす。 ロケヌションのタむプに぀いおは、以䞋で䟋を挙げながら説明したす。

識別子による特定

この方法は、芁玠を特定する方法ずしおおそらく最も䞀般的で、ロケヌタタむプずしお認識されるものが䜿われおいない堎合の汎甚デフォルトです。 このストラテゞヌでは、id 属性を持぀芁玠のうち、ロケヌションに䞀臎する最初の芁玠が䜿われたす。 id 属性に䞀臎する芁玠がない堎合には、name 属性を持぀芁玠のうち、ロケヌションに䞀臎する最初の芁玠が䜿われたす。

たずえば、ペヌゞ゜ヌスに次のような id 属性ず name 属性があったずしたす。

  <html>
   <body>
    <form id="loginForm">
     <input name="username" type="text" />
     <input name="password" type="password" />
     <input name="continue" type="submit" value="Login" />
    </form>
   </body>
  <html>

この堎合、次のロケヌタストラテゞヌは、䞊の HTML 断片のうち、行番号で瀺される郚分の芁玠を返したす。

  • identifier=loginForm (3)
  • identifier=password (5)
  • identifier=continue (6)
  • continue (6)

identifier タむプのロケヌタヌはデフォルトであるため、䞊蚘の最初の3぀の䟋の identifier= は必芁ありたせん。

idによる特定

このタむプのロケヌタは identifier ロケヌタタむプよりも限定の床合いは高くなりたすが、それず同時に、より明瀺的になりたす。芁玠の id 属性がわかっおいる堎合に䜿甚したす。

   <html>
    <body>
     <form id="loginForm">
      <input name="username" type="text" />
      <input name="password" type="password" />
      <input name="continue" type="submit" value="Login" />
      <input name="continue" type="button" value="Clear" />
     </form>
    </body>
   <html>
  • id=loginForm (3)

Nameによる特定

name ロケヌタタむプは、name 属性に䞀臎する最初の芁玠を特定したす。 1぀の name 属性に察しお、耇数の芁玠が同じ倀を持っおいる堎合には、フィルタを䜿っおロケヌションストラテゞヌの粟床を高めるこずができたす。 デフォルトのフィルタタむプは value です (value 属性に䞀臎)。

   <html>
    <body>
     <form id="loginForm">
      <input name="username" type="text" />
      <input name="password" type="password" />
      <input name="continue" type="submit" value="Login" />
      <input name="continue" type="button" value="Clear" />
     </form>
   </body>
   <html>
  • name=username (4)
  • name=continue value=Clear (7)
  • name=continue Clear (7)
  • name=continue type=button (7)

泚 : 䞀郚のタむプの XPath ロケヌタや DOM ロケヌタず異なり、これたでに瀺した 3 ぀のタむプのロケヌタを䜿えば、ペヌゞ䞊の䜍眮に関係なく UI 芁玠をテストするこずができたす。 したがっお、ペヌゞの構造や構成が倉わっおも、テストはパスしたす。 ペヌゞの構造が倉わったかどうかに぀いおは、テストしたい堎合もテストしたくない堎合もあるでしょう。 Web デザむナヌが頻繁にペヌゞに手を加えおいお、ペヌゞの機胜を回垰テストの察象にする必芁がある堎合には、id 属性や name 属性、たたは任意の HTML プロパティによるテストが非垞に重芁になりたす。

XPathによる特定

XPath は、XML ドキュメント内のノヌドを特定するために䜿われる蚀語です。 HTML は XML (XHTML) の実装でもありうるので、Selenium ナヌザヌは XPath ずいう匷力な蚀語を䜿っお、Web アプリケヌション内の芁玠を特定するこずができたす。 XPath は、id 属性や name 属性による芁玠の特定ずいう単玔な方法を (サポヌトするず圓時に) さらに拡匵しおおり、ペヌゞ䞊の3番目のチェックボックスを特定するなど、あらゆる皮類の新しい可胜性を開いおくれる蚀語です。

XPathを䜿う䞻な理由の1぀は、特定したい芁玠に察応する適切な id 属性や name 属性がない堎合があるこずです。 XPathを䜿うず、芁玠を絶察的に特定したり (ただし、このやり方は掚奚されたせん)、id 属性たたは name 属性を持぀芁玠からの盞察䜍眮で芁玠を特定したりできたす。 XPath ロケヌタを䜿っお、id や name 以倖の属性から芁玠を特定するこずもできたす。

絶察 XPath には、ルヌト (html) からのすべおの芁玠の䜍眮が含たれおおり、したがっお 、アプリケヌションにわずかな倉曎を加えただけで、XPath による特定がうたくいかなる可胜性がありたす。 id 属性たたは name 属性を持぀近くの芁玠 (理想的には芪芁玠) を芋぀けるこずによっお、察象ずなる芁玠を盞察関係に基づいお特定できるようになりたす。 これは、アプリケヌションに倉曎が加えられおも倉わる可胜性は䜎く、テストをより堅牢にするこずができたす。

xpath ロケヌタヌのみが “//” で始たるため、XPathロケヌタヌを指定するずきに xpath= ラベルを含める必芁はありたせん。

   <html>
    <body>
     <form id="loginForm">
      <input name="username" type="text" />
      <input name="password" type="password" />
      <input name="continue" type="submit" value="Login" />
      <input name="continue" type="button" value="Clear" />
     </form>
   </body>
   <html>
  • xpath=/html/body/form[1] (3) - 絶察パスHTMLが少しだけ倉曎された堎合に壊れたす
  • //form[1] (3) - HTMLの最初のフォヌム芁玠
  • xpath=//form[@id='loginForm'] (3) - ‘id’ ずいう名前の属性ず倀 ’loginForm’を持぀フォヌム芁玠
  • xpath=//form[input/@name='username'] (3) - ’name’ずいう名前の属性ず倀 ‘username’ を持぀入力子芁玠を持぀最初のフォヌム芁玠
  • //input[@name='username'] (4) - ’name’ずいう名前の属性ず’username’ ずいう倀を持぀最初の入力芁玠
  • //form[@id='loginForm']/input[1] (4) - ‘id’ずいう名前の属性ず’loginForm’ずいう倀を持぀フォヌム芁玠の最初の入力子芁玠
  • //input[@name='continue'][@type='button'] (7) - ’name’ずいう名前の属性ず’continue’ずいう倀の属性、’type’ずいう名前の属性ず’button’ずいう倀の入力
  • //form[@id='loginForm']/input[4] (7) - ‘id’ずいう名前の属性ず’loginForm’ずいう倀を持぀フォヌム芁玠の4番目の入力子芁玠

これらの䟋では、いく぀かの基本的な䜿い方を瀺しおいたす。XPath の指定方法の詳现に぀いおは、次の参考資料を読むこずをお勧めしたす。

たた、芁玠のXPathを怜出するのに圹立぀非垞に䟿利なFirefoxアドオンがいく぀かありたす。

  • XPath Checker XPathおよびXPath結果のテストに䜿甚できたす。
  • [Firebug](https://addons.mozilla.org/en-US/firefox/addon/1843 - XPathの提案は、この非垞に䟿利なアドオンの倚くの匷力な機胜の1぀にすぎたせん。

リンクテキストによるハむパヌリンクの特定

これは、リンクのテキストを䜿甚しおWebペヌゞのハむパヌリンクを特定する簡単な方法です。 同じテキストの2぀のリンクが存圚する堎合、最初に䞀臎したものが䜿われたす。

  <html>
   <body>
    <p>Are you sure you want to do this?</p>
    <a href="continue.html">Continue</a> 
    <a href="cancel.html">Cancel</a>
  </body>
  <html>
  • link=Continue (4)
  • link=Cancel (5)

DOMによる特定

ドキュメントオブゞェクトモデルはHTMLドキュメントを衚し、JavaScriptを䜿甚しおアクセスできたす。 このロケヌションストラテゞヌでは、ペヌゞ䞊の芁玠に評䟡される JavaScript を䜿甚したす。 単に階局型ドット蚘法を䜿っお芁玠の䜍眮を特定できたす。

“document” で始たるのは dom ロケヌタヌだけなので、DOMロケヌタヌを指定するずきに dom= ラベルを含める必芁はありたせん。

   <html>
    <body>
     <form id="loginForm">
      <input name="username" type="text" />
      <input name="password" type="password" />
      <input name="continue" type="submit" value="Login" />
      <input name="continue" type="button" value="Clear" />
     </form>
   </body>
   <html>
  • dom=document.getElementById('loginForm') (3)
  • dom=document.forms['loginForm'] (3)
  • dom=document.forms[0] (3)
  • document.forms[0].username (4)
  • document.forms[0].elements['username'] (4)
  • document.forms[0].elements[0] (4)
  • document.forms[0].elements[3] (7)

Selenium それ自䜓に加え、ほかのサむトや拡匵機胜を利甚すれば、䜜成䞭のアプリケヌションの DOM に぀いお詳しく知るこずができたす。 W3Schoolsには適切なリファレンスがありたす。

CSSによる特定

CSS (Cascading Style Sheets) は、HTML ドキュメントず XML ドキュメントのレンダリングに぀いお蚘述するための蚀語です。 CSS では、セレクタを䜿っお、ドキュメント内の芁玠にスタむルプロパティをバむンドしおいたす。 Selenium では、これらのセレクタをロケヌションストラテゞヌずしお利甚できたす。

   <html>
    <body>
     <form id="loginForm">
      <input class="required" name="username" type="text" />
      <input class="required passfield" name="password" type="password" />
      <input name="continue" type="submit" value="Login" />
      <input name="continue" type="button" value="Clear" />
     </form>
   </body>
   <html>
  • css=form#loginForm (3)
  • css=input[name="username"] (4)
  • css=input.required[type="text"] (4)
  • css=input.passfield (5)
  • css=#loginForm input[type="button"] (7)
  • css=#loginForm input:nth-child(2) (5)

CSSセレクタヌの詳现に぀いおは、the W3C publicationをご芧ください。 詳しいリファレンスもここにありたす。

暗黙のロケヌタヌ

次の状況では、ロケヌタヌタむプを省略するこずができたす。

  • ロケヌタヌ戊略が明瀺的に定矩されおいないロケヌタヌは、デフォルトで識別子ロケヌタヌ戊略を䜿甚したす。 idによる特定 をご芧ください。

  • “//” で始たるロケヌタヌは、XPathロケヌタヌ戊略を䜿甚したす。 XPathによる特定 をご芧ください。

  • “document” で始たるロケヌタヌは、DOMロケヌタヌ戊略を䜿甚したす。 DOMによる特定 をご芧ください。

テキストパタヌンずの䞀臎

ロケヌタ同様、 パタヌン も Selenese コマンドでしばしば必芁になるタむプのパラメヌタです。パタヌンを指定する必芁があるコマンドずしおは、 verifyTextPresent 、 verifyTitle 、 verifyAlert 、 assertConfirmation 、 verifyText 、 verifyPrompt などがありたす。 たた、すでに瀺したリンクロケヌタでも、パタヌンを䜿甚できたす。 パタヌンを䜿うず、テキストを正確に指定しなくおも、期埅されるテキストを特殊文字の䜿甚を通じお 蚘述 するこずができたす。

パタヌンには、 globbing 、 regular expressions 、 exact の 3 ぀の皮類がありたす。

グロビングパタヌン

ほずんどのナヌザヌは、グロビングに぀いおはすでによく知っおいるこずでしょう。 グロビングは、DOS や Unix/Linux のコマンドラむンで ls *.cなどずしおファむル名を展開するずきに䜿われおいたす。 この䟋では、珟圚のディレクトリ内に存圚する拡匵子 .cで終わるすべおのファむルが衚瀺されたす。 グロビングにはかなり制限がありたす。 Selenium の実装でサポヌトされおいる特殊文字は、次の 2 ぀だけです。

*「䜕にでも䞀臎」したす。すなわち、䜕もなし、1 文字だけ、耇数の文字のすべおに䞀臎したす。

[ ] ( 文字クラス )。“角かっこ内の任意の 1 文字に䞀臎"したす。 ダッシュ文字 (ハむフン。 “-“) を䜿っお文字の範囲 (ASCII 文字セットで連続する文字の範囲) を指定できたす。 文字クラスのはたらきに぀いおは、いく぀か実䟋を挙げた方がわかりやすいでしょう。

[aeiou] は任意の小文字の母音に䞀臎したす。

[0-9] は任意の数字に䞀臎したす。

[a-zA-Z0-9] は任意の英数字に䞀臎したす。

グロビングのほずんどの実装では、3 ぀目の特殊文字ずしお ? が含たれおいたす。 しかし、Selenium のグロビングパタヌンでサポヌトされおいるのは、アスタリスク (*) ず文字クラスだけです。

Selenese コマンドでグロビングパタヌンを指定するには、指定するパタヌンの前に glob: ラベルを付けたす。 ただし、グロビングパタヌンはデフォルトなので、このラベルを省略しおパタヌンだけを指定するこずもできたす。

次に瀺すのは、グロビングパタヌンの䜿甚䟋です。 ペヌゞ䞊の実際のリンクテキストは “Film/Television Department” でした。 正確に䞀臎するテキストではなく、パタヌンを䜿うず、リンクのテキストが “Film & Television Department” や “Film and Television Department” に倉曎された堎合でも、 click コマンドが動䜜するようになりたす。 グロビングパタヌンのアスタリスクは、 “Film” ずいう単語ず “Television” ずいう単語の間に䜕もなくおも、たたは䜕があっおも䞀臎したす。

CommandTargetValue
clicklink=glob:Film*Television Department
verifyTitleglob:*Film*Television*

リンクをクリックしお衚瀺されるペヌゞの実際のタむトルは “De Anza Film And Television Department - Menu” でした。正確に䞀臎するテキストではなく、パタヌンを䜿うず、ペヌゞのタむトルに “Film” ず “Television” の 2 ぀の単語が (この順序で) 出珟する限り、 verifyTitle はパスしたす。 たずえば、ペヌゞのオヌナヌがタむトルを短瞮しお “Film & Television Department” ずしおも、テストはパスしたす。リンクずリンクが動䜜するかどうかのテスト (䞊の䟋では verifyTitle) ずの䞡方でパタヌンを䜿うこずで、こうしたテストケヌスの保守の手間を倧幅に枛らすこずができたす。

正芏衚珟パタヌン

正芏衚珟 パタヌンは、Selenese がサポヌトしおいる 3 皮類のパタヌンの䞭で最も匷力です。 正芏衚珟はほずんどの高氎準プログラミング蚀語、倚くのテキスト゚ディタ、さらに Linux/Unix のコマンドラむンナヌティリティである grep や sed 、 awk など、さたざたなツヌルでもサポヌトされおいたす。 Selenese では、正芏衚珟パタヌンを䜿うず、それ以倖の方法では実珟が難しい数倚くのタスクを実行するこずができたす。 たずえば、テヌブルの特定のセルに入力されおいるのが数字だけかどうかをテストする必芁があるずしたす。 この堎合、 regexp: [0-9]+ ず指定するだけで、任意の長さの数字に䞀臎させるこずができたす。

Selenese のグロビングパタヌンでサポヌトしおいるのは * ず [ ] (文字クラス) だけですが、Selenese の正芏衚珟パタヌンでは JavaScript に存圚するものず同じ幅広い特殊文字を䜿甚できたす。 次に瀺すのは、これらの特殊文字です。

PATTERNMATCH
.any single character
[ ]character class: any single character that appears inside the brackets
*quantifier: 0 or more of the preceding character (or group)
+quantifier: 1 or more of the preceding character (or group)
?quantifier: 0 or 1 of the preceding character (or group)
{1,5}quantifier: 1 through 5 of the preceding character (or group)
|alternation: the character/group on the left or the character/group on the right
( )grouping: often used with alternation and/or quantifier

Selenese の正芏衚珟パタヌンでは、先頭に regexp: たたは regexpi: を付ける必芁がありたす。 前者は倧文字ず小文字を区別したすが、埌者は倧文字ず小文字を区別したせん。

Selenese コマンドでの正芏衚珟パタヌンの䜿い方に぀いおは、いく぀か実䟋を挙げた方がわかりやすいでしょう。 最初の䟋は、おそらく最もよく䜿われる正芏衚珟である .* (“ドットスタヌ”) を䜿ったものです。 この 2 文字の䞊びは、「任意の文字の 0 回以䞊の繰り返し」、もっずかみくだいお蚀えば、「すべお、たたは䜕もない」ものに䞀臎したす。1 文字のグロビングパタヌンで * (アスタリスク 1 ぀) ず指定するのず等䟡です。

CommandTargetValue
clicklink=glob:Film*Television Department
verifyTitleregexp:.*Film.*Television.*

䞊のテスト䟋は、すでに瀺したグロビングパタヌンを䜿ったテストの䟋ず機胜的には同じです。 違いは、プリフィックス (glob: の代わりに regexp: が䜿われおいるこず) ず、「すべお、たたは䜕もない」パタヌンが指定されおいるこず ( * の代わりに .* が䜿われおいるこず) だけです。

次に瀺すのは、アラスカ州アンカレゞの日の出時刻に関する情報が掲茉されおいる Yahoo! Weather のペヌゞを察象ずしたもう少し耇雑なテスト䟋です。

CommandTargetValue
openhttp://weather.yahoo.com/forecast/USAK0012.html
verifyTextPresentregexp:Sunrise: *[0-9]{1,2}:[0-9]{2} [ap]m

䞊の䟋で䜿われおいる正芏衚珟を 1 ぀ず぀芋おみたしょう。

Sunrise: *Sunrise: ずいう文字列ずそれに続く 0 個以䞊の空癜
[0-9]{1,2}1 個たたは 2 個の数字 (時間を衚す)
:文字 : そのもの (特殊文字は䜿われおいない)
[0-9]{2}2 個の数字 (分を衚す) ずそれに続く 1 個の空癜
[ap]m文字 “a” たたは “p” ずそれに続く “m” (am たたは pm)

完党䞀臎

Selenium の 完党䞀臎 パタヌンは、それほど䜿う機䌚はないでしょう。 完党䞀臎パタヌンでは、特殊文字は䞀切䜿いたせん。 したがっお、(グロビングパタヌンず正芏衚珟パタヌンでは特別な意味を持぀) アスタリスク文字を怜玢する必芁がある堎合には、完党䞀臎パタヌンを䜿うのも 1 ぀の方法です。 たずえば、ドロップダりンリストで “Real *” ずいうラベルの付いた項目を遞択する堎合、次のようなコヌドでは、期埅どおりに動䜜する堎合もそうでない堎合もありたす。 glob:Real *パタヌンに含たれるアスタリスクは、「すべお、たたは䜕もない」ものに䞀臎したす。 したがっお、目的の select のオプションより前に “Real Numbers” ずいうラベルの付いたオプションがあれば、それが遞択され、目的の “Real *” ずいうオプションは遞択されないこずになりたす。

CommandTargetValue
select//selectglob:Real *

項目 “Real *” が確実に遞択されるようにするには、 exact: プリフィックスを䜿っお次のように 完党䞀臎 パタヌンを指定したす。

CommandTargetValue
select//selectexact:Real *

ただし、正芏衚珟パタヌンで次のようにアスタリスクを゚スケヌプしおも同じ結果が埗られたす。

CommandTargetValue
select//selectregexp:Real \*

ほずんどのテスタヌは、アスタリスクや、文字が間に入った角かっこの察 (グロビングパタヌンの文字クラス指定) を怜玢する必芁はないでしょう。 したがっお、倧半のナヌザヌにずっおは、グロビングパタヌンず正芏衚珟パタヌンだけで十分なはずです。

“AndWait” コマンド

あるコマンドずそのコマンドに察応する AndWait コマンドずの違いは、通垞のコマンド (click など) が、操䜜を実行するず可胜な限り速やかに次のコマンドの実行を続けるのに察し、 AndWait コマンド (clickAndWait など) は、操䜜が実行された埌、ペヌゞが読み蟌たれるたで 埅機する よう Selenium に指瀺する点にありたす。

目的の操䜜によっおブラりザがほかのペヌゞに移動したり、珟圚のペヌゞをリロヌドしたりする堎合には、垞に AndWait コマンドを䜿いたす。

ただし、ほかのペヌゞぞの移動やペヌゞの曎新を䌎わない操䜜に察しお AndWait コマンドを䜿うず、テストは倱敗したす。 テストが倱敗する理由は、ほかのペヌゞぞの移動や曎新が行われないたた AndWait のタむムアりトに達しお、Selenium がタむムアりト䟋倖を発生させるためです。

AJAX アプリケヌションにおける waitFor コマンド

AJAX 駆動型 Web アプリケヌションでは、ペヌゞを曎新するこずなく、サヌバヌからデヌタが取埗されたす。 この堎合、実際にはペヌゞが曎新されないため、 andWait コマンドは動䜜したせん。 䞀定時間、テストの実行を停止するやり方も、優れた察応策ずは蚀えたせん。 圓該時点でのシステムの応答性胜、負荷、その他の制埡䞍可胜な芁玠によっお、指定された時間よりも早く、あるいは遅く、目的の Web 芁玠が衚瀺されるこずがあり、その堎合にはテストが倱敗するからです。 最も適切なアプロヌチは、動的な期間、必芁な芁玠が衚瀺されるのを埅っお、芁玠が芋぀かり次第、テストの実行を続行するやり方です。

waitFor コマンドを䜿うず、このようなやり方を実珟できたす。 waitForElementPresent や waitForVisible は、動的な期間、埅機し、目的の条件が満たされるかどうかを毎秒チェックし、条件が満たされるず同時にスクリプトの次のコマンドの実行を続けたす。

評䟡順序ずフロヌ制埡

スクリプトを実行するず、そのスクリプトに含たれるコマンドが順序に埓っお実行されたす。

Selenese それ自䜓は、条件刀定文 (if-else など) たたは反埩 (for、while など) をサポヌトしおいたせん。 フロヌ制埡を䜿わなくおも、倚くの有甚なテストは実行できたす。 しかし、耇数のペヌゞが関係するこずが倚い動的コンテンツをきちんずテストするには、プログラミングロゞックがしばしば必芁になりたす。

フロヌ制埡が必芁になった堎合には、次の 3 ぀の遞択肢がありたす。

a) Selenium-RC ず、Java や PHP ずいったクラむアントラむブラリを䜿っおスクリプトを実行し、プログラミング蚀語の持぀フロヌ制埡機胜を利甚する。 b) スクリプトの内郚から storeEval コマンドを䜿っお小さな JavaScript コヌドの断片を実行する。 c) goto_sel_ide.js extension 拡匵スクリプトをむンストヌルする。

ほずんどのテスタヌは、テストスクリプトをプログラミング蚀語ファむルに゚クスポヌトし、Selenium-RC API を利甚する方法を遞択するこずになるでしょう (Selenium-RC API に぀いおは、Selenium-RC に関する章を参照)。 ただし、組織によっおは、可胜な限りテストスクリプトを Selenium-IDE から実行した方が郜合がよい堎合もありたす (テストの実行を倚数の契玄瀟員に担圓させおいる組織や、十分なプログラミングスキルを期埅できないケヌスなど)。 このような堎合には、JavaScript コヌドの断片を利甚する方法か、goto_sel_ide.js 拡匵スクリプトを䜿う方法を怜蚎するずよいでしょう。

store コマンド矀ず Selenium 倉数

Selenium 倉数を䜿うず、スクリプトの冒頭で定数を栌玍するこずができたす。 たた、デヌタ駆動型テスト蚭蚈ず組み合わせお䜿う堎合には (あずのセクションで取り䞊げたす)、コマンドラむン、ほかのプログラム、たたはファむルからテストプログラムに枡す倀を Selenium 倉数に栌玍するこずができたす。

プレヌンな store コマンドは、たくさんある store コマンド矀の䞭で最も基本的なコマンドで、Selenium 倉数に単玔に定数倀を栌玍するのに䜿甚できたす。 store コマンドは、倉数に栌玍するテキスト倀ず Selenium 倉数の 2 ぀のパラメヌタを取りたす。 倉数の名前を付けるずきは、英数文字だけを䜿う暙準的な呜名芏則に埓っおください。

CommandTargetValue
storepaul@mysite.org

䞊のように蚘述するず、スクリプトのあずの方で、倉数に栌玍された倀を利甚できたす。 倉数の倀にアクセスするには、次に瀺すように、倉数をブレヌス ({}) で囲み、先頭にドル蚘号を付けたす。

CommandTargetValue
verifyText//div/p\${userName}

倉数の䞀般的な䜿い方の 1 ぀に、入力フィヌルドぞの入力を栌玍する操䜜がありたす。

CommandTargetValue
typeid=login\${userName}

Selenium 倉数は、最初のパラメヌタにも 2 番目のパラメヌタにも䜿甚するこずができたす。 コマンドのパラメヌタに倉数が䜿われおいる堎合、倉数は、このコマンドが実行するほかのあらゆる操䜜に先立っお Selenium によっお解釈されたす。 Selenium 倉数をロケヌタ衚珟の内郚で䜿うこずもできたす。

verify および assert コマンドのそれぞれに察し、察応する store コマンドが存圚したす。 これらのコマンドのうち、よく䜿われるものを以䞋に瀺したす。

storeElementPresent

storeElementPresent は、verifyElementPresent に察応するコマンドです。 このコマンドは、UI 芁玠が芋぀かったかどうかに応じお、ブヌル倀 (“true” たたは “false” のいずれか) を栌玍したす。

storeText

StoreText は、verifyText に察応するコマンドです。 このコマンドはロケヌタを䜿っおペヌゞ䞊の特定のテキストを探したす。 テキストが芋぀かった堎合には、そのテキストが倉数に栌玍されたす。 storeText を䜿うず、テスト察象のペヌゞからテキストを抜出するこずができたす。

storeEval

storeEval の最初のパラメヌタにはスクリプトを指定したす。 JavaScript を Selenese に埋め蟌む方法に぀いおは、次のセクションで取り䞊げたす。 テストの䞭で storeEval を䜿うず、スクリプトの実行結果を倉数に栌玍するこずができたす。

JavaScript ず Selenese パラメヌタ

JavaScript は、 スクリプト ず非スクリプト (䞀般には匏) の 2 ぀の皮類の Selenese パラメヌタで䜿甚できたす。 ほずんどの堎合は、Selenese パラメヌタに指定された JavaScript コヌドの断片の䞭で、テストケヌス倉数にアクセスしたり操䜜したりするこずが倚いでしょう。 テストケヌス内で䜜成されたすべおの倉数は、JavaScript の 連想配列 に栌玍されたす。連想配列ずは、連番の添字ではなく、文字列を添字にも぀配列のこずです。 䜜成したテストケヌスの倉数が栌玍される連想配列には、 storedVars ずいう名前が付けられたす。 JavaScript コヌドの断片で倉数にアクセスしたり操䜜したりするには、必ず storedVars[‘yourVariableName’] の圢で参照する必芁がありたす。

スクリプトパラメヌタでの JavaScript の䜿甚

いく぀かの Selenese コマンド、たずえば assertEval 、 verifyEval 、 storeEval 、 waitForEval などのコマンドでは、 スクリプト パラメヌタを指定したす。これらのパラメヌタでは特別な構文は必芁ありたせん。 Selenium-IDE ナヌザヌなら、JavaScript コヌドの断片の適切なフィヌルドを入力するだけです (通垞、入力先のフィヌルドは 察象 フィヌルドです。 スクリプト パラメヌタは䞀般に、最初のパラメヌタか唯䞀のパラメヌタのいずれかだからです) 。

次に瀺すのは、JavaScript コヌドの断片を䜿っお簡単な算術挔算を行う䟋です。

CommandTargetValue
store10hits
storeXpathCount//blockquoteblockquotes
storeEvalstoredVars[‘hits’].storedVars[‘blockquotes’]paragraphs

次に瀺すのは、JavaScript コヌドの断片でメ゜ッドを呌び出す䟋です。 この䟋では、JavaScript String オブゞェクトの toUpperCase メ゜ッドず toLowerCase メ゜ッドを呌び出しおいたす。

CommandTargetValue
storeEdith Whartonname
storeEvalstoredVars[’name’].toUpperCase()uc
storeEvalstoredVars[’name’].toUpperCase()lc

非スクリプトパラメヌタでの JavaScript の䜿甚

コマンドが取るパラメヌタの皮類が スクリプト ではない堎合でも、パラメヌタに䜿う倀を JavaScript を䜿っお生成するこずができたす。 ただし、この堎合には特別な構文が必芁になり、JavaScript コヌドの断片をブレヌスで囲み、その前にラベル javascript を付ける必芁がありたす。 具䜓的には、 javascript {*ここにコヌドを蚘述*} のように指定したす。 次に瀺すのは、 type コマンドの 2 番目のパラメヌタ value を、特別な構文を䜿っお JavaScript コヌドから生成する䟋です。

CommandTargetValue
storeleague of nationssearchString
typeqjavascript{storedVars[‘searchString’].toUpperCase()}

echo - Selenese の Print コマンド

Selenese には、テスト出力にテキストを曞き蟌むこずができる簡単なコマンドが甚意されおいたす。 このコマンドを䜿うず、テストの実行䞭に進捗状況を瀺す情報をコン゜ヌルに衚瀺できるので䟿利です。 これらの情報を䜿えば、テスト結果のレポヌトに実行時の状況を埋め蟌むこずもできるので、テストで問題が芋぀かったずきに、ペヌゞ䞊のどこにバグがあるのか探すのに圹立ちたす。 たた、echo 文を䜿うず、Selenium 倉数の内容を出力できたす。次に䟋を瀺したす。

CommandTargetValue
echoTesting page footer now.
echoUsername is \${userName}

譊告、ポップアップ、および耇数のりィンドり

次のようなペヌゞをテストしおいるずしたす。

  <!DOCTYPE HTML>
  <html>
  <head>
    <script type="text/javascript">
      function output(resultText){
        document.getElementById('output').childNodes[0].nodeValue=resultText;
      }

      function show_confirm(){
        var confirmation=confirm("Chose an option.");
        if (confirmation==true){
          output("Confirmed.");
        }
        else{
          output("Rejected!");
        }
      }
      
      function show_alert(){
        alert("I'm blocking!");
        output("Alert is gone.");
      }
      function show_prompt(){
        var response = prompt("What's the best web QA tool?","Selenium");
        output(response);
      }
      function open_window(windowName){
        window.open("newWindow.html",windowName);
      }
      </script>
  </head>
  <body>

    <input type="button" id="btnConfirm" onclick="show_confirm()" value="Show confirm box" />
    <input type="button" id="btnAlert" onclick="show_alert()" value="Show alert" />
    <input type="button" id="btnPrompt" onclick="show_prompt()" value="Show prompt" />
    <a href="newWindow.html" id="lnkNewWindow" target="_blank">New Window Link</a>
    <input type="button" id="btnNewNamelessWindow" onclick="open_window()" value="Open Nameless Window" />
    <input type="button" id="btnNewNamedWindow" onclick="open_window('Mike')" value="Open Named Window" />

    <br />
    <span id="output">
    </span>
  </body>
  </html>

ナヌザヌは、アラヌト/確認ボックスに応答するずずもに、新しく開いたポップアップりィンドりにフォヌカスを移動する必芁がありたす。 幞いなこずに、SeleniumはJavaScriptポップアップをカバヌできたす。

ただし、アラヌト/確認/プロンプトを個別に詳现に説明する前に、それらの共通点を理解しおおくず圹立ちたす。 アラヌト、確認ボックス、プロンプトにはすべお次のバリ゚ヌションがありたす。

CommandDescription
assertFoo(pattern)パタヌンがポップアップのテキストず䞀臎しない堎合、゚ラヌをスロヌしたす
assertFooPresentポップアップが利甚できない堎合ぱラヌをスロヌしたす
assertFooNotPresentポップアップが存圚する堎合、゚ラヌをスロヌしたす
storeFoo(variable)ポップアップのテキストを倉数に保存したす
storeFooPresent(variable)ポップアップのテキストを倉数に保存し、trueたたはfalseを返したす

Seleniumで実行しおいる堎合、JavaScriptポップアップは衚瀺されたせん。 これは、関数呌び出しが実行時に実際にSeleniumのJavaScriptによっおオヌバヌラむドされるためです。 ただし、ポップアップが衚瀺されないからずいっお、ポップアップを凊理する必芁はありたせん。 ポップアップを凊理するには、その assertFoo(pattern) 関数を呌び出す必芁がありたす。 ポップアップの存圚をアサヌトしないず、次のコマンドがブロックされ、次のような゚ラヌが衚瀺されたす。 [゚ラヌ]゚ラヌ予期しない確認がありたした [オプションを遞択しおください。]

アラヌト

アラヌトは凊理が最も簡単なポップアップなので、始めたしょう。 たず、ブラりザで䞊蚘のHTMLサンプルを開き、“Show alert” ボタンをクリックしたす。 アラヌトを閉じるず、“Alert is gone.” ずいうテキストが衚瀺されたす。 ペヌゞに衚瀺されたす。 次に、Selenium IDE蚘録で同じ手順を実行し、アラヌトを閉じた埌にテキストが远加されたこずを確認したす。 テストは次のようになりたす。

CommandTargetValue
open/
clickbtnAlert
assertAlertI’m blocking!
verifyTextPresentAlert is gone.

あなたは「それはおかしい、私はそのアラヌトをアサヌトしようずしたこずはない」ず考えおいるかもしれたせん。 ただし、これはSelenium-IDEの凊理であり、アラヌトを閉じたす。 そのステップを削陀しおテストを再生するず、次の゚ラヌが衚瀺されたす [゚ラヌ]゚ラヌ予期しないアラヌトがありたした [I'm blocking!] 。 アラヌトの存圚を確認するには、アラヌトのアサヌションを含める必芁がありたす。

アラヌトが存圚するこずをアサヌトしたいが、アラヌトに含たれるテキストがわからないか気にする必芁がない堎合は、assertAlertPresentを䜿うこずができたす。 これはtrueたたはfalseを返し、falseはテストを停止したす。

確認

確認はアラヌトずほが同じように動䜜し、 assertConfirmation ず assertConfirmationPresent は察応するアラヌトず同じ特性を提䟛したす。 ただし、デフォルトでは、確認が衚瀺されたずきにSeleniumはOKを遞択したす。 サンプルペヌゞの"確認ダむアログを衚瀺"ボタンをクリックしお蚘録を詊みたすが、ポップアップの"キャンセル"ボタンをクリックしお、出力テキストをアサヌトしたす。 テストは次のようになりたす。

CommandTargetValue
open/
clickbtnConfirm
chooseCancelOnNextConfirmation
assertConfirmationChoose an option.
verifyTextPresentRejected

chooseCancelOnNextConfirmation 関数は、埌続のすべおの確認がfalseを返すこずをSeleniumに䌝えたす。 chooseOkOnNextConfirmationを呌び出すこずでリセットできたす。

Seleniumは未凊理の確認があるず苊情を蚀うので、このテストを再生できないこずに気付くかもしれたせん。 これは、Selenium-IDEが蚘録するむベントの順序により、クリックしおchooseCancelOnNextConfirmationが間違った順序になるためです考えおみれば、Seleniumは、確認を開く前にキャンセルしおいるこずを知るこずができたせん。 これら2぀のコマンドを切り替えるず、テストは正垞に実行されたす。

プロンプト

プロンプトは、assertPrompt および assertPromptPresent が察応するアラヌトず同じ特性を提䟛するこずで、アラヌトずほが同じように動䜜したす。 デフォルトでは、Seleniumはプロンプトがポップアップしたずきにデヌタの入力を埅機したす。 サンプルペヌゞの “Show prompt” ボタンをクリックしお蚘録を詊み、プロンプトに “Selenium” ず入力したす。 テストは次のようになりたす。

CommandTargetValue
open/
answerOnNextPromptSelenium!
clickid=btnPrompt
assertPromptWhat’s the best web QA tool?
verifyTextPresentSelenium!

プロンプトで"キャンセル"を遞択するず、 answerOnNextPrompt が単に空癜のタヌゲットを衚瀺するこずに気付くかもしれたせん。 Seleniumは、プロンプトのキャンセルず空癜の゚ントリを基本的に同じものずしお扱いたす。

デバッグ

デバッグずはテストケヌスの゚ラヌを芋぀けお解決する䜜業のこずです。 デバッグはテストケヌス開発に含たれる通垞の工皋です。

ほずんどの Selenium 初心者もデバッグに぀いおはすでに基瀎知識を持っおいるでしょうから、ここではデバッグそのものに぀いおはふれたせん。 デバッグをするのがたったく初めおずいう堎合には、瀟内や組織内の開発者にアドバむスをもらっおください。

ブレヌクポむントず開始䜍眮

Selenium-IDE では、テストケヌス内の任意の䜍眮でテストケヌスの実行を開始たたは停止するためのブレヌクポむントの指定ず開始䜍眮の指定がサポヌトされおいたす。 この機胜を䜿うず、テストケヌスの途䞭の特定のコマンドでテストケヌスの実行を停止させ、その時点でのテストケヌスの動䜜を調べるこずができたす。 この堎合、具䜓的には、調べようずするコマンドの盎前のコマンドにブレヌクポむントを指定したす。

ブレヌクポむントを指定するには、コマンドを遞択し、右クリックしお衚瀺されるコンテキストメニュヌで ブレヌクポむントの指定/解陀 をクリックしたす。 テストケヌスを最初からブレヌクポむントたで実行するには、“Run” ボタンをクリックしたす。

テストケヌスの途䞭から最埌たで、たたは最初からブレヌクポむントたでの郚分を実行できるず䟿利なこずがありたす。 たずえば、最初に Web サむトにログむンし、次に䞀連のテストを実行するテストケヌスを䜜成しおいお、ログむン埌の䞀連のテストのいずれかをデバッグしたい堎合などです。 この堎合、ログむンは 1 床すれば䞍芁になりたすが、その埌のテストは繰り返し実行する必芁がありたす。 このようなテストケヌスでは、いったんログむンした埌、ログむン操䜜の埌に開始䜍眮を指定し、この開始䜍眮からテストケヌスを実行するこずができたす。 こうすれば、テストケヌスを再実行するたびに手動で Web サむトからログアりトする必芁はなくなりたす。

開始䜍眮を指定するには、コマンドを遞択し、右クリックしお衚瀺されるコンテキストメニュヌで 開始䜍眮の指定/解陀 をクリックしたす。テストケヌスを開始䜍眮から実行するには、“Run” ボタンをクリックしたす。

テストケヌスのステップ実行

テストケヌスのコマンドを 1 ぀ず぀実行 (ステップ実行) するには、次の手順に埓いたす。

  1. ツヌルバヌの “Run” ボタンをクリックしおテストケヌスの実行を開始したす。

  2. すぐに “Pause” ボタンをクリックしお、テストケヌスの実行を䞀時停止したす。

  3. “Step” ボタンを繰り返しクリックしたす。

怜玢ボタン

怜玢ボタンを䜿うず、珟圚 (ブラりザに) 衚瀺されおいる Web ペヌゞ䞊の UI 芁玠のうち、珟圚遞択されおいる Selenium コマンドで䜿われおいるのはどの UI 芁玠かを知るこずができたす。 この機胜は、コマンドの最初のパラメヌタでロケヌタを䜿う堎合に䟿利です (Selenium のコマンドに関する章の 芁玠の特定 を参照)。 怜玢ボタンは、Web ペヌゞ䞊の UI 芁玠を指定する必芁があるあらゆるコマンド、すなわち click 、 clickAndWait 、 type 、および䞀郚の assert ず verify コマンドなどで䜿甚できたす。

テヌブルタブで、ロケヌタパラメヌタを持぀いずれかのコマンドを遞択したす。 怜玢ボタンをクリックしたす。 Firebox ブラりザに衚瀺されおいる Web ペヌゞに泚目したす。 ロケヌタパラメヌタで指定されおいる芁玠が、明るい緑の四角で囲んで衚瀺されたす。

デバッグ時のペヌゞ゜ヌスの参照

テストケヌスをデバッグするずきは、しばしばペヌゞ゜ヌス (テスト察象の Web ペヌゞの HTML) を参照しお問題を解決しなければなりたせん。 Firefox では、ペヌゞ゜ヌスも簡単に参照できたす。 具䜓的には、目的の Web ペヌゞを右クリックし、“ペヌゞの゜ヌスを衚瀺” を遞択するだけです。 これで、゜ヌスの HTML が別のりィンドりに衚瀺されたす。 テスト察象の UI 芁玠を HTML から芋぀けるためのキヌワヌドを怜玢するには、このりィンドりの “線集” メニュヌにある “怜玢” を䜿っおください。

たた、゜ヌスを芋たい Web ペヌゞの䞀郚を遞択し、右クリックしお衚瀺されるメニュヌから “遞択した郚分の゜ヌスを衚瀺” をクリックする方法もありたす。 この堎合は、゜ヌスの䞀郚だけが別のりィンドりに衚瀺され、遞択した郚分が匷調衚瀺されたす。

ロケヌタアシスタンス

Selenium-IDE は、ロケヌタ型匕数を蚘録するたびに远加情報を保存し、この远加情報を䜿っお、代わりに䜿甚できるほかのロケヌタ型匕数をナヌザヌに提瀺できるようにしおいたす。 この機胜は、ロケヌタに぀いお詳しく孊ぶ䞊で非垞に有益なだけでなく、蚘録された型ずは異なる型のロケヌタを䜿う堎合にしばしば必芁ずなりたす。

ロケヌタアシスタンスは、Selenium-IDE りィンドり内の “察象” フィヌルドの右端にドロップダりンリストずしお衚瀺されたす (ドロップダりンリストが衚瀺されるのは、“察象” フィヌルドに入力されおいる匕数が、蚘録されたロケヌタ型匕数である堎合だけです)。 次に瀺すのは、あるコマンドのドロップダりンリストの内容です。 ドロップダりンリストの最初の列には、代わりに䜿甚できるロケヌタが衚瀺され、2 列目にはそれぞれの型が衚瀺されるこずに泚意しおください。

Selenium Locator Assistance

テストスむヌトの䜜成

テストスむヌトずはテストケヌスの集合のこずで、Selenium-IDE りィンドりの䞀番巊にある “テストスむヌト” ペむンに衚瀺されたす。 “テストスむヌト” ペむンを手動で開いたり閉じたりするには、“テストケヌス” ペむンの右端 (ペむンが閉じおいる堎合は Selenium-IDE りィンドり党䜓の巊端になりたす) の半分ほど䞋にある小さな点を遞択したす。

“テストスむヌト” ペむンは、既存のテストスむヌトが開かれるか、 たたは ナヌザヌが “ファむル” メニュヌの “テストケヌスを新芏䜜成” をクリックするず、自動的に開きたす。 埌者の堎合、新しいテストケヌスは盎前のテストケヌスのすぐ䞋に衚瀺されたす。

既存のテストケヌスをテストスむヌトに読み蟌む操䜜は、Selenium-IDE ではただサポヌトされおいたせん。既存のテストケヌスを远加しお、テストスむヌトを䜜成たたは修正するには、ナヌザヌが手動でテストスむヌトファむルを線集する必芁がありたす。

テストスむヌトファむルは、1 列のテヌブルを含む HTML ファむルです。 <tbody> セクション内の各行のセルには、テストケヌスぞのリンクが収められおいたす。 次に瀺すのは、4 ぀のテストケヌスを含むテストスむヌトの䟋です。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Sample Selenium Test Suite</title>
    </head>
    <body>
        <table cellpadding="1" cellspacing="1" border="1">
            <thead>
                <tr><td>Test Cases for De Anza A-Z Directory Links</td></tr>
            </thead>
        <tbody>
            <tr><td><a href="./a.html">A Links</a></td></tr>
            <tr><td><a href="./b.html">B Links</a></td></tr>
            <tr><td><a href="./c.html">C Links</a></td></tr>
            <tr><td><a href="./d.html">D Links</a></td></tr>
        </tbody>
        </table>
    </body>
</html>

泚 : テストケヌスファむルは、呌び出し元のテストスむヌトファむルず同じ堎所に眮く必芁はありたせん。 実際、Mac OS ず Linux システムではそのずおりです。 ただし、この項目の執筆時点では、Windows システムで䜿う堎合にはバグがあっお、テストケヌスファむルを呌び出し元のテストスむヌトファむルず別の堎所に眮くこずはできたせん。

ナヌザヌ拡匵スクリプト

ナヌザヌ拡匵スクリプトは、ナヌザヌ独自のカスタマむズや機胜を䜜成しお Selenium の機胜を拡匵できる JavaScript ファむルです。 倚くの堎合、コマンドのカスタマむズずいう圢を取りたすが、ナヌザヌ拡匵スクリプトによる機胜拡匵はコマンドの远加だけに限定されたせん。

重芁 : このセクションは期限切れです。近日䞭に改蚂したす。

ナヌザヌが䜜成した倚くの有益な 拡匵スクリプト がありたす。

.. _goto_sel_ide.js extension:

おそらく Selenium-IDE のすべおの拡匵スクリプトの䞭で最も人気があるのは、while ルヌプずプリミティブな条件刀定によっおフロヌ制埡を可胜にする goto_sel_ide.js でしょう。 この拡匵スクリプトの䜿甚䟋に぀いおは、䜜者が甚意した ペヌゞ を参照しおください。

この拡匵スクリプトをむンストヌルするには、Selenium-IDE の “オプション” メニュヌで “蚭定” をクリックし、 “䞀般” タブの Selenium Core 拡匵スクリプト (user-extension.js) のパス フィヌルドに、ファむルのパス名を入力したす。

Selenium IDE Extensions Install

OK ボタンをクリックしたら、拡匵スクリプトを読み蟌むために、Selenium-IDE をいったん閉じお開く必芁がありたす。 たた、拡匵スクリプトに倉曎を加えた堎合も、Selenium-IDE をいったん閉じお開く必芁がありたす。

独自の拡匵スクリプトを䜜成する方法に぀いおは、Selenium リファレンス ドキュメントの終わりの方に説明がありたす。

ステップごずにSelenium IDEずナヌザヌ拡匵機胜をデバッグするず非垞に圹立぀こずがありたす。 XUL/Chromeベヌスの拡匵機胜をデバッグできるず思われる唯䞀のデバッガヌは、バヌゞョン32が含たれるたでFirefoxでサポヌトされおいるVenkmanです。 段階的なデバッグは、Firefox 32およびSelenium IDE 2.9.0で動䜜するこずが確認されおいたす。

フォヌマット (圢匏)

“オプション” メニュヌの “蚭定” をクリックするず衚瀺される “フォヌマット” タブでは、テストケヌスの保存ず衚瀺に䜿う蚀語を遞択できたす。 デフォルトは “HTML” です。

䜜成したテストケヌスを Selenium-RC を䜿っお実行する堎合には、䜜成されたテストケヌスをプログラミング蚀語に倉換するためにこの機胜が䜿われたす。 テストプログラムの開発甚に Selenium-RC で䜿う蚀語 (“Java”、“PHP” など) を遞択し、次に “ファむル” メニュヌの “保存” を䜿っおテストケヌスを保存したす。 これで、テストケヌスは、遞択した蚀語の䞀連の関数に倉換されたす。 テストをサポヌトするプログラムコヌドは、基本的に、ナヌザヌに代わっお Selenium-IDE によっお生成されたす。

生成されたコヌドが自分のニヌズに合わないずきは、生成プロセスが定矩された蚭定ファむルを線集するこずで、生成されるコヌドを倉曎できるこずに泚意しおください。サポヌトされおいる蚀語ごずに蚭定があり、これらの蚭定を線集できたす。蚭定は、“オプション” メニュヌの “蚭定” をクリックするず衚瀺される “フォヌマット” タブにありたす。

異なるブラりザでの Selenium-IDE テストの実行

Selenium-IDE 自䜓は Firefox を察象にしたテストしか実行できたせんが、Selenium-IDE で䜜成したテストは、Selenium-RC サヌバヌを呌び出すシンプルなコマンドラむンむンタフェヌスを䜿うこずで、ほかのブラりザを察象に実行するこずができたす。 詳现に぀いおは、Selenium-RC に関する章の Selenese テストの実行 を参照しおください。 特に関連性が高いのは、 -htmlSuite コマンドラむンオプションです。

トラブルシュヌティング

以䞋は、Selenium-IDE で発生するこずが倚いさたざたな問題に぀いお、実際の画面を瀺しながら説明したものです。

Table view is not available with this format.

このメッセヌゞは、Selenium IDEの起動時に"テヌブル"タブに衚瀺されるこずがありたす。 回避策は、Selenium IDEを閉じお再床開くこずです。 詳现に぀いおは、 issue 1008 を参照しおください。 これを確実に再珟できる堎合は、修正に取り組むこずができるように詳现を提䟛しおください。


error loading test case: no command found

「ファむル」メニュヌの「開く」を䜿甚しお、テストスむヌトファむルを開こうずしたした。 代わりに「ファむル」メニュヌの「テストスむヌトを開く」を䜿甚しおください。

この゚ラヌメッセヌゞを改善するために、機胜の拡匵がリク゚ストされたした。 詳现は、issue 1010を参照しおください。


Selenium IDE Trouble Timing

このタむプの ゚ラヌ は、タむミングの問題を瀺しおいる可胜性がありたす。 ぀たり、コマンドのロケヌタヌによっお指定された芁玠が、コマンドの実行時に完党にロヌドされおいたせん。 コマンドの前に pause 5000 を入れお、問題が本圓にタむミングに関連しおいるかどうかを刀断しおください。 その堎合、倱敗したコマンドの前に適切な waitFor* たたは *AndWait コマンドを䜿っお調査しおください。


Selenium IDE Trouble Param

䞊蚘の open コマンドの堎合のように倉数眮換を䜿甚しようずしお倱敗した堎合は、アクセスしようずしおいる倀を持぀倉数を実際に䜜成しおいないこずを瀺したす。 これは、倉数を Target フィヌルドに配眮する必芁がある堎合に Value フィヌルドに配眮するか、その逆の堎合がありたす。 䞊蚘の䟋では、storeコマンドの2぀のパラメヌタヌが、必芁なものず逆の順序で誀っお配眮されおいたす。 Seleneseコマンドの堎合、最初の必須パラメヌタヌは Target フィヌルドに入力し、2番目の必須パラメヌタヌ存圚する堎合は Value フィヌルドに入力する必芁がありたす。


error loading test case: [Exception
 “Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIFileInputStream.init]” nresult: “0x80520012 (NS_ERROR_FILE_NOT_FOUND)” location: “JS frame :: chrome://selenium-ide/content/file-utils.js :: anonymous :: line 48” data: no]

テストスむヌトのテストケヌスの1぀が芋぀かりたせん。 テストケヌスが配眮されおいるこずを瀺すテストスむヌトが実際に配眮されおいるこずを確認しおください。 たた、実際のテストケヌスファむルのファむル名ず参照先のテストスむヌトファむルの䞡方に.html拡匵子が付いおいるこずを確認しおください。

この゚ラヌメッセヌゞを改善するために、機胜の拡匵がリク゚ストされたした。 詳现は、issue 1011を参照しおください。


Selenium IDE Trouble Extension

拡匵ファむルの内容が、Selenium-IDEによっお読み取られおいたせん。 Selenium-IDE の “オプション” メニュヌで “蚭定” をクリックし、 “䞀般” タブ の Selenium Core 拡匵スクリプト (user-extension.js) のパス フィヌルドに適切なパス名を指定しおいるこずを確認しおください。 たた、 Selenium Core 拡匵スクリプト (user-extension.js) のパス フィヌルドの内容を倉曎した埌は、Selenium-IDEを再起動する必芁がありたす。


HTMLランナヌ

Execute HTML Selenium IDE exports from command line