Outline
検索、リスティングページで、探したい要素が任意のpageにあるとする。
任意というのは、テストの実行毎にことなるpageに表示されるという意味である。
この場合、テスト自動化では、固定ページの要素を見つけるという処理では、テストは成功するときもあれば、失敗するときもある。
このため、要素が見つかるまでページ送りを考えたくなる。
今回、この実装の考え方、実装に関して解説する
テスト対象
qbookの記事一覧から、一つの記事をさがしだし、クリックする
アクセスしたページに該当記事がなかったら、ページャーの”次”ボタンをクリックする
これを一定回数繰り返す(上限を設定するのは、数百ページとかある場合、もし記事が存在しない時に、数百ページのページング処理を繰り返すため、失敗するまでのテスト時間がかかってしまうからである。)
技術的な情報
robot frameworkの
- FOR-END文でループする
- Exist For Loop IF 文で条件を満たしたら(対象の要素が見つかったら)ループを抜ける
- Run Keyword And Return Status 文で、条件文(要素が存在するか)の結果を取り出します。この時、Falseになってもテストは継続します
FOR ${i} IN RANGE 10
${IS_ELEMENT_EXISTANCE} = Run Keyword And Return Status XXXXX
Exit For Loop IF ${IS_ELEMENT_EXISTANCE}
yyyyy
END
T-DASH
カスタム動作
以下設定内容を Pager.yamlのファイル名で保存する
ACT-CAT-CUSTOM-f7057005-3f12-4487-a156-cf06ae8d61e3:
action_category_name: Pager
icon: ''
color: '#e21628'
custom_data:
file_name: Pager
pip_list: []
library_list: []
actions:
ACT-CUSTOM-aadb1f56-1bbe-48f0-9bd6-dfba00166de5:
action_name: 見つかるまで次のページをクリックする
action_type: operation
action_format: 「画面名」「要素名」が見つかるまで次のページをクリックする
action_note: ''
action_args:
- screen
- element
action_def:
- - FOR
- ${i}
- IN RANGE
- '10'
- - ''
- ${IS_ELEMENT_EXISTANCE} =
- Run Keyword And Return Status
- Page Should Contain Element
- ${location}
- - ''
- Exit For Loop IF
- '''${IS_ELEMENT_EXISTANCE}''==''True'''
- - ''
- Click Element
- xpath=//a[@class="pagination__link pagination__link--next minimalbox"]
- - END
- - Click Element
- ${location}
次に、作成された Pager.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートし、実際にインポートされた設定内容を開く
4行目の10はページング処理の上限を定義します。
7行目のxpathはpagerのXPathです。developertoolなどでページ送りをする要素のXPathを取得してここに記載します。
テストケース
3行目が、記事一覧の1ページ目から、「負荷テストとは?」の記事を探す処理である。
テスト実行
実行して、詳細のレポートが下図である。
for loopの0~3回目では、「負荷テストとは?」の要素がみつからないため(false)pagerをクリックします
4回目では、「負荷テストとは?」の要素が見つかったため、For loopからexitします