2014年8月19日火曜日

3.Seleniumコマンド

3.Seleniumコマンド
ここでは、主に使用するコマンドについて説明する。また、Selenium2に移行する為の留意点についても説明する。

公式Seleniumコマンドリファレンス

●  コマンドのフォーマットについて、次の様に記述する
コマンド名( 対象フィールドの内容,値フィールドの内容 

●  説明を読み易くする為、スペースが入っている箇所があるが、入力に必要では無い。

3.1.  locator

リファレンスでは、ほとんどのコマンドの対象フィールドにlocatorを記述するようになっている。このlocatorとは、コマンドが対象とする要素を言う。

要素の記述について主なものを下記に示す。

Seleniumコマンドで動作した書き方であったとしても、Selenium2に移行した際、エラーになることがある。エラーとなった場合は、xpath, cssを使用してみるとよい。

●  id, name 属性がある場合
id=id
例.id=tab-address
name=name
例.name=submit

●  <a>タグの場合
"link=" リンク先を示す文字列
例.link=受信アカウント

●  xpathでの記述
"xpath=//" の後に対象要素への位置を記述する
例.
xpath=//input[@type='text' and @name='loginid']
xpath=//div[@id='nmbxTree_710']//span[@class='nodeLeaf leafWrap']//span[@class='node']

"xpath=" は省略することができる
例.//tbody[@id='form_rcv_servername']/tr[2]/td

●  cssでの記述
css=cssセレクタ
例.
css=div[name="account"]
css=a[name="logout"] > div.ui-sprite-inner > span.ui-sprite-label

SeleniumIDEの自動記録・コンテキストメニューでは、ほとんどの場合、cssを使用した記述を出力している。
ただし、Selenium2に移行した際、cssはエラーになることがある。特にInternetExplorerでエラーになりやすい。エラーになった場合は、xpathでの記述に変更するとよい。

3.2.  操作系コマンド

ページに対してクリックや入力等の操作を行うコマンドについて主なものを説明する。

echo ( message )
ログにメッセージを出力する。
例.
echo ( 1.1.1 登録されているグループにアクセスできる )

break ()
SeleniumIDEでテストケースを実行する際、breakコマンドで一時停止する。再開は、[アクション]メニューの一時停止/再開またはアイコンメニューの一時停止/再開ボタンで行う。

open ( url )
対象URLへアクセスする。
例.

type ( locator, value )
locatorvalueを入力する。
例.
type ( name=loginid, test )

click ( locator )
指定のlocatorをクリックする。
例.
click ( name=submit )

select ( selectLocator, optionLocator )
ドロップダウンメニューを選択する。option属性を持つlocatorが対象である。
selectLocator :対象要素
optionLocator : 選択する項目
例.
select ( name=fontsize, label= )

selectWindow( windowID )
 ウィンドウを移動する。
windowIDには、ウィンドウのタイトル,title=タイトル名,name= JavaScriptによるnamevar= JavaScriptによる variable nameのいずれかを指定する。
nullを指定した場合、現在のウィンドウを示す。他のウィンドウに移動後、元のウィンドウに戻った場合に、selectWindow( null )を実行する。Seleniumはウィンドウの移動を内部で認識できないようである。

selectPopUp( windowID )
 ポップアップウィンドウに移動する。
例.
selectPopUp (メールの返信 )

focus( locator )
 指定の要素にフォーカスを当てる。
例.
focus( //div[@id='lbxdata'] )

shiftKeyDown() / shiftKeyUp()
 シフトキーを押す/離す

keyDown( locator, keySequence )
 キーを押す
例.
 スペースを押す keyDown( //div[@id='lbxdata'], 32 )

3.3.  waitFor系コマンド

ページや要素のロードを待つコマンドである。待つ時間は、timeoutで指定する。時間はmsecである。timeoutの間にロードできない場合、エラーとなる。エラーになってもテストケースは続行する。


waitForPageToLoad ( timeout )
指定のtimeoutの間、ページのロードを待つ。
例.
waitForPageToLoad ( 5000 )

waitForTitle( pattern )
patternの示すタイトルのロードを待つ。
例.
waitForTitle( xgate4 )

patternとは、認識させたい文字列を言い、パターン指定にはグロビング  正規表現  完全一致  3 つの種類がある。詳しくは、リファレンスを参照。
例.「新着メールが2件あります」や「受信箱(3)」のように変化する文字列
verifyTextPresent regexp:新着メールが [0-9]{1,9} 件あります。
clicklink=regexp:受信箱*
clicklink=regexp:受信箱\\([0-9]{1,9}\\)

waitForElementPresent ( locator )
指定要素が現在のページ上にロードされることを待つ。
例.
waitForElementPresent ( name=loginid )

waitForText ( locator, pattern )
patternを持つ指定要素が現在のページ上にロードされることを待つ。
例.
waitForText ( id=tab-mail, 受信箱 )

waitForValue ( locator, pattern )
patternの値になっている指定要素が現在のページ上にロードされることを待つ。
例.
waitForValue( name=replyself_action, on )

waitForSelectOptions ( selectLocator, pattern )
patternの値を持つselect要素が現在のページ上にロードされることを待つ。
例.
waitForSelectOptions( name=check_interval, regexp:[1,3,5,10,15,20] )


◆   Not指定
waitForNotを付加すると、指定要素がロードされていないことを待つ。
例えば、waitForNotText ( id=tab-mail, 受信箱 )とすると"受信箱"という文字列がない指定要素がロードされるのを待つ。

3.4.  assert系コマンド

waitForPageToLoad以外のwaitFor系コマンドはassert系コマンドとして使用できる。
assert系コマンドでエラーになった場合、テストケースは終了する。
例.
assertTitle( xgate4 )
assertNotTitle( xgate5 )

3.5.  verify系コマンド

waitForPageToLoad以外のwaitFor系コマンドはverify系コマンドとして使用できる。
verify系コマンドでエラーになってもテストケースを続行する。
例.
verifyTitle( xgate4 )
verifyNotTitle( xgate5 )

3.6.  AndWait系コマンド

操作コマンドにAndWaitを付加したコマンドがいくつかある。これらAndWait系コマンドは、操作によりページ移動が発生する場合に使用される。
主なAndWait系コマンドとして、clickAndWait, selectAndWait, typeAndWaitがある。
SeleniumIDEでは、自動記録を使用すると、AndWait系コマンドを出力することが多い。シンプルなページに対しては有効であるが、シングルページアプリケーションでは上手く動作しないことが多い為、AndWait系コマンドは推奨しない。
同等な操作をする場合、操作コマンドとページ移動を待つコマンド(waitForPageToLoad)を分けて使用することを推奨する。

例.clickAndWait ( locator )
ページ移動が発生するlocatorをクリックする。
ページの移動が完了するまでSeleniumは設定タイムアウト時間、処理を待つ。

3.7.  store系コマンド

Selenium変数を扱うコマンドである。また、waitFor系,assert系,verify系のほとんどのコマンドで対象にする要素の情報を取得し、変数にセットする。
例えば、waiForTextassetTextverifyTextで対象にするTextstoreTextコマンドで取得できる。


➢   変数の使い方
変数は、${ } で囲んで使用する。
JavaScript形式で使用する場合は、storedVars[' ']で囲んで使用する。
使用例は、下記。


➢   任意の値を変数にセットする

store ( expression, variableName )
expression : 変数にセットする値
variableName  : 変数名
使用例.
store ( test, userID )
type ( name=id, ${userID} )

storeEval ( script, variableName )
script: JavaScriptで変数にセットする値を記述する
variableName  : 変数名
使用例.
store ( Edith Wharton, name )
storeEval ( storedVars['name'].toUpperCase(), uc )
echo ( ${uc} )


➢   対象要素の情報を取得する

storeText ( locator, variableName )
 指定要素の持つテキストを変数にセットする。
例.
storeText ( id=allow_ip, ipaddr ) 
storeText ( css=div.el-label, s_signame )
storeText ( xpath=//div[@id='lbxdata']//div//div//span[4], subject )

storeValue ( locator, variableName )
 <input>タグに入力されている値またはvalue属性の値を変数にセットする。
例.
storeValue ( name=qmark, quoatmark )

storeTextPresent ( pattern, variableName )
指定テキストが現ページに存在するか検証行い、その結果をテキストでtruefalseをセットする。
使用例.
 storeTextで取得した題名に返信時の引用符が付加されているかの検証結果を変数fにセットする。
storeText ( xpath=//div[@id='lbxdata']//div//div//span[4], subject )
storeValue ( name=qmark, quoatmark )
storeTextPresent ( ${quoatmark} ${subject}, f )
*検証テキストは「題名」の為、${quoatmark}${subject}との間にある半角スペースがある。

storeElementPresent ( locator, variableName )
指定要素が現ページに存在するか検証を行い、その結果テキストでtruefalseを変数にセットする。
使用例.
storeElementPresent ( css=img.ui-sprite.sp-mail, flg1 )

storeXpathCount ( xpath, variableName )
指定xpathの数を変数にセットする。
使用例.
storeXpathCount ( xpath=//a[@name='delete']//div[@class='ui-act-inner']//span[@class='ui-act-label'], xcnt )

3.8.  その他コマンド

captureEntirePageScreenshot ( filename )
現在、表示しているページのイメージをpngファイルで出力する。
filename : ファイル名、パス指定もできる
SeleniumIDEでのみ使用可能。マルチブラウザ対応は後述。
例.
captureEntirePageScreenshot( ${captureFolder}211.png )

pause ( waitTime ) 
SeleniumwaitTime時間、一時停止する。
captureEntirePageScreenshotコマンドやページ移動を行う際には、Seleniumの実行時間より画面キャプチャやブラウザの実行時間の方が遅い為、pauseコマンドで一時停止するとよい。

setTimeout ( timeout )
openコマンドやwaitFor系コマンドの実行時間を設定する。
デフォルトは30000msec
実行時の環境によって実行時間が不足する場合に使用するとよい。

上に戻る

0 件のコメント:

コメントを投稿