ラベル SeleniumIDE の投稿を表示しています。 すべての投稿を表示
ラベル SeleniumIDE の投稿を表示しています。 すべての投稿を表示

2014年10月23日木曜日

IDEのコメント入力はログに出力しない-echoコマンドを使います

Selenium IDEに[コメントを挿入]とあるが、このコメントはログに出力しないので、
ログに出力したいコメントは、echoコマンドを使ってください


コメントを入力したい箇所で、右クリックメニューを表示し、[コメントを挿入]を選択


コメント入力行が選択行の上に入るので、そこでコメントを入力


このSeleniumスクリプトを実行すると、コメントはログタブに出力していないことが分かります
コメントをログに出力したい場合は、echoコマンドを使ってください




2014年10月20日月曜日

Javascriptを知っていれば、結構、記述できます

Javascriptを知っていて、storeExpressionコマンドとstoreEvalコマンドを活用すると結構、記述できます

例えば、下の[個人アドレス帳 - すべて]からAグループ、Bグループ、Cグループを削除したい場合、


フロー制御で1つずつ指定して[グループの削除]をクリックする時、
どうやって各グループを指定しようか?と考えます
そこで、
storeExpressionコマンドで対象にするグループ名を取得します

storeExpression  javascript
            { selenium.getText( "//div[@id='dtree-adrTree']/div[@class='clip']/div["
                          + storedVars['no']
                          + "]" ) 
            }
            w
変数wに変数noの示す文字列を取得します
これを使用して、削除対象にする要素のindexを得ます

削除対象のindexを使って、グループ削除を指定するために右クリックメニューを表示します
storeEvalコマンドを使って、contextMenuAtコマンドのlocatorを作成します

storeEval  javascript
        { var s = "//div[@id='dtree-adrTree']/div[@class='clip']/div["
              + storedVars['no']
              + "]";
          storedVars['w'] = s; 
        }
        f
これで、
  contextMenuAt  ${w}  80,120
を実行します
実際のコードは、
  contextMenuAt //div[@id='dtree-adrTree']/div[@class='clip']/div[2]  80,120
を実行しています



storeEvalコマンドを実行すると、ログに
  script is: //div[@id='dtree-adrTree']/div[@class='clip']/div[1] 
を出力します

2014年10月9日木曜日

IDEを他のブラウザで動作させる

Selenium IDEをChromeやIEで動作せることが、一応、できます
一応というのは、多少の制約があります

まずは、動作の手順を...

Step1.SeleniumIDEのオプションで、WebDriver使用を設定しておきます

 SeleniumIDEのメニューからオプションウィンドウのWebDriverタブで設定します

 Enable WebDriver Playbackにチェックを入れ、ブラウザを指定します



Step2.Selenium ServerとWebDriverをコマンドラインから起動します

IEの場合
java -jar selenium-server-standalone-2.43.0.jar -Dwebdriver.ie.driver=.\IEDriverServer.exe

Chromeの場合
java -jar selenium-server-standalone-2.43.0.jar -Dwebdriver.chrome.driver=.\chromedriver.exe

例.Chrome指定で起動すると下のようにメッセージを出力してSeleniumIDEの実行を待ちます





























Step3.SeleniumIDEでテストケースを実行します

例えば、

実行すると、



多少の制約とは...

  1. テストケース毎にブラウザを起動しますので、直前のテスト結果を利用してのテストを行いにくくなります
     テストケース毎に起動するブラウザは、closeコマンドで終了させることができます
  2. 画面キャプチャ captureEntirePageScreenshotコマンドはエラーになります
     JavaSrciptを記述できるので画面キャプチャできる実行ファイル(.exeとか)を作成して呼び出すような対処をすると良いかなと思います
  3. 実行前にSeleniumコマンドを修正・追加などを行うことはできますが、実行した後にSeleniumコマンドを修正・追加して実行はできません
     一度、終了してから実行するようになります

あと、気になるとしたら...
  1. 変数はテストケースを越えて使用できます
  2. ログファイルへの出力はFireFoxと同じ様にできます


2014年10月7日火曜日

classに含まれている要素を調べる - ロケーション指定

太字になっているとか、スターが付いているとか付いていないとかを知るには、セレクタcontainsで要素がclass指定に含まれているか調べます

例えば、テストメール14が、未読の場合は太字になっています



ページは
<div style="min-width: 776px;" id="msg-123" class="ui-ll clickable ll-even unseen">
と記述しています
classの.ui-ll.unseenが太字になります

エラーメッセージを出力したいので、storeElementPresentコマンドを使いました
storeElementPresent xpath=//div[@id='lbxdata']/div[1][contains(@class,'unseen')] flg

太字(未読)であれば、変数flgにtrue, 既読であればfalseをセットします


2014年10月3日金曜日

配列で扱いたいとき

メニュー項目の確認では、配列で扱いたいときがあります

例えば、移動メニューでは下の様に配列のindexを使って指定します

[1]の項目は、[1]をつけなくても[1]と扱われます



mouseDownの後にmouseUpしないと

チェックボックスにチェックすることでメールを選択するために mouseDownコマンドを使用しました
mouseDownだけでは下の様になります



このままにしたくない場合は、mouseUpコマンドを実行します

2014年10月2日木曜日

ドラッグ&ドロップで移動するとき

メール一覧から、選択したメールをアーカイブフォルダに移動するときのSeleniumコマンドを下の手順で実行します

 ドラッグ&ドロップは、dragAndDropToObjectコマンドを使います

 ただし、対象は選択しておく必要があるようです


 *ブラウザの実行を待つために、pauseコマンドは必要です

チェックボックスをclickできない場合

チェックボックスへのチェックのON/OFFは、check/uncheckコマンドやclickコマンドを使用するが、
エラーにはならないが、チェックできない場合があったので、mouseDownコマンドを使用しました

  mouseDown //div[@id='lbxdata']/div/div/span[@name='checker']





2014年9月30日火曜日

コンテキストメニューの操作 ( contextMenu / contextMenuAt )

コンテキストメニューを指定したい場合、contextMenu / contextMenuAtコマンドを使います

例えば、受信箱のコンテキストメニューを指定したい場合、

  contextMenu //div[@id='dtree-mbxTree']/div[2]/div[1] 

を実行すると下の様にコンテキストメニューを表示します




ここで、例えば「フォルダを空にする」をクリックして実行します
    
  click //div[@id='popupmenu']/div[5]/span[2]


上の図のようにコンテキストメニューをウィンドウの左端上に表示します
これは、contextMenuAtコマンドで任意の位置に表示できます

例えば、

 contextMenuAt //div[@id='dtree-mbxTree']/div[2]/div[1] 80,120

と指定すると下の位置に表示します




2014年9月18日木曜日

チェックボックスをクリックする

一覧表示している項目のチェックボックスをクリックしたいとき

例えば、受信箱の一覧表示しているメールの1つで・・・

SeleniumIDEでは、

先頭にフォーカスを当てる場合、focusコマンド、keyコマンドとshiftKeyDown/shiftKeyUpコマンドを組み合わるとチェックONにできます


         ↓

 keyDownコマンドの\32は、スペースキーを押下しています

         ↓



マルチブラウザ対応では、
 
FireFoxではOKでしたが、IEとChromeではNGとなったので、変換コードを下の様に変更しました

if( param.browsertype.equalsIgnoreCase(Consts.TYPEFX) )
{
//FireFoxでは、変換コードそのまま
selenium.focus("//div[@id='lbxdata']");
selenium.shiftKeyDown();
selenium.keyDown("//div[@id='lbxdata']", "\\32");
selenium.shiftKeyUp();
}
else
{
//IEとChromeでは、チェックボックスがOFFの場合にクリックするようにしています
if( !selenium.isElementPresent("xpath=//div[@id='lbxdata']//div[@class='ui-ll clickable ll-even recent ll-selected']") )
{
selenium.click("xpath=//div[@id='lbxdata']//div//div//span");
}
}


2014年9月17日水曜日

selectPopUpコマンド- storeAllWindowTitlesコマンド

メインウィンドウからメール作成ウィンドウを表示すると、Seleniumの方でターゲットウィンドウを自動的に認識しないので、selectPopUpコマンドを実行しています

selectPopUpコマンドで、windowIDを指定します
windowIDが分からないときは、ウィンドウのタイトルを指定できます

例えば、メール作成ウィンドウのタイトルが「メールの作成」の場合

  selectPopUp  メールの作成


 ウィンドウのタイトルは、storeAllWindowTitlesコマンドで取得できます
このコマンドでターゲットウィンドウのタイトルを確認します

メールの作成ウィンドウを表示した後にstoreAllWindowTitlesコマンドを実行すると

  xgate4: 受信箱,メールの作成

のように、「,」カンマ区切りで変数にセットします

SELECTのOPTIONの確認-waitForSelectOptions

<select name="protocol">
 <option value="pop">POP </option>
 <option value="imap">IMAP </option>
</select>
のoptionタグの検証は、
 waitForSelectOptions  name=protocol  regexp:[POP,IMAP]
の様にしています

regexp: については、公式サイト 日本語版:テキストパターンの一致、英語版:Matching Text Patterns を参照してください


2014年9月16日火曜日

セレクトボックスで選択している項目を確認する - SELECTタグ

セレクトボックスで選択表示している項目を確認するとき、storeSelectedValueコマンドを使用して、選択項目を検証しました。

例えば、一覧リストの表示行数が25行になっていることを確認したい場合、



Seleniumコマンドソース


チェックボックスの確認

チェックボックスの確認は、waitForValue, storeValue などValueを検証するコマンドを使用します。


右ボタンメニューを利用すると便利です。

チェックが無い場合は、off  チェックのある場合は、on です。

動的に変化するメニューで・・・

例えば、タグの管理で、タグの登録が全くない場合、メニューの「タグ」をクリックで直ぐに「タグの管理」ウィンドウを表示しますが、



登録した場合、サブメニューを表示します。


サブメニュー表示の有無をstoreElementPresentコマンドで判定しました。
storeElementPresentコマンドは、存在の有無をtrue/falseで返します。
判定結果をアドオンのフロー制御を使用して次に移行するようにしました。

例えば、タグの全削除するSeleniumコマンドソースにて扱いを説明します。



[Enter]キーの確認

シンプルなサイトでは、Enterキーはキーコードを指定できます

keyPressコマンドを使用します

    keyPress  name=submit  \13

ただし、サイトのソースによっては効かない場合もあります
それは、またオイオイ・・・

アイコンの確認

例えば、メニューに表示しているアイコンの確認をする時



例えば、メニューの「作成」のアイコンで右クリックすると、右クリックメニューに[css=img.ui-sprite.sp-editmail]をwaitForText, storeForText・・・で検証するコマンド一覧が出力されるので、この中から選択します


ただし、右クリックメニューに独自にメニューを設定している場合は、インスペクタなどを使用して自分で要素を指定します。

例えば、フォルダ一覧の「受信箱」で右クリックすると、下の様に独自メニューがあるので、インスペクタで要素を調べて指定します。

インスペクタで調べて下のコマンドで検証しました。

waitForElementPresent xpath=//div[@id='nmbxTree_710']//span[@class='nodeLeaf leafWrap']//i[@class='leaf' and @style='background-image:url(../images/tr_inbox.png);']