ITツールの機能紹介-SeleniumIDEの技術開拓 promptで作った入力フォームを維持する方法
つ ‐ じ=です。伸ばし棒など何でも良い。
弊社でもそろそろ健康診断の季節となってまいりました、年々不健康指数が上がり気味なので気を付けていきたいです。最近文章を読み解く力が衰えてきているのか、誤った解釈をしてしまう事が散見している模様。何かの不健康が原因ですかね、それとも年…(考えたくない)。本職にも影響出ちゃうので何とか治していこうと思います。
さて今回も技術開拓。弊社で作成していた自動テストで起きたトラブルに対する解決のあれそれを語りたいと思います。
promptで作った入力フォームを維持する方法
過去の記事で「ダイアログ表示」をご紹介しましたが、
こちらを自動テストに組み込んだところ、とある問題が起きました。
それがダイアログ消失問題です。
テストの最中は以下のように、検証に使用するワードをダイアログに入力するフェーズを設けたりするのですが
※以下の画像は本稿用に作った適当なサンプル画面です
「自動テストやってたら入力を求められたね、では入力するワードを調べるために別のページを開いて~・・・・・・ワード把握!テストに入力・・・・・・あれ?」
なんかテスト失敗してる???
そう、ダイアログを開いている状態で別ページに進行すると、ダイアログが勝手に閉じてしまう事があるのです。
これでは想定していたようなテストができませんどうしましょう。そこで思いついたのが以下の対策でした。
do
execute script
return prompt("【手動検証】検証ワードを入力してください。");
ans_prompt
repeat if
${ans_prompt}==="" || ${ans_prompt}===null
【ダイアログにデータが入力されるまでループ do~repeat if】
ざっくりまとめると、do~repeat ifを使い
${変数名}===”” || ${変数名}===null
で、テキストが入力されるまで無限ループさせてしまいましょうという事です。
調べた結果、別ブラウザや別ページを開いてダイアログが消えてしまった場合、
nullまたは“”(データ無し)が返り値になる事が判明しました。
なので返り値をチェックし、もし返り値がnullまたは””(データ無し)だった場合はループする、とする事で、他のページやブラウザを開いていてもダイアログが勝手に閉じないように(正確には、閉じてもまた開くように)することができました。以下、入力まではnullになっていた図です。
まぁもっとスマートな方法ある気もしますがとりあえず目的は達成できたのでヨシ!!
こうすりゃもっとスマートだし開発者として常識だよ!って言える対策があればぜひ貴方の手でブログやnoteとかにまとめてくださいお願いします出来たら見に行きます。
技術開拓頑張っていきましょう。今回はこれにて。