ITツールの機能紹介-SeleniumIDEの技術開拓 ランダムを組み込む方法-
つ~じ~です。ニュース見れば身近でも遠くでも悲しい出来事ばかりで気が滅入りますね。少しでも楽しい話題が欲しいところです。ポジティブシンキングの精神。
さてさて、今回も Selenium IDE の技術開拓を行いたいと思います。今回共有したい技術は以下です。
- 自動テストにランダムを組み込む方法
「ランダム」というだけなら以下の記事で似たような技術を解説しました。
こちらの「3.JavaScriptの組み込み」にて、『10afd892gf3』のようなランダムなユニーク値を生成する方法を記述しております。
ただ、実際のテストだと
- 年号入力で2023から2999の中のいずれかをランダムで選びたい
- 割合入力で1.0から99.9の中のいずれかをランダムで選びたい
- ドロップボックスの選択肢からランダムで選びたい
といったもう少し整ったデータの要求が出てきます。こんなパターンを対応できるように本稿でそのやり方をご紹介いたします。
自動テストにランダムを組み込む方法
まず前提として、Selenium IDE のコマンドにはランダムがありません。そのため、テストを行う際は基本的に固定値、または、Web画面上のいずれかのデータを取得して適用、という流れになります。
それでも悪くはないのですが、Web画面に依存しないランダムパターンを検証したい、そんなときに使えるのが以下のJavaScript文を利用したテクニックです。
範囲指定の乱数生成
■関数定義
Command:execute script
getRandomNum = function getRandomNum(minnum, maxnum, decimal){ var random = Math.random() * (maxnum-minnum) + minnum; return random.toFixed(decimal) }
Value:指定不要
■変数定義
Command:execute script
Target:return getRandomNum(2022, 2040, 0);
Value:randomNum
または
Command:execute script
Target:return getRandomNum(1, 99, 2);
Value:randomNum
■使用用途
- 最小値~最大値の中でランダムな数値が適用されます。getRandomNumの3つ目の引数は小数点の桁数です。
- getRandomNum(2022, 2040, 0)の場合:2022~2040のいずれかの数値(小数点以下なし)
- getRandomNum(1, 99, 2)の場合:1.00~99.00のいずれかの数値(小数点第2位まで表示)
■使用例
Command:execute script
getRandomNum = function getRandomNum(minnum, maxnum, decimal){ var random = Math.random() * (maxnum-minnum) + minnum; return random.toFixed(decimal) }
Value:指定不要
Command:execute script
Target:return getRandomNum(2022, 2040, 0);
Value:randomNum
Command:type
Target:xpath=//input[@id='year']
Value:${randomNum}
これで毎回ランダムな数値を選ぶことが可能です。検証にランダム性を持たせたい時にお勧めです。
ランダムワード選択関数
■関数定義
Command:execute script
getRandomWord = function getRandomWord(randomword){ const array = randomword; var random = Math.floor( Math.random() * (array.length) ); return array[random] }
Value:指定不要
■変数定義
Command:execute script
Target:return getRandomWord(["午前中", "13時~15時", "15時~18時", "18時~20時", "20時~21時"]);
Value:randomWord
■使用用途
- 指定した文字列配列の中からランダムでワードが選択されます
- 上記の変数定義では「午前中」「13時~15時」「15時~18時」「18時~20時」「20時~21時」の中からいずれかのワードが選ばれます。
- もし配列にSeleniumIDEの変数を混ぜる場合は、以下のように変数からダブルクォーテーションを外して定義してください。
- 例)Target:return getRandomWord([“日時指定しない”, ${daystr_japanese} ]);
- Target:return getRandomWord([“日時指定しない”, “${daystr_japanese}” ]);では失敗します。
■使用例
Command:execute script
getRandomWord = function getRandomWord(randomword){ const array = randomword; var random = Math.floor( Math.random() * (array.length) ); return array[random] }
Value:指定不要
Command:execute script
Target:return getRandomWord(["午前中", "13時~15時", "15時~18時", "18時~20時", "20時~21時"]);
Value:randomWord
Command:select
Target:name=delivery_time
Value:label=${randomWord}
selectコマンドによるプルダウン選択でランダムな選択ができます。
上記の記述では直接選択肢を記述しておりますが、うまくWeb画面の選択肢データを取得して変数化できればもっとスマートにできるかもです。
ITの力で幸せを形づくるのが弊社のモットーです、幸せ目指して技術開拓頑張りましょう。今回はこれにて。