デスクトップアプリで認識しないオブジェクトの対応

Ranorexでは、デスクトップアプリのオブジェクト(コントロール)を認識できない場合があります。これは、VB6, MFCなどの古いテクノロジーや、古いバージョンのテクノロジー、Ranorexがサポートしていないコンポーネントなどで発生します。これら認識できないオブジェクトに対してGDIおよびGDI+キャプチャ機能を使用することで認識できる場合があります。本記事では、これらの機能について解説します。
※元々、RanorexにはGDIキャプチャが搭載されていましたが、Ranorex v9.3でGDIを拡張したGDI+にも対応したキャプチャ機能が追加されました。
※使用されるコンポーネントや、テクノロジーによっては、本機能を使用してもオブジェクトが認識できない場合もございます。
RanorexのデモアプリにあるImage-based automationのカレンダーを使用して機能の解説をおこなっています。

GDIキャプチャ機能
GDIキャプチャは、標準のWindows GDI APIを使用しており、デスクトップアプリの画面、オブジェクトなどの要素を検出します。GDI+キャプチャと比べ、検出速度が速いといった特徴がありますが、アンチエイリアス処理されたテキストや透過した画像などの要素を検出できない場合があります。
1. テスト対象アプリで、対象のオブジェクト(認識できないオブジェクト)を表示します。

2. Ranorex Studioで、対象のソリューションを開き、ツールバーからRanorex Spyを起動します。

3.Ranorex Spyで、TRACKボタンをクリック後、対象オブジェクトをクリックします。
※日付や曜日などの個々のオブジェクトを識別できないため、カレンダー全体がオブジェクトして識別されます。

4.画面左側にあるツリー要素から、検出された要素を右クリックし、メニューからGDIキャプチャリストにクラス名を追加を選択します。
※この作業により、GDIキャプチャリストに対象要素の情報(対象アプリ、クラス)が設定されます。

5.対象オブジェクト(クラス)がGDIキャプチャのリストに追加された内容のメッセージが表示されますので、OKボタンをクリックします。
※GDIキャプチャの設定を削除したい場合は、手順4でGDIキャプチャリストにクラス名を削除を選択してください。

6.更新ボタンをクリックします。

GDIキャプチャの設定を行った要素を展開すると、識別できなかった個々のオブジェクトが識別できるようになります。
※更新ボタンをクリックしても要素を展開できないは、再度、TRACKボタンをクリックしてオブジェクトを取得してください。

GDIキャプチャで設定した情報(クラス)は、Ranorexの設定にある全般タブのGDIキャプチャ設定を開くとで確認できます。
この画面から直接、GDIキャプチャの情報(プロセス名、クラス名)の情報を変更することも可能です。

GDI+キャプチャ機能
GDI+キャプチャは、GDIキャプチャよりもデスクトップの画面やオブジェクトなどの要素に対して、より正確な検出をおこなうことができます。そのため、透過した画面や重なっているオブジェクトなど、アルファブレンディングを使用した要素などを検出することができます。
※GDI+キャプチャを使用する前提条件として、オブジェクト認識の向上のため、Ranorex Studioを管理者権限で実行する必要があります。
1.GDI+キャプチャを使用するには、GDIキャプチャリストに対象オブジェクト(クラス)を追加する必要があります。
※本記事のGDIキャプチャ機能の手順にしたがい設定をおこなってください。
2. テスト対象のアプリケーション上で、認識対象のオブジェクトを表示させます。
3.Ranorex sutidoにて、対象のソリューションを開き、メニューバーから設定を開きます。

4.表示された設定画面にて、プラグインタブにあるRawText – Capture GDI+ testのオプションをTrueに変更し、OKボタンで設定を反映させます。

5. 再度、Ranorex Spyでオブジェクトを検出することで、個々のオブジェクトが検出できるようになります。

まとめ
GDIキャプチャは、GDI+キャプチャよりも要素の検出速度が速いといった特徴がありますが特定の要素を検出できません。また、GDI+キャプチャはGDIキャプチャよりも正確に要素を検出することができるといった特徴があります。テスト対象アプリやテストシナリオに合わせて各機能をご利用ください。