ITツールの機能紹介-SeleniumIDEのループを1000回以上実施する方法-
つ~じ~です。最近ちょっと体調の都合で休みがちです、皆さんも体調管理にお気を付けください。お仕事も大切ですが、体は資本です。粗末にせずに大切にしましょう。ところでゴールデンウィークはいつ始まるのでしょうか?もう終わった??休んだ気がしないのですが!???
さてさて、今回はまた自動テストの話題を。過去の記事は以下をご参考。
私は弊社の中でも『Selenium IDE』の構築に一番従事している者ですが、そんな構築の最中にとある問題に見舞われました。
SeleniumIDEは1000回を超えるループができない?
某PJで「データを3万件量産したい」という事で、3万回ループするような自動テストを構築しました。
しかしなぜか1000回目でエラーを吐いて止まってしまいます。1000回ぴったりです。
エラー内容を示すような表示もなく、なぜ止まったのか当時わかりませんでした。
「もしかしてループ処理は1000回が上限なのでは?」と思ったのですが、
[selenium ide 1000回]
[selenium ide 上限]
[selenium ループ 上限]
等々でGoogle検索してもいまいち良い情報がヒットしません。SeleniumIDEの使い方をまとめたQiitaやブログを見漁っても良い情報が見当たりません。オワタ
そこで満を持してSeleniumIDE本家のヘルプページへとアクセスするのでした。
■公式コマンド一覧:https://www.selenium.dev/selenium-ide/docs/en/api/commands
全部英語です。オワタ
それでも頑張って読み解いた結果、あっさり答えは見つかりました。
「The defaults value is set to 1000.」「デフォルトは1000回です。」
ハイやっぱり1000回でした、答えが見つかってホッとしました。
ここで大事なことは「デフォルトは」のところです。つまり上限変えられるのでは?と。とても分かりにくい引数の解説ページを調べて自分なりに研究を重ねたところ、
■引数解説ページ:https://www.selenium.dev/selenium-ide/docs/en/api/arguments
どうやら以下のようにValueに上限回数を入力するとその回数までループ処理させてくれるようです。以下の例だと10001回までループできます。
これで実際1000回以上のループができるようになりました。めでたしめでたし
このValue設定はどのループ処理でも使えます。
(times…end、while…end、do…repeat if、for each…end)
補足(インクリメント値を加算させる方法)
上記の参考画像に載っておりますが、これも新しく知ったことなので本稿にまとめます。
ループ処理といえばインクリメント(i++のようなやつ)が必須となります。試しにSeleniumIDEで以下のように記述してみますが、
| execute script | return ${count} + 1 | count |
これだと挙動がおかしくなります。なぜなら上記の記述だと、「+1」を文字列として判定してしまうためです。このまま実行を続けると
0
01
011
0111
:
のように1という文字をくっつけていくプログラムになってしまいます。これを解決するためには、
| execute script | return + ${count} + 1 | count |
のように、return句の後に「+」を付けると数値として計算してくれます。
減算の場合は上記のような記述は不要なので不思議なものです。
(「return ${count} – 1」で成功する)
今後も研究を重ねて便利にツールを使ってまいりましょう。今回はこれにて