カスタムアクションの作成とレコーダーでの共有

この記事では、カスタム(ユーザーコード)アクションを実装し、Ranorexレコーダーで使用する方法を説明します。カスタムアクションの実装サンプルも紹介します。さらに、プログラマではない Ranorexユーザーも利用できるように、アクションを簡単に共有する方法を説明します。

  • サンプル: 詳細な手順
  • ベースクラスからの継承によるカスタムアクションの共有
  • 高度なサンプル: テーブル全体のコンテンツの検証
  • まとめ

Ranorexレコーダーには、さまざまなオートメーションシナリオで使用できる便利なアクション(Set Value、Close Application、その他)が多数用意されていますが、日常業務での自動化のニーズに合わせたカスタムアクション(ユーザーコードアクション)があると役に立つ場合があります。

ユーザーコードアクションは、リポジトリアイテムに対応するデータ型をはじめとして、さまざまな型の引数を受け取ることができるので、非常に強力です。この機能によって、Ranorexレコーダーでリポジトリアイテムを引数に代入できるため、より柔軟で応用範囲の広いカスタムアクションを作成できます。

サンプル: “Key Sequence and Validation” カスタムアクションの実装手順

たとえば、Webサイトのテキストボックスにキーシーケンスを入力し、その後で検証を行う作業を自動化する必要があるとします。これら2つのアクションは、いくつかのテキストボックスで繰り返し実行する必要があります。コピー&ペーストでこのシナリオを実装することもできますが、多くの重複が発生するため、ベストプラクティスは次のような手順になります。

1. 関連する項目をUser Codeアクションにマージする

コンテキストメニューを使用して、関連するアクションをユーザーコードにマージし、新しいアクションに適切な名前(たとえばKeySequenceAndValidate)を付けます。

これで、現在のレコーディング内で、2つのステップを1つのUserCodeアクションとして使用できるようになりました。このアクションは簡単に複数回呼び出すことができますが、基になっているアクションは依然として静的で柔軟性がなく、同じ「ハードコーディングされた」リポジトリ要素およびキーシーケンスの場合にだけ実行できます。

2. 引数を設定してアクションをより柔軟にする

[Args…]ボタンをクリックすると引数エディターが表示され、ユーザーコードアクションの入力パラメーター(引数)を作成できます。

これらの引数によって、アクション自体を修正することなく、代入された任意のリポジトリアイテムに対して任意のキーシーケンスを実行できるようになります。

このサンプルでは、Adapter型のパラメーター(リポジトリ要素を表す)とString型のパラメーター(キーシーケンスを表す)が必要です(ユーザーガイドの「ユーザーコードのパラメーターに関する詳細情報」を参照)。

3. ユーザーコードのユーザーパラメーター

引数エディターでの修正の結果、ユーザーコードアクションKeySequenceAndValidateのヘッダーに2つの新規引数が追加されました。<RecordingName>.UserCode.cs (or *.vb)ファイルでは、これらの引数は次のようになります。

public void KeySequenceAndValidate(Ranorex.Adapter MyTextBox, string MyKeySequence){    ...}

静的なリポジトリアイテムおよびキーシーケンスが使用されていたところを、引数を使用してより柔軟にする必要があります。それには、ハードコーディングされた repo.RanorexWebsite.InputTagQ をMyTextBox パラメーターに置き換えます。さらに、ハードコーディングされたキーシーケンス “Ranorex” を MyKeySequence に置き換えます。これらの修正を行い、“Report.Log(…” で始まる2行を削除すると、コードは次のようになります

public void KeySequenceAndValidate(Ranorex.Adapter MyTextBox, string MyKeySequence){    
    MyTextBox.PressKeys(MyKeySequence); // Perfom key sequence action    
    Validate.Attribute(MyTextBox, “InnerText”, MyKeySequence ); // validate result
}

注意: 上記のサンプルではLogging (“Report.Log…”)が削除されています。コードでカスタムログを記録する方法の詳細については、ユーザーガイドに記載されています。

これで、これらのステップを実行する必要がある任意の場所で、レコーダービューから簡単にアクションを呼び出せるようになりました(下の画面ショットを参照)。 このユーザーコードアクションは幅広く応用でき、レコーダーのアクションテーブルで、リポジトリアイテムおよびキーシーケンスを引数として指定できます。

結果として、同じアクションを別の場所で呼び出すことで、別のリポジトリアイテムに対して別のキーシーケンスを使用してアクションを実行できます。既存のカスタムアクションを再利用するには、[新しいアクションの追加]->[User Code]をクリックし、ドロップダウンから対象のメソッドを選択します。ドラッグ&ドロップ機能を使用すると、リポジトリアイテムをすばやく代入できます(画面ショットを参照)。

ベースクラスからの継承によるカスタムアクションの共有

上記のステップを行った場合、カスタム(ユーザーコード)アクションは、現在のレコーディング内だけで利用できます。通常、比較的規模の大きいプロジェクトでは、複数のレコーディングモジュールからメソッドを呼び出す必要がある場合が多いでしょう。継承を使用すると、簡単に実現できます。

継承機能を利用するには、まず、Ranorex プロジェクトに Class タイプの新規項目を追加し、適切な名前を付けます。例: RecorderBaseClass (下の画面ショットを参照)。このクラスは、既存のレコーディングおよびこれから作成するレコーディングのベースクラスとなります。

次に、KeySequenceAndValidate カスタムアクションを UserCode ファイルから新しく作成したクラスに移動します。

最後に、ベースクラスのメソッドを利用するすべてのレコーディングに、ベースクラスからレコーディングのユーザーコードを派生するという簡単な変更を加えます。それには、<RecordingName>.UserCode.cs ファイルを開き、既存のクラス宣言の後ろにコロンとベースクラスの名前を追加するだけです(下の画面ショットを参照)。

こうすると、それぞれのユーザーコードファイルのメソッド(ローカルに共有される)とベースクラスのメソッド(グローバルに共有される)がまとめられ、レコーディング内で利用できるようになります。

高度なサンプル: テーブル全体のコンテンツの検証

上記で説明されたワークフローに従って、もっと複雑なシナリオでも実装できます。たとえば、テーブル全体のコンテンツを検証する必要がある場合、ユーザーコードアクションを使用すると大幅な時間の節約になります。特に、検証対象のテーブルをパラメーターで渡すことができれば便利です。このシナリオの実装サンプルについては、ユーザーガイドの「コード例」-「高度な検証 – テーブル全体」サンプルコードを参照してください。

まとめ

さまざまなデータ型の引数を使用することで、ユーザーコードアクションの機能を拡張できます。特にリポジトリアイテムを引数にできることは、大きな利点です。これによって、特定のリポジトリアイテムから完全に独立したカスタムアクション(たとえばキーシーケンスの入力後に検証を行うなど)を作成できます。継承を利用すると、簡単にカスタムアクションを共有できるため、開発スキルのないユーザーでも Ranorexレコーダー内でカスタムアクションを使用できます。テーブル全体のコンテンツに対する複雑な検証を含むカスタムアクションおよび継承の具体的なサンプルが提供されています。

(この記事は、開発元 Ranorex 社 Blog 「Create and Share your own Custom Actions for the Recorder」2014年11月6日の翻訳記事です。)