|
|
『XmlDriver - WebDriverをXMLから呼び出す』でXMLからWebDriverを呼び出して使う方法は、そんなに捨てたもんじゃないということがわかりました。しかしテストの自動化のためにはもっとやることはたくさんあります。そういうときはAntと組み合わせるのが常道なんでしょうが、結局JUnitなどで書いたテストケースをAntのタスクとして呼び出すだけになっては面白くありません。
そこで、Antから直接WebDriverを実行してみようというのが、この試みです。調べてみると、Antに独自タスクを追加することはさほど難しい話ではないようです。だったらWebDriverを呼び出す独自タスクを定義して使えるようにすれば素敵なことができそうです。そこでまず、どういう仕様にすべきかを考えます。
AntDriverで追加するタスクには以下の種類があります。
-
ブラウザ操作系タスク
-
driver, screenshot, quit
-
検証系タスク
-
element, text, title
-
アクション系タスク
-
click, frame, navigate, script, sendkeys, submit, window
-
タスク補助系タスク
-
loop, thread, reporter
各タスクの説明の前に、ロケータについて説明します。Selenium/WebDriverには、要素を見つける手段は複数用意されています。ここではSeleniumの伝統に従い、すべてをひっくるめてロケータと呼ぶことにします。ロケータはそれを必要とするタスクの属性として指定します。指定可能なロケータ属性は以下の種類があります。
-
classname
-
HTML要素のclass属性を指定します。
-
id
-
HTML要素のid属性を指定します。
-
linktext
-
HTMLのA要素内のテキストを指定します。
-
name
-
HTML要素のname属性を指定します。
-
tagname
-
HTML要素のタグ名を指定します。
-
xpath
-
XPath式によって要素を指定します。
これらのロケータは、複数指定された場合は記述された順に評価されていき、最初に対象の要素が見つかった時点で探索を終了し、各タスクに渡されます。
ブラウザを起動します。driverは通常スレッドに1つだけ割り当てられるため、Antのメインスレッド内では一度呼び出すだけで、後続のタスクではそれが利用されます。つまり、同じスレッド内で複数の異なるブラウザ名を指定しても、2番目以降の指定は無効となります。複数のブラウザを利用する場合は、threadタスク内でdriverタスクを呼び出すことで行います。
-
capabilities
-
使用するブラウザの設定を指定します。指定可能な値はブラウザによります。
-
description
-
このタスクの説明を記述します。
-
name
-
使用するブラウザを指定します。指定可能な値は'ie','firefox','htmlunit'のいずれかとなります。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。 この値はこのドライバーを使用するすべての子タスクのonerror属性のデフォルト値となります。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。デフォルト値は'10'です。この値はこのドライバーを使用するすべての子タスクのtimeout属性のデフォルト値となります。
-
verbose
-
'true'または'false'を指定します。デフォルト値は'true'です。'true'の場合は冗長なメッセージを出力します。この値はこのドライバーを使用するすべての子タスクのverbose属性のデフォルト値となります。
-
version
-
使用するブラウザのバージョンを指定します。指定可能な値はブラウザにより、指定したバージョンが実行環境にない場合は・・・
検証系のタスクです。指定した要素が存在するかどうかを調べます。
-
description
-
このタスクの説明を記述します。
-
displayed
-
'true'または'false'を指定します。'true'を指定するとこの要素が表示されていることを、'false'を指定すると表示されていないことを検証します。
-
enabled
-
'true'または'false'を指定します。'true'を指定するとこの要素が有効かどうか、'false'を指定すると無効かどうかを検証します。
-
id, name, linktext, classname, tagname, xpath
-
ロケータを指定します。いずれかの指定が必須です。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
present
-
'false'を指定すると、指定の要素が「存在しない」ことを確認します。その場合、timeoutの時間だけ待たされることになるため、明らかにすべてのデータが読み込まれている状態である場合はtimeout=“0”と同時に指定すべきです。
-
selected
-
'true'または'false'を指定します。'true'を指定するとこの要素が選択されていることを、'false'を指定すると選択されていないことを検証します。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
-
click
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、clickタスクを実行します。
-
element
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、elementタスクを実行します。
-
navigate
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、navigateタスクを実行します。
-
select
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、selectタスクを実行します。
-
submit
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、submitタスクを実行します。
-
sendkeys
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、sendkeysタスクを実行します。
-
text
-
このタスクに指定されたロケータで見つかった要素のすべてに対して、textタスクを実行します。
検証系のタスクです。指定した要素がテキストを含むかどうかを検証します。
-
description
-
このタスクの説明を記述します。
-
id, name, linktext, classname, tagname, xpath
-
テキストを含む要素のロケータ指定します。どれも指定されない場合は、HTMLのbody要素内のすべてのテキストが対象となります。
-
match
-
検索対象のテキストを指定します。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
present
-
'false'を指定すると、指定のテキストが「存在しない」ことを確認します。その場合、timeoutの時間だけ待たされることになるため、明らかにすべてのデータが読み込まれている状態である場合はtimeout=“0”と同時に指定すべきです。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
検証系のタスクです。ドキュメントのタイトルがテキストを含むかどうかを検証します。
-
description
-
このタスクの説明を記述します。
-
match
-
検索対象のテキストを指定します。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
present
-
'false'を指定すると、指定のテキストが「存在しない」ことを確認します。その場合、timeoutの時間だけ待たされることになるため、明らかにすべてのデータが読み込まれている状態である場合はtimeout=“0”と同時に指定すべきです。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
アクション系のタスクです。ロケータで指定した要素をクリックします。
-
description
-
このタスクの説明を記述します。
-
id, name, linktext, classname, tagname, xpath
-
ロケータを指定します。いずれかの指定が必須です。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
アクション系のタスクです。ロケータで指定した要素をsubmitします。
-
description
-
このタスクの説明を記述します。
-
id, name, linktext, classname, tagname, xpath
-
ロケータを指定します。いずれかの指定が必須です。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
アクション系のタスクです。指定したJavaScriptをブラウザで実行します。
-
description
-
このタスクの説明を記述します。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
value
-
ここで指定した値がJavaScriptのreturnで戻される値と一致するかどうかを調べます。より複雑な条件、たとえば数値の大小などを指定したい場合は、JavaScript側で検証を行い、true/falseで返すようにすることで対応可能です。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
アクション系のタスクです。指定したselect要素のプルダウン項目を選択します。
-
id, name, linktext, classname, tagname, xpath
-
ロケータを指定します。いずれかの指定が必須です。
-
text
-
プルダウンの選択するoptionをテキストで指定します。text、valueのいずれかが必須です。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
value
-
プルダウンの選択するoptionの値を指定します。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
アクション系タスクです。指定した要素に対してテキストを入力します。
-
description
-
このタスクの説明を記述します。
-
id, name, linktext, classname, tagname, xpath
-
ロケータを指定します。いずれかの指定が必須です。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
text
-
入力するテキストを指定します。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
-
テキスト
-
入力するテキストを指定します。text属性と両方指定された場合は、text属性の値にこちらの内容が追加されます。改行や'<','>','&'などのXML特殊文字を含む場合は、ここで<![CDATA[ .. ]]>内に記述することができます。
アクション系タスク。URLを指定してページを読み込んだり、履歴の移動や表示中のページの再読み込みを行います。
-
action
-
'back','forward','refresh'のいずれかを指定します。'action'属性か'to'属性のいずれかが必須です。
-
description
-
このタスクの説明を記述します。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
to
-
指定したURLをブラウザで開きます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
ブラウザが開いたウインドウに制御を移し、子要素に指定された各タスクを実行します。
-
description
-
このタスクの説明を記述します。
-
name
-
ウインドウの名前を指定します。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
click, element, frame, navigate, script, screenshot, select, sendkeys, submit, text, title, window
ドキュメント内のフレームに制御を移し、子要素に指定された各タスクを実行します。
-
description
-
このタスクの説明を記述します。
-
name
-
フレームの名前を指定します。
-
onerror
-
'ignore', 'fail'のいずれかを指定します。'ignore'が指定された場合は、失敗してもメッセージを出力するだけで後続のタスクを継続します。'fail'を指定した場合は、失敗するとAntの実行を中止します。デフォルトは'fail'です。
-
timeout
-
正の整数値を秒単位で、指定した要素が見つかるまでの待機時間を指定します。明示的に指定されない場合はdriverタスクのtimeout属性の値が使用されます。
-
verbose
-
'true'または'false'を指定します。'true'の場合は冗長なメッセージを出力します。明示的に指定されない場合はdriverタスクのverbose属性の値が使用されます。
click, element, frame, navigate, script, screenshot, select, sendkeys, submit, text, title, window
現在ブラウザに表示されている内容をPNG形式のファイルに保存します。
reporterタスクは2つの役割があります。
targetとprojectの完了毎に統計情報をコンソールに出力する。
テスト結果のレポートを生成する。
これらの出力は、このタスクが呼び出された時点からのものとなりますので、プロジェクトの最初の方で1回だけ呼び出しておくという使い方をします。
負荷テスト用に、同じ処理を指定回数繰り返すタスクです。
-
count
-
繰り返し回数を正の整数値で指定します。
負荷テスト用に、同じ処理を指定の数だけ並行して実行するタスクです。
-
count
-
並列数を正の整数値で指定します。デフォルト値は'1'となります。並列処理をしたいわけではなく、ブラウザを切り替えたい場合に'1'を指定し、子要素でdriverタスクを実行するとこのタスク内だけで使用されるdriverを利用できます。
-
increment
-
正の整数値が指定された場合、countの値に達するまでその数だけ徐々に並列処理数を増やしていきます。つまり、count=“10” increment=“1”を指定すると、10回のループで、それぞれ1+2+3+4+5+6+7+8+9+10=55回分の処理が行われることになります。テスト対象のアプリケーションがどの程度の並列処理に耐えうるかを検証するために使われます。
|
|
|