Selenium IDE を使っていると操作を記録させて即実行できるれば良いが、修正が必要なものも多い。
そんな時によく、あれってどうだったっけ?を見返すために残しています。
Selenium IDE をタブで開く場合のURL
Chrome の拡張機能として Selenium IDE を起ち上げると新しいウィンドウが開いて煩わしいので、下記のURLをブックマークしておいてタブで開くようにする。
chrome-extension://mooikfkahbdckldjjndioackbalphokd/index.html#
ターゲットの指定方法
基本的に //*[] の形は xpath= を入れないと Warning が出るので注意。
- xpath=//*[@id=”example”]/div ※xpath=を忘れると Warning がでる
- xpath=//*[@class=”example”][2]/div
- //*[@class=”example”][1] は、//*[@class=”example”] の形で省略可能 ※基本的に1番目の指定は省略可能?
- class=”example example2″ とは区別される。この時、//*[@class=”example”]と指定しても認識しない。CSSだと .example で認識されるので、勘違いしがち。
- xpath=//*[text()=”テキスト内容”] ※wait for element present などで使う。
- linkText=リンクテキスト
- partialLinkText=リンクテキスト ※リンクの部分一致
- css
- css=#example ※clickでは使える store xpath count では使えない?
- css=.example ※clickでは使える store xpath count では使えない?
- css=.example:nth-child(2) ※2番目の .example 要素を指定。CSSでも同様に使える。
- css=form ※試してないないがおそらく使える。
- css=li:nth-child(${num}) > .example
- css=a:nth-child(2) > img ※nth-child(num)[スペース]>[スペース][配下の要素] ※CSSと同じ書き方
- name=example
- partialLinkText=ケンノート ※リンクの
数値を文字列と認識してしまう問題
解決方法は2パターンある
- 計算式の先頭に+を付ける > +${cnt}+1
- 数値型に変換する > parseInt(${cnt})+1
Select の指定方法
- Command : select
- Target : XXX/YYY/select ※select までのパス
- Value : label=XXXX ※option のラベルに書かれている選択項目を書く。
文字列操作関連
store 関連のコマンドなどで格納した文字列を置換などで操作をしたいとき。
カンマ付き数値のカンマ除去
- カンマを除去する関数を定義
- Command : execute script
- Target : getVal=function(str){return str.replace(/,/g, ”);} ※/g 繰り返しマッチ
- 文字を置換
- Command : execute script
- Target : return getVal(${val});
- Value : val
カンマ付き数値+円形式のカンマと円の除去
- カンマと円を除去する関数を定義
- Command : execute script
- Target : getVal=function(str){return str.replace(/,|円/g, ”);} ※パターンが複数の時は | で区切る
- 文字を置換
- Command : execute script
- Target : return getVal(${val});
- Value : val
文字列置換
- 文字を置換する関数を定義
- Command : execute script
- Target : getVal=function(str){return str.replace(‘example’, ‘example2’);} ※先頭文字しか置換されないので注意。
- 文字を置換
- Command : execute script
- Target : return getVal(${val});
- Value : val
文字検索
- 文字列を検索する関数を定義
- Command : execute script
- Target : chkTxt=function(txt){if(txt.search(‘検索文字’)!=-1){return true;}return false;}
- 検索結果を返す。あった場合 ture、なかった場合 false。
- Command : execute script
- Target : return chkTxt(${val});
- Value : val
日付取得
- 曜日取得 > 返り値(0 : 日曜 ~ 6 : 土曜)
- 曜日を取得したい場合
- Command : execute script
- Target : return (new Date().getDate());
- Value : val
- IF で判定に使いたい場合
- Command : if
- Target : (new Date().getDay())==0 ※判定部分は任意で指定
- 曜日を取得したい場合
カレントURL取得
- Command : execute script
- Target : return location.href
画面スクロール
- Command : run script
- Target : window.scrollBy(0, 1300); ※第2引数が縦方向のスクロール幅。
確認ダイアログが出たときに止まる対応
- Command に choose ok on next confirmation を入力 ※choose cancel on next confirmation もある。
if ~ else の if文の中に if文や while文を入れると誤作動を起こす
if ~ else の形式の if文の中に if文や while文をネストするとネストされた if文と遂になっている else の中も通ってしまう。
判定を明確にするために else を else if にして 明示的に else の条件を表記する。
Test suites にテストを追加しようとするとき、Select tests のリストにスクロールが表示されない
Test suites 画面に作った 個別の suite に Add tests でテストを追加しようとすると、Select tests のダイアログが表示されるが、このダイアログにスクロールが表示されない。以前は表示されていたがいつのまにか表示されなくなった。
検索ボックスでフィルタをかけると絞ることはできるので、全テストが表示されなくても追加できるが、取りこぼしがないかチェックできないので不便。
コメント