Selenium: Selenium コマンドリファレンス
注:このページはSelenium 0.6のリファレンスです。
原文はこちら
(本体HPからはリンクされてません)
最新0.7.0版の日本語リファレンスはこちら
Selenium Reference
コマンドはSelenium に対してどう動くか指示するものです。コマンドにはAction(実行)とCheck(検証)の二種類があります。各コマンドの呼び出しは、テストケースのtable における以下のような1つの行で表します。
Action コマンドは、アプリケーションの状態を一般に操作するものです。Actions コマンドは「このリンクをクリックする」とか「あのオプションを選択する」といった動作を行います。動作に失敗するか、エラーが発生した場合は、現在実行中のテストは中止されます。
Check コマンドは、アプリケーションの状態が期待しているものと合致しているか検証するものです。例えば「このページのタイトルはX かどうか確かめる」とか「このチェックボックスにチェックが入っているか確認する」などです。検証が失敗した際、テストを中止するか、検証失敗の記録は取るがテストは続行するか、をSelenium に指示することができます。
ElementLocator は、コマンドがHTML のどの要素を参照するかをSelenium に指示するものです。多くのコマンドはElementLocator をターゲットとして必要とします。lementLocator の例としては、"elementId"や"document.forms[0].element"などです。ElementLocator については次のセクションで詳しく述べます。
Pattern は様々な理由で使われます。例えば、入力フィールドの期待値を指定したり、プルダウンの選択肢を特定したりするためです。Selenium は正規表現を含む様々な種類のpattern をサポートしています。詳しくは後述します。
Element Locators
Element Locator とは、Selenium において、コマンドが参照するhtml 要素を特定するものです。Selenium ではElementLocator として以下の方法を提供しています。これはhtml の要素全般に対して使える方法です。
ElementLocator のprefix("xxx=")が無い場合、Selenium は以下のものと解釈して動作します。
| "document."から始まっている場合 |
dom=と解釈して動作 |
| "//"から始まっている場合 |
xpath=と解釈して動作 |
| それ以外 |
identifier=と解釈して動作 |
Select Option Specifiers
SelectOption 指示子はHTML のSelect 要素のoption を指定するいくつかの方法を提供します。例えば、特定のoption を選択したり、選択されたoption が仕様を満たしているかどうかを検証するための方法です。SelectOption 指示子にはいくつかの形式があります。
prefix(xxx=)が無い場合、デフォルトの動作はlabel に対してのみマッチングします。
String-match Patterns
文字列のマッチングとして、様々なpattern 構文が利用可能です。
prefix("xxx:")が無い場合、Selenium は"glob"パターンであると仮定して動作します。
コマンド Action編
Action はアプリケーションに対して何らかの動作を行うようにSelenium に指示します。一般にこれらはユーザが行う何らかの動作を表します。
多くのAction コマンドは"AndWait"接尾語を付けることができます。この接尾語は「Action を実行した後、ブラウザがサーバに通信を行って新しいページがロードされるの(次のコマンドを実行せずに)待つ」という意味です。この動作様式に対する例外は"open"コマンドで、デフォルトの動作でページがロードされるのを待ちます。
(※訳注:原文では"open"と"click"となっていますが、"open"だけの誤記だそうです)
- open
TestRunner のtest frame にて、指定したURL を開きます。相対パス又は絶対パスの両者とも指定可能です。
注)ブラウザにおけるセキュリティ制限(クロスサイトスクリプティング対策)の為、URLはSelenium と同じサイト上になければなりません。
(書式)
| コマンド |
ターゲット |
バリュー |
| open |
url |
なし |
(例)
- type
テキストボックスなどの入力フィールドに値をタイプ(入力)します。
コンボボックスやチェックボックスのvalue を設定するためにも使うことができます。その場合は表示されている文字ではなく、選択されているoption のvalue 属性を指定します。
(書式)
| コマンド |
ターゲット |
バリュー |
| type |
入力するフィールドのelementLocator |
入力する値 |
(例)
| type |
nameField |
John Smith |
| typeAndWait |
textBoxThatSubmitsOnChange |
newValue |
- select
option 識別子に基づいてドロップダウン形式のoption を選択します。もし識別子が複数のoption に合致する場合は、最初に合致したものが選択されます。
(書式)
| コマンド |
ターゲット |
バリュー |
| select |
dropdown フィールドのelementLocator |
option 識別子 |
(例)
| select |
dropDown |
Australian Dollars |
| select |
dropDown |
index=0 |
| selectAndWait |
currencySelector |
value=AUD |
| selectAndWait |
currencySelector |
label=Aus*lian D*rs |
- selectWindow
ポップアップウィンドウを選択します。一度ポップアップウィンドウが選択されると、全てのコマンドはそのウィンドウに対して実行されます。元のメインウィンドウを再び選択するためには、ターゲットにnull を指定します。
(書式)
| コマンド |
ターゲット |
バリュー |
| selectWindow |
ウィンドゥのID |
なし |
(例)
| selectWindow |
myPopupWindow |
|
| selectWindow |
null |
|
- goBack
ブラウザの"戻る"ボタンをユーザがクリックすることをシミュレートします。
(書式)
| コマンド |
ターゲット |
バリュー |
| goBack |
なし |
なし |
(例)
- close
ポップアップしたウィンドウのタイトルバーで"閉じる"ボタンをクリックすることをシミュレートします。
(書式)
(書式)
| コマンド |
ターゲット |
バリュー |
| close |
なし |
なし |
(例)
- pause
テストスクリプトの実行を特定時間ポーズします。これはスクリプトのデバッグや、サーバーサイドの何らかのアクションを待つ場合に有効です。
(書式)
| コマンド |
ターゲット |
バリュー |
| pause |
ミリ秒 |
なし |
(例)
- fireEvent
"onEvent"ハンドラに一致するトリガーを起動するために、明示的にイベントをシミュレートします。
(書式)
| コマンド |
ターゲット |
バリュー |
| fireEvent |
elementLocator |
イベント名 |
(例)
| fireEvent |
textField |
focus |
| fireEvent |
dropDown |
blur |
- waitForValue
指定された入力フィールド(例えばhidden フィールド)が指定された値を持つのを待ちます。入力フィールドが既に値を持っていれば直ちに動作成功となります。これは値のポーリングによって実装されています。
(注)入力フィールドが指定された値を絶対に持たない場合、無限中断を引き起こします。
(書式)
| コマンド |
ターゲット |
バリュー |
| waitForValue |
入力フィールドのelementLocator |
値 |
(例)
| waitForValue |
finishIndication |
isfinished |
- store
変数に値を格納します。値は、変数への代入またはjavascript の評価する内容によって組み立てられます。詳しくは後述の「パラメータの組み立てと変数」を参照してください。
(書式)
| コマンド |
ターゲット |
バリュー |
| store |
格納する値 |
変数名 |
(例)
| store |
Mr John Smith |
fullname |
| store |
${title} ${firstname} ${surname} |
fullname |
| store |
javascript{Math.round(Math.PI * 100) / 100} |
PI |
- storeValue
変数に入力フィールドのvalue を格納します。
(訳注)以下の例のように、type コマンドのバリューに変数に格納した値を使用することができます。
(書式)
| コマンド |
ターゲット |
バリュー |
| storeValue |
入力フィールドのelementLocator |
変数名 |
(例)
| storeValue |
userName |
userID |
| type |
userName |
${userID} |
- storeText
要素のテキスト文字列を変数に格納します。
(書式)
| コマンド |
ターゲット |
バリュー |
| storeText |
elementLocator |
変数名 |
(例)
| storeText |
currentDate |
expectedStartDate |
| verifyValue |
startDate |
${expectedStartDate} |
- storeAttribute
要素の属性値を変数に格納します。
(書式)
| コマンド |
ターゲット |
バリュー |
| storeAttribute |
elementLocator@属性名 |
なし |
(例)
| storeAttribute |
input1@class |
classOfInput1 |
| verifyAttribute |
input2@class |
${classOfInput1} |
- chooseCancelOnNextConfirmation
javascript が起動する次の確認ダイアログにおいてCancel ボタンをクリックするようSelenium に指示します。
デフォルトの動作では、確認(confirm)関数は正常終了し、手動でOK ボタンをクリックしたのと同じ結果になります。このコマンドを実行した後では、次の確認時にユーザがCancel ボタンをクリックするかのように振る舞います。
(書式)
| コマンド |
ターゲット |
バリュー |
| chooseCancelOnNextConfirmation |
なし |
なし |
(例)
| chooseCancelOnNextConfirmation |
|
|
- answerOnNextPrompt
次のプロンプトに対するレスポンスとして指定した文字列を返却するようSelenium に指示します。
(書式)
| コマンド |
ターゲット |
バリュー |
| answerOnNextPrompt |
返却する文字列 |
なし |
(例)
| answerOnNextPrompt |
Kangaroo |
|
コマンド Check編
Check コマンドはアプリケーションの状態を検証するために用いられます。これらはHTMLのform フィールドの値や、表示されているテキストや、現在のページのURL などをチェックするために使用することができます。
Selenium の全てのCheck コマンドは、"assert"と"verify"の2つのモードがあります。この2つは、"assert"が検証失敗時にテストを中止するのに対して、"verify"は検証失敗時もテストを続行するということ以外は同様に動作します。これによって、1つの"assert"でアプリケーションが正しいページにあることを確認した上で後続の"verify"コマンドでform フィールドのvalue やラベルなどの確認をまとめて実施することができます。
- assertLocation
(書式)
| コマンド |
ターゲット |
バリュー |
| assertLocation |
相対パス |
なし |
(例)
| verifyLocation |
/mypage |
|
| assertLocation |
/mypage |
|
- assertTitle
現在のページのタイトルを検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertTitle |
タイトル文字列pattern |
なし |
(例)
| verifyTitle |
My Page |
|
| assertTitle |
My Page |
|
- assertValue
入力フィールドの値(もしくは、value パラメータに関するその他なんでも)を検証します。
チェックボックス及びラジオボタン要素については、チェックが入っているかどうかによってvalue は"on"か"off"になります。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertValue |
入力フィールドのelementLocator |
値pattern |
(例)
| verifyValue |
nameField |
John Smith |
| assertValue |
document.forms[2].nameField |
John Smith |
- assertSelected
ドロップダウンにおいて選択されたoption がoption 識別子を満たすか検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertSelected |
select 要素のelementLocator |
option 識別子 |
(例)
| verifySelected |
dropdown2 |
John Smith |
| verifySelected |
dropdown2 |
value=js*123 |
| assertSelected |
document.forms[2].dropDown |
label=J* Smith |
| assertSelected |
document.forms[2].dropDown |
index=0 |
- assertSelectOptions
ドロップダウンにおける全てのoption のLabel をカンマ区切りのリストとして検証します。カンマは"\,"としてエスケープします。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertSelectOptions |
select 要素のelementLocator |
option のLabelのリスト |
(例)
| verifySelectOptions |
dropdown2 |
John Smith,Dave Bird |
| assertSelectOptions |
document.forms[2].dropDown |
Smith\, J,Bird\, D |
- assertText
要素のテキスト文字列を検証します。これはテキストを含む全ての要素に対して動作します。このコマンドは、描画されたテキストであれば要素のtextContent(Mozilla のようなブラウザ)でもinnerText(IE のようなブラウザ)でも扱うことができます。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertText |
elementLocator |
文字列pattern |
(例)
| verifyText |
statusMessage |
Successful |
| assertText |
//div[@id='foo']//h1 |
Successful |
- assertAttribute
要素の属性値を検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertAttribute |
elementLocator@要素名 |
値pattern |
(例)
| verifyAttribute |
txt1@class |
bigAndBold |
| assertAttribute |
document.images[0]@alt |
alt-text |
| verifyAttribute |
//img[@id='foo']/@alt |
alt-text |
- assertTextPresent
指定したテキスト文字列がユーザに見せる描画されたページにあるか検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertTextPresent |
検証する文字列(表示される文字列) |
なし |
(例)
| verifyTextPresent |
You are now logged in. |
|
| assertTextPresent |
You are now logged in. |
|
- assertTextNotPresent
指定したテキスト文字列が描画されたページのどこにもないことを検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertTextNotPresent |
検証する文字列(表示されない文字列) |
なし |
- assertElementPresent
指定した要素がページのどこかにあることを検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertElementPresent |
elementLocator(表示される要素) |
なし |
(例)
| verifyElementPresent |
submitButton |
|
| assertElementPresent |
//img[@alt='foo'] |
|
- assertElementNotPresent
指定した要素がページにないことを検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertElementNotPresent |
elementLocator(表示されない要素) |
なし |
(例)
| verifyElementNotPresent |
cancelButton |
|
| assertElementNotPresent |
cancelButton |
|
- assertTable
table 要素の指定したセルのテキストを検証します。
セルを指定する書式は"table 名.行.カラム"で、行とカラムは0 から数えます。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertTable |
検証対象のテーブル.行.カラム |
検証する文字列 |
(例)
| verifyTable |
myTable.1.6 |
Submitted |
| assertTable |
results.0.2 |
13 |
- assertVisible
指定した要素がページに存在し、且つ目に見えることを検証します。
ある要素はCSS の設定で該当要素そのものや原型となる要素に対して"visibility"プロパティを"hidden"にしたり"display"プロパティを"none"にすることで見えないように描画され得るのです。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertVisible |
elementLocator |
なし |
(例)
| verifyVisible |
postcode |
|
| assertVisible |
postcode |
|
- assertNotVisible
指定した要素が目に見えるものではないことを検証します。ページに存在しない要素は目に見えないものとみなされます。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertNotVisible |
elementLocator |
なし |
(例)
| verifyNotVisible |
postcode |
|
| assertNotVisible |
postcode |
|
- assertEditable
指定した要素が編集可能かどうか、即ちそれが入力の要素でかつ使用不能になっていないかを検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertEditable |
入力フィールドのelementLocator |
なし |
(例)
| verifyEditable |
shape |
|
| assertEditable |
colour |
|
- assertNotEditable
指定した要素が編集不可であるかどうか、即ちそれが入力の要素でないか、又は使用不能になっているかを検証します。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertNotEditable |
入力フィールドのelementLocator |
なし |
- assertAlert
指定したメッセージを持ったjavascript のアラートが発生したか検証します。アラートは発生した順番に検証されなければなりません。
アラートの検証は、手動でOK ボタンをクリックしたのと同じ効果があります。アラートが発生したけれども検証失敗した場合、Selenium の次の動作は失敗してしまうでしょう。
注)Selenium の元では、javascript のアラートは目に見えるアラートダイアログとしてポップアップしません。
注)Selenium は、ページのjavascript のonload()イベントハンドラによって発生するアラートはサポートしていません。この場合には、目に見えるダイアログが発生され、あなたが手動でOK ボタンをクリックするまでSelenium は停止してしまうでしょう。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertAlert |
メッセージpattern |
なし |
(例)
| verifyAlert |
Invalid Phone Number |
|
| assertAlert |
Invalid Phone Number |
|
- assertConfirmation
指定したメッセージを持ったjavascript の確認ダイアログが発生したか検証します。アラートと同様に、確認ダイアログは発生した順番に検証されなければなりません。
デフォルトの動作では、確認(confirm)関数は正常終了し、手動でOK ボタンをクリックしたのと同じ結果になります。この動作は chooseCancelOnNextConfirmation コマンド(上述)を先行して実行することで変更できます。確認ダイアログが発生したけれども検証失敗した場合、Selenium の次の動作は失敗してしまうでしょう。
注)Selenium の元では、javascript の確認ダイアログは目に見えるアラートダイアログとしてポップアップしません。
注)Selenium は、ページのjavascript のonload()イベントハンドラによって発生する確認ダイアログはサポートしていません。この場合には、目に見えるダイアログが発生され、あなたが手動でOK ボタンをクリックするまでSelenium は停止してしまうでしょう。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertConfirmation |
メッセージpattern |
なし |
(例)
| assertConfirmation |
Remove this user? |
|
| verifyConfirmation |
Are you sure? |
|
- assertPrompt
指定したメッセージを持つjavascript のプロンプトダイアログが発生したか検証します。アラートと同様に、プロンプトは発生した順番通りに検証されなければなりません。
プロンプトダイアログに対して首尾よく扱うためには answerOnNextPrompt コマンド(上述)を先行して実行しておく必要があります。プロンプトが発生したけれども検証失敗した場合、Selenium の次の動作は失敗するでしょう。
(書式)
| コマンド |
ターゲット |
バリュー |
| assertPrompt |
メッセージpattern |
なし |
(例)
| answerOnNextPrompt |
Joe |
|
| click |
id=delegate |
|
| verifyPrompt |
Delegate to who? |
|
パラメータの組み立てと変数
Selenium の全てのコマンドのパラメータは、単純な変数代入と、javascript の豊富な記述方法のどちらを使っても組み立てることができます。両方のメカニズムにおいて、先行して格納された変数にアクセスすることが可能です。但し、表記方法は異なります。
- 変数の格納
store コマンド、storeValue コマンド、storeText コマンドは、他のコマンドが後でアクセスするための変数に値を格納するために使用されます。内部的に、これらの変数は"storedVars"と呼ばれるmap に変数名をキーとして値と一緒に格納されます。
これらのコマンドについては上述のコマンドリファレンスを参照してください。
.
- 変数の代入
変数の代入は、先立って格納されてた変数をコマンドのパラーメータに含めるためのシンプルな方法です。やり方は単純で、代入したい変数を ${変数名} と指定すればよいのです。複数の変数を代入することができ、静的なテキストと一緒に混ぜて使用することもできます。
(例)
| store |
Mr |
title |
| storeValue |
nameField |
surname |
| store |
${title} ${surname} |
fullname |
| type |
textElement |
Full name is: ${fullname} |
- Javascript評価
Javascript 評価は、コマンドのパラメータを組み立てるにあたってjavascript の機能を使うことができます。このメカニズムを使用するためには、パラメータの値全体を「javascript{ 」と「} 」で囲まなければなりません。大括弧{} 内のテキストはjavascript 表現として評価され、上述したstoredVars というmap を用いることで先行して格納された変数にアクセスすることができます。変数代入はjavascript 評価と一緒に用いることはできないことに注意してください。
(例)
| store |
javascript{'merchant' + (newDate()).getTime()} |
merchantId |
| type |
textElement |
javascript{storedVars['merchantId'].toUpperCase()} |
Selenium の拡張
あなた独自のAction コマンドやCheck コマンド、elementLocator を追加して、Selenium の拡張を行うことは非常にシンプルに実施が可能です。
これはjavascript にSelenium オブジェクトのプロトタイプとPageBot オブジェクトのプロトタイプのメソッドを追加することで実施されます。
Selenium は起動時に、これらのプロトタイプのメソッドを自動的に見に行き、メソッド名のパターンによってそれがAction か、Check か、Locator かを認識します。
以下にjavascript を使ってSelenium をどのように拡張するかを指示する例を示します。
- Action コマンド
doFoo メソッドをAction コマンドとしてSelenium プロトタイプに追加すると、foo コマンドとして登録されると同時に、fooAndWait コマンドとしても登録されます。
Action コマンド用のメソッドは2つまでのパラメータを持つことができ、テストケースの2 番目及び3 番目のカラムの値が渡されます。
(例)
テキストボックスに2回入力を行う"typeRepeated"コマンドを追加します。
.
"typeRepeated"コマンドの追加
Selenium.prototype.doTypeRepeated = function(locator, text) {
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);
// Create the text to type
var valueToType = text + text;
// Replace the element text with the new text
this.page().replaceText(element, valueToType);
};
- Checkコマンド
assertFoo メソッドをCheck コマンドとしてSelenium プロトタイプに追加すると、assertFoo コマンドとverifyFoo コマンドとして登録されます。
assert メソッドは2つまでのパラメータを持つことができ、テストケースの2 番目及び3番目のカラムの値が渡されます。
(例)
"assertValueRepeated"メソッドを追加します。これは要素の値(value)が指定されたテキストの繰り返しから成り立っているかを確認するものです。
テストにおいてはassertValueRepeated とverifyValueRepeated という2つのコマンドが使用可能となります。
.
"assertValueRepeated"コマンドの追加
Selenium.prototype.assertValueRepeated = function(locator, text) {
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);
// Create the text to verify
var expectedValue = text + text;
// Get the actual element value
var actualValue = element.value;
// Make sure the actual value matches the expected
this.assertMatches(expectedValue, actualValue);
};
- ElementLocator
locateElementByFoo メソッドをelementLocator としてPageBot プロトタイプに追加します。
elementLocator は2つのパラメータを持ち、1 番目は場所を示す文字列(プレフィックスに"-"を持ちます)、2 番目は検索対象のドキュメントです。
(例)
属性の値が繰り返されている要素を見つける"valuerepeated="というElementLocator を追加します。
.
"valuerepated= " elementLocator の追加
// The "inDocument" is a the document you are searching.
PageBot.prototype.locateElementByValueRepeated = function(text, inDocument) {
// Create the text to search for
var expectedValue = text + text;
// Loop through all elements, looking for ones that have
// a value === our expected value
var allElements = inDocument.getElementsByTagName("*");
for (var i = 0; i < allElements.length; i++) {
var testElement = allElements[i];
if (testElement.value && testElement.value === expectedValue) {
return testElement;
}
}
return null;
};
- user-extensions.js
Selenium はデフォルトで"user-extension.js"と呼ばれるファイルを探して、そのファイル内のjavascript コードを読み込みます。このファイルによって、Selenium の中核のソースコードを修正することなく、機能追加を簡単に行うことができます。
.
標準の配布状態では、このファイルは存在していません。ユーザーはこのファイルを作成して独自の拡張コードを記述することができます。Selenium のソース自体を修正する必要がなく、うまくいけばアップグレードの手助けをすることができるのです。
 | welcome
このページの日本語訳を追加または修正してください。 |