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 の要素全般に対して使える方法です。
- id
書式 id=id 属性値 id 属性で指定された要素を選択します。
- name
書式 name=name 属性値 name 属性で指定された要素のうち、最初に合致したものを選択します。
- identifier
書式 identifier=id 属性値またはname 属性値 id 属性で指定された要素を選択し、id 属性で合致するものがなければname 属性で指定された要素のうち最初に合致したものを選択します。
- dom
書式 dom=javascript 表現法 HTML DocumentObjectModel(DOM)のJavascript Traversal モジュールを使って要素を見つけます。javascript 表現法で指定するDOM のロケータは"document."で始まらなければなりません。
(例)
dom=document.forms['myForm'].myDropdown
dom=document.images[56]
.
- xpath
書式 xpath=xpath 表現 XPath 表現を使用して要素の場所を特定します。XPath 表現は"//"で始まらなければなりません。
(例)
xpath=//img[@alt='The image alt text']
xpath=//table[@id='table1']//tr[4]/td[2]
.
- link
書式 link=リンクの文字列pattern 指定された文字列pattern と合致するテキストを含むリンク(anchor)要素を選択します。
(例)
link=The link text
.
ElementLocator のprefix("xxx=")が無い場合、Selenium は以下のものと解釈して動作します。
| "document."から始まっている場合 | dom=と解釈して動作 |
| "//"から始まっている場合 | xpath=と解釈して動作 |
| それ以外 | identifier=と解釈して動作 |
Select Option Specifiers
SelectOption 指示子はHTML のSelect 要素のoption を指定するいくつかの方法を提供します。例えば、特定のoption を選択したり、選択されたoption が仕様を満たしているかどうかを検証するための方法です。SelectOption 指示子にはいくつかの形式があります。
- label
書式 label=ラベルの文字列pattern option のlabel 属性、即ち表示されている文字列を基にマッチングします。
(例)
label=regexp:^[Oo]ther
- value
書式 value=value の文字列pattern option のvalue 属性を基にマッチングします。
(例)
value=other
- id
書式 id=id 属性値 option のid 属性を基にマッチングします。
(例)
id=option1
- index
書式 index=index 値 option のインデックス(ゼロから開始)でマッチングします。
(例)
index=2
prefix(xxx=)が無い場合、デフォルトの動作はlabel に対してのみマッチングします。
String-match Patterns
文字列のマッチングとして、様々なpattern 構文が利用可能です。
- glob
書式 glob:pattern "glob"パターン(別名"wildmat"パターン)での文字列マッチングです。"Glob"は一種の定正規表現で、コマンドラインシェルで典型的に使用されます。"*"は任意の複数の文字を表し、"?"は任意の1 文字を表します。Glob パターンは文字列全体に対してマッチングます。
- regexp
書式 regexp:正規表現 正規表現を用いた文字列マッチングです。JavaScript の正規表現をフルに使用可能です。
- exact
書式 exact:文字列 ワイルドカードを使用せずに、正確に同一の文字列マッチングを行います。
prefix("xxx:")が無い場合、Selenium は"glob"パターンであると仮定して動作します。
コマンド Action編
Action はアプリケーションに対して何らかの動作を行うようにSelenium に指示します。一般にこれらはユーザが行う何らかの動作を表します。
多くのAction コマンドは"AndWait"接尾語を付けることができます。この接尾語は「Action を実行した後、ブラウザがサーバに通信を行って新しいページがロードされるの(次のコマンドを実行せずに)待つ」という意味です。この動作様式に対する例外は"open"コマンドで、デフォルトの動作でページがロードされるのを待ちます。
(※訳注:原文では"open"と"click"となっていますが、"open"だけの誤記だそうです)
- open
TestRunner のtest frame にて、指定したURL を開きます。相対パス又は絶対パスの両者とも指定可能です。
注)ブラウザにおけるセキュリティ制限(クロスサイトスクリプティング対策)の為、URLはSelenium と同じサイト上になければなりません。
(書式)コマンド ターゲット バリュー open url なし (例)
open /mypage open http://localhost/
- click/clickAndWait
リンク、ボタン、チェックボックス、ラジオボタンをクリックします。
通常のリンクのようにクリックすると新たなページに遷移する場合は、"clickAndWait"を使用して下さい。
(書式)コマンド ターゲット バリュー click クリックする要素のelementLocator なし (例)
click aCheckbox clickAndWait submitButton clickAndWait anyLink (注)Selenium は、alert()メソッド又はconfirm()メソッドによって出現したポップアップダイアログに対して、常に自動的にクリックします。(例外はSelenium が操作する前に"onload"中にポップアップが出現した場合です)
あなたがポップアップダイアログを期待しているかどうかをSelenium に対して指示するためにはverify(assert)Alert コマンド又はverify(assert)Confirmation コマンドを使用しなければなりません。あなたは次の確認ダイアログにおいて"OK"をクリックするかわりに"cancel"をクリックするためにchooseCancelOnNextConfirmation コマンドを使用することもできます。
- 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 なし なし (例)
goBack
- close
ポップアップしたウィンドウのタイトルバーで"閉じる"ボタンをクリックすることをシミュレートします。
(書式)
(書式)コマンド ターゲット バリュー close なし なし (例)
close
- pause
テストスクリプトの実行を特定時間ポーズします。これはスクリプトのデバッグや、サーバーサイドの何らかのアクションを待つ場合に有効です。
(書式)コマンド ターゲット バリュー pause ミリ秒 なし (例)
pause 2000 pause 5000
- 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 このページの日本語訳を追加または修正してください。 |
