RanoreXPath の基礎
この章では、RanoreXPath の構成、および、RanoreXPath の特性と自動化テストの関連について説明します。最初に、独立した UI 要素についての RanoreXPath の構造について説明します。次に、特定の UI の一部となっている UI 要素の場合について説明します。最後に、RanoreXPath の堅牢性と柔軟性について説明し、テスト自動化の目的における使用方法について説明します。
スクリーンキャスト
以下のスクリーンキャストで、この章で説明している内容を確認できます。
独立した UI 要素の基本的な構造
通常、完全な RanoreXPath は、UI 内の単一の UI 要素を表します。単一の UI 要素の RanoreXPath の基本的な構造を説明するために、ここでは、Demo Application の Exit ボタンを表すのに必要な要素を見てみましょう。
基本的な構造: 独立した UI 要素の RanoreXPath は、3 つの要素、軸指定子 (axis)、ノード (node)、0 個以上の述語 (predicate) で構成されます。
Exit ボタンの場合、軸指定子は /、ノードは button ロール、述語はボタンをユニークに識別するための属性値のペアです。
軸指定子 (Axis)
- Ranorex Studio は、UI を階層ツリーとして扱います。
- 軸指定子 (Axis) は、RanoreXPath のツリー内の移動方向を示します。
- 軸指定子の例として、
/
,//
,..
,ancestor
などがあります。詳しくは、⇢ RanoreXPath の構文 を参照してください。
ノード/ロール (Node/Role)
- ノード (Node) は、UI 要素ツリー内の個別のノード (つまり、UI 要素) を指します。
- UI 要素を識別するため、RanoreXPath では、ロールは主要となるプロパティです。
- より詳細な識別のため、ロールには、角括弧
[ ]
で囲われた述語を指定できます。
述語/属性値ペア (Predicate/Attribute-value pair)
- 述語 (Predicate) は、ノード/ロールを修飾します。述語の指定は任意です。
- 述語は通常、一つ以上の属性と値のペア (Attribute-value pair) で構成されます。
- 述語は、角括弧
[]
で囲われます。 - 属性とその値の構文は、
@attribute='value'
です。= は演算子です。 =
以外の演算子も使用できます。(⇢ RanoreXPath の構文 参照)- 述語には、⇢ 正規表現 を含めることもできます。
完全な RanoreXPath の構造
上記で、独立したボタン、つまり、要素ツリーに単一の独立したノードを持つ要素についての、RanoreXPath の基本的な構造について説明しました。このボタンが埋め込まれている UI (つまり、Demo Application のウィンドウや、Introduction タブなど) を表す、先祖のノードは無視しました。当然のことながら、実際のシナリオでは、このボタンを識別するためには、RanoreXPath にはすべての先祖のノードが必要です。
独立した RanoreXPath の連結
Exit ボタンを取得するには、独立したノード/UI 要素の RanoreXPath を連結するだけです。これにより、他の完全な RanoreXPath と同様に、3 つのパーツで構成される、Exit ボタンの 完全な RanoreXPath が得られます。
ルート要素
現在の UI 要素ツリーのルートです。最終ノードへ到達するための開始ポイントです。
ルートから最終ノードへのパス
ルートと最終ノード間のノードです。0 個以上を指定できます。
最終ノード
識別したい UI 要素です。
メモ
これは、完全な RanoreXPath が、常に 3 個のノードで構成されているという意味ではありません。1 個のノードのみで構成される場合 (例: Demo Application のウィンドウのみを識別する場合)、2 個のノードで構成される場合 (ルートと最終ノード間にノードがない場合)、3 個のノードで構成される場合 (ルートと最終ノード間に複数のノードがある場合)、などがあります。
例
Ranorex Spy で Exit ボタンをトラッキングした時に生成される、完全な RanoreXPath を確認してみましょう。
トラッキングした Exit ボタン
Ranorex Spy で生成された RanoreXPath
Ranorex Spy は、RanoreXPath がどの UI 要素をナビゲート/識別するのかといった、より詳細な情報を表示します。
UI 要素ツリー ブラウザーでは、2 個の要素の RanoreXPath が階層表示されています。
- ルート要素は、Demo Application のプログラム ウィンドウ (=
Form
) です。 - この要素は、
controlname 'RxMainFrame'
で識別されています。 - 最終ノードは、Exit ボタンです。
- この要素は、
controlname 'RxButtonExit'
で識別されています。. - これらのノード間の中間ノードはありません。
パス エディターでは、どのノードが RanoreXPath 式のどの部分に対応するのかといった詳細とともに、RanoreXPath 式の視覚的な表現を提供します。
Exit ボタンの完全な RanoreXPath 式は以下になります。
堅牢性と柔軟性
UI テスト自動化においては、堅牢性とは、UI の変更、例えば、ボタンの場所の移動、ボタンのラベルの変更、といった変更が加えられた場合でも、テストが機能することを意味します。Ranorex Studio では、これは RanoreXPath を介しておこなわれます。
理想的な RanoreXPath は、必要な限り詳細 (= より堅牢) で、可能な限り柔軟 (= より高速な UI 要素の識別) なものです。
- 詳細さと柔軟性は、堅牢性と実行速度に影響を与えます。
- 非常に詳細な RanoreXPath は、その堅牢性は低下しますが、テスト実行速度は向上します。
- 非常に柔軟な RanoreXPath は、UI の変更に対する堅牢性は向上しますが、テスト実行速度は低下します。
参照
Ranorex Studio は、堅牢性と柔軟性のバランスを自動的に調整する、高度なアルゴリズムに基づいて RanoreXPath を生成します。このアリゴリズムの動作は、Ranorex Studio の 設定 > 詳細 > RanoreXPath の設定 から変更できます。詳しくは、Ranorex Studio のシステム詳細 > 設定 > ⇢ 詳細設定 を参照してください。
ワイルドカードによる柔軟性の向上
RanoreXPath の柔軟性、ひいては堅牢性を向上させたい場合には、ワイルドカードを使用することで実現できます。Ranorex Studio が自動的に RanoreXPath を生成する際、RanoreXPath の柔軟性と UI 要素識別の速度のバランスを取るために、必要に応じてワイルドカードを追加します。
例
Ranorex Studio によるワイルドカードの自動挿入の例を確認してみましょう。Demo Application の Test database タブにある Female ラジオ ボタンをトラッキングし、RanoreXPath を自動生成させます。
Ranorex Spy で Track をクリックします。
Demo Application の Test database タブにある Female ラジオ ボタンをクリックします。
Ranorex Studio が、対象の UI 要素の RanoreXPath を自動生成します。
RanoreXPath 式:
- 生成された RanoreXPath 式です。要素ツリー ブラウザーとパス エディターに表示されているものと比べてみてください。
要素ツリー ブラウザーの表示
- ラジオ ボタンが配置されている UI の階層構造を表示しています。
- 5 個の異なる UI 要素があります。
パス エディター
- RanoreXPath 式のノードの視覚的な表現を表示しています。
- ルートおよび最終ノードを含め、計 7 個のノードがあります。
パス エディターに表示されている、自動生成された RanoreXPath をより詳しく見てみましょう。
ルート RxMainFrame
:
このノードは、テスト対象アプリ (つまり、Demo Application) のプログラム ウィンドウを表しており、この RanoreXPath 式の固定部分です。
ワイルドカード:
RanoreXPath 式をより柔軟にするために、ルートとその次の固定部分の間に、Ranorex Studio は 2 個のワイルドカード /?
(= any optional) を挿入しています。これは、ルートとその次の固定部分の間に、0 ~ 2 個のノードがあり、Ranorex Studio が最終ノードを検索できることを示します。
固定ノード RxTabStandard
:
Ranorex Studio はこの UI 要素を、ラジオ ボタンを識別するために必要な固定ノードと指定しています。
ワイルドカード:
RanoreXPath 式をより柔軟にするために、Ranorex Studio は 2 個のワイルドカード /?
を挿入しています。
最終ノード rdbFemale
:
RanoreXPath 式の最後の固定部分である、今回の識別対象の Female ラジオ ボタンです。
サマリー
- ワイルドカードは、RanoreXPath の柔軟性を高めます。ワイルドカードは、UI 構造が変更された場合でも、Ranorex Studio が UI 要素を識別することを可能にします。ワイルドカードを正しく適用することで、堅牢性が向上します。
- 上記の例では、Ranorex Studio は、3 つの固定ノードを持つ RanoreXPath を生成しました。これらのノードは、正しい UI 要素 (Female ラジオ ボタン) を正確に識別するために必要な情報を提供します。
- Ranorex Studio はまた、4 つの
/?
ワイルドカードを挿入しています。これらのワイルドカードは、固定ノード間に UI 要素の変更が発生しても、Female ラジオ ボタンの識別がおこなえる柔軟性を提供します。 - 以下で説明する、3 種類のワイルドカードが用意されています。
ワイルドカード演算子
Ranorex Studio では、3 種類のワイルドカードを提供します。
/* |
any | 1 ツリー レベルのあらゆる UI 要素 |
/? |
any optional | 0 または 1 ツリー レベルのあらゆる UI 要素 |
// |
any descendants | 複数のツリー レベルのあらゆる UI 要素 |
参照
RanoreXPath における正規表現の使用方法については、Ranorex Studio アドバンスト > RanoreXPath > ⇢ RanoreXPath の例 を参照してください。