Ranorex:ノンプログラミングによる文字列操作

テストスクリプトの作成において、アプリケーションの画面にあるUI要素からテキストや、プロパティ情報などを取得し、テストデータとして使用するケースがあります。
今回は、そのようなケースにおいて、取得したデータ(文字列)をそのまま使用するのではなく、何かしらの加工をおこなったデータを使用したい場合に、ユーザーコードを使用せずに対応する方法についてご紹介します。
※本記事は、Ranorexの基本操作を理解されている方向けの内容となります。
今回、ご紹介する方法は、以下の項目となります。
これらは、過去にRanorexユーザー様から頂いたお問い合わせの中から、よくあるご質問をピックアップしたものになります。
- UI要素から特定の文字列のみを取得したい
- 2つの文字列の結合をおこないたい
- 複数の文字列結合をおこないたい
- 現在日時を取得したい
UI要素から特定の文字列のみを取得したい
アプリケーションの画面のUI要素からテキストや、プロパティなどの値(文字列)を取得する場合、Get Valueアクションを使用します。Get Valueアクションでは、UI要素の値をそのまま取得するだけなく、正規表現を使用することにより、正規表現にマッチした文字例のみを取得することもできます。
※本項目の解説では、Ranorexのデモアプリ(デスクトップアプリ)を使用しています。
たとえば、下図のアプリケーションにて、”Welcom, taro!”から、名前(taro)だけを取得したい場合、レコーディングモジュールにて、Get Valueアクションを使用し、対象のUI要素(リポジトリアイテム)からText属性の値を取得します。

Get ValueアクションのCapture regex項目に、特定の文字だけを取得するための正規表現(例:Welcome, (.*)!)を指定します。

下図は、Get Valueで取得した値をレポートに出力したものです。指定した正規表現により、名前だけが取得されていることが確認できます。

2つの文字列の結合をおこないたい
Get Valueアクションで取得した値(文字列)や、データソースの値など2つの値を結合したい場合、オートメーションヘルパーの機能にある、ConcatStringsメソッドを使用することで対応できます。

※Ranorexソリューションにオートメーションヘルパーを追加後、レコーディングモジュールで、ConcatStringsメソッドを使用できるようになります。オートメーションヘルパーの追加方法については、ユーザーガイド(オートメーション ヘルパーの追加と更新)をご参照ください。
レコーディングモジュールの「アクションの追加」から「ユーザーコード(User code)」-「ライブラリから選択」で表示される画面において、「StringLibrary」のConcatStringsメソッドを選択後、「選択項目を追加」をクリックすることで、User Codeアクションとしてメソッドが追加されます。

ConcatStringsメソッドが設定されたUser codeアクションにて、Return value項目に結合した値を格納する変数を指定し、value1とvalue2項目に結合する値が格納されている変数を指定します。
このアクションが実行されると、value1とvalue2項目で指定した変数(strValue1、strValue2)に格納された値が結合され、Return value項目で指定した変数(resValue)に格納されます。

※文字列の結合は、value1項目で指定した文字列の後ろに、value2項目で指定した文字列が結合されます。
複数の文字列結合をおこないたい
”2つの文字列の結合をおこないたい”の応用となり、3つ以上の値を結合する方法です。
”2つの文字列の結合をおこないたい”で解説したオートメーションヘルパー機能のConcatStringsメソッドを使用することで、3つ以上の文字列を連結することもできます。
下図では、1行目のUser codeアクション(#1)にて、strValue1変数とstrValue2変数の値を結合し、結合した値をresValue変数に格納します。
2行目のUser codeアクション(#2)にて、resValue変数とstrValue3変数の値を結合し、結合した値をresValue変数に戻します。
これにより、複数の文字列を連結することができます。

※異なるレコーディングモジュール間で取得した文字列を結合したい場合には、グローバルパラメータ機能を使用し、resValue変数とグローバルパラメータを紐づけておくことで対応できます。
現在日時を取得したい
テストデータとして、テスト実行時の日時を使用したい場合、オートメーションヘルパー機能にある、GetDateTimeAsStringメソッドを使用することで対応できます。
※Ranorexソリューションにオートメーションヘルパーを追加後、レコーディングモジュールで、GetDateTimeAsStringメソッドを使用できるようになります。オートメーションヘルパーの追加方法については、ユーザーガイド(オートメーション ヘルパーの追加と更新)をご参照ください。
Ranorexソリューションにオートメーションヘルパーを追加後、レコーディングモジュールの「アクションの追加」から「ユーザーコード(User code)」-「ライブラリから選択」で表示される画面にある、「SystemLibrary」のGetDateTimeAsStringメソッドを選択後、「選択項目を追加」をクリックすることで、User Codeアクションとしてメソッドが追加されます。

GetDateTimeAsStringメソッドが設定されたUser codeアクションにて、Return value項目に取得した日時を格納する変数を指定し、expectedFormat項目に取得する日時のフォーマットを指定します。
このアクションが実行されると、expectedFormat項目で指定したフォーマット形式に合わせた現在日時がReturn value項目で指定した変数(resValue)に格納されます。
現在日時のフォーマット形式の指定では、プレースホルダーとして、d=day(日)、M=Month(月)、 y=year(年)、h=hour(時)、m=minute(分)、s=second(秒)が使用できます。expectedFormat項目を指定しない場合、Windowsで設定されているフォーマット形式(dd.MM.yyyy)が使用されます。
指定例:yyyy/MM/dd hh:mm:ss

下図は、GetDateTimeAsStringメソッドで取得した”yyyy/MM/dd hh:mm:ss“のフォーマット形式の日時をレポートに出力したものです。指定したフォーマット形式で現在日時が取得されていることが確認できます。

まとめ
Ranorexでは、ノンプログラミングでも今回、紹介した方法を使用することで文字列操作をおこなうことができます。
テストシナリオにおいて、ファイル名の保存などで、ユニークなテストデータを使用したい場合などに有効ですので、ご利用ください。