ハマログ

株式会社イーツー・インフォの社員ブログ

ITツールの機能紹介-SeleniumIDEの技術開拓 ランダムを組み込む方法-

つ~じ~です。ニュース見れば身近でも遠くでも悲しい出来事ばかりで気が滅入りますね。少しでも楽しい話題が欲しいところです。ポジティブシンキングの精神。

さてさて、今回も Selenium IDE の技術開拓を行いたいと思います。今回共有したい技術は以下です。

  • 自動テストにランダムを組み込む方法

「ランダム」というだけなら以下の記事で似たような技術を解説しました。

テストに役立つツール紹介 -selenium IDE【上級】-

こちらの「3.JavaScriptの組み込み」にて、『10afd892gf3』のようなランダムなユニーク値を生成する方法を記述しております。

ただ、実際のテストだと

  • 年号入力で2023から2999の中のいずれかをランダムで選びたい
  • 割合入力で1.0から99.9の中のいずれかをランダムで選びたい
  • ドロップボックスの選択肢からランダムで選びたい

といったもう少し整ったデータの要求が出てきます。こんなパターンを対応できるように本稿でそのやり方をご紹介いたします。

自動テストにランダムを組み込む方法

まず前提として、Selenium IDE のコマンドにはランダムがありません。そのため、テストを行う際は基本的に固定値、または、Web画面上のいずれかのデータを取得して適用、という流れになります。

それでも悪くはないのですが、Web画面に依存しないランダムパターンを検証したい、そんなときに使えるのが以下のJavaScript文を利用したテクニックです。

範囲指定の乱数生成

■関数定義

Commandexecute script
getRandomNum =  function getRandomNum(minnum, maxnum, decimal){  var random = Math.random() * (maxnum-minnum) + minnum;  return random.toFixed(decimal) }
Value:指定不要

■変数定義

Commandexecute script
Targetreturn getRandomNum(2022, 2040, 0);
ValuerandomNum

または

Commandexecute script
Targetreturn getRandomNum(1, 99, 2);
ValuerandomNum

■使用用途

  • 最小値~最大値の中でランダムな数値が適用されます。getRandomNumの3つ目の引数は小数点の桁数です。
    • getRandomNum(2022, 2040, 0)の場合:2022~2040のいずれかの数値(小数点以下なし)
    • getRandomNum(1, 99, 2)の場合:1.00~99.00のいずれかの数値(小数点第2位まで表示)

■使用例

Commandexecute script
getRandomNum =  function getRandomNum(minnum, maxnum, decimal){  var random = Math.random() * (maxnum-minnum) + minnum;  return random.toFixed(decimal) }
Value:指定不要
Commandexecute script
Targetreturn getRandomNum(2022, 2040, 0);
ValuerandomNum
Commandtype
Targetxpath=//input[@id='year']
Value${randomNum}

これで毎回ランダムな数値を選ぶことが可能です。検証にランダム性を持たせたい時にお勧めです。

ランダムワード選択関数

■関数定義

Commandexecute script
getRandomWord =  function getRandomWord(randomword){  const array = randomword; var random = Math.floor( Math.random() * (array.length) );  return array[random] }
Value:指定不要

■変数定義

Commandexecute script
Targetreturn getRandomWord(["午前中", "13時~15時", "15時~18時", "18時~20時", "20時~21時"]);
ValuerandomWord

■使用用途

  • 指定した文字列配列の中からランダムでワードが選択されます
    • 上記の変数定義では「午前中」「13時~15時」「15時~18時」「18時~20時」「20時~21時」の中からいずれかのワードが選ばれます。
  • もし配列にSeleniumIDEの変数を混ぜる場合は、以下のように変数からダブルクォーテーションを外して定義してください。
    • 例)Target:return getRandomWord([“日時指定しない”, ${daystr_japanese} ]);
    • Target:return getRandomWord([“日時指定しない”, “${daystr_japanese}” ]);では失敗します。

■使用例

Commandexecute script
getRandomWord =  function getRandomWord(randomword){  const array = randomword; var random = Math.floor( Math.random() * (array.length) );  return array[random] }
Value:指定不要
Commandexecute script
Targetreturn getRandomWord(["午前中", "13時~15時", "15時~18時", "18時~20時", "20時~21時"]);
ValuerandomWord
Commandselect
Targetname=delivery_time
Valuelabel=${randomWord}

selectコマンドによるプルダウン選択でランダムな選択ができます。

上記の記述では直接選択肢を記述しておりますが、うまくWeb画面の選択肢データを取得して変数化できればもっとスマートにできるかもです。


ITの力で幸せを形づくるのが弊社のモットーです、幸せ目指して技術開拓頑張りましょう。今回はこれにて。

SeleniumIDEランダム自動テスト

  つーじー   2023年11月16日


関連記事

テストに役立つ機能紹介 -マウスドラッグなしでオートフィルする方法-

おいしい飯屋を探すのが好きです。つーじーです。 テストをしているとよくDBデータ…

好きなゲームで印象に残ったこと-SOUND VOLTEX-

つ~じ~です。最近タイプミスや誤字脱字が明らかに増えました。若いころは「こんなミ…

メタバース時代到来で映画の世界がついに現実に

映画は好きですか? 私はこの冬見たい映画で溢れていて、休みの日は映画館に行くこと…


← 前の投稿

次の投稿 →