RanoreXPath - RanoreXPath basics | Ranorex Studio User Guide
Help CenterUser GuideRanorex Studio advanced

RanoreXPath の基礎

この章では、RanoreXPath の構成、および、RanoreXPath の特性と自動化テストの関連について説明します。最初に、独立した UI 要素についての RanoreXPath の構造について説明します。次に、特定の UI の一部となっている UI 要素の場合について説明します。最後に、RanoreXPath の堅牢性と柔軟性について説明し、テスト自動化の目的における使用方法について説明します。

tipp icon

スクリーンキャスト

The screencast “RanoreXPath blueprint” walks you through the information found in this chapter:

Watch the screencast now

独立した UI 要素の基本的な構造

通常、完全な RanoreXPath は、UI 内の単一の UI 要素を表します。単一の UI 要素のRanoreXPath の基本的な構造を説明するために、ここでは、デモ アプリの Exit ボタンを表すのに必要な要素を見てみましょう。

RanoreXPath specification for a button

基本的な構造: 独立した 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 (つまり、デモ アプリのウィンドウや、Introduction タブなど) を表す、先祖のノードは無視しました。当然のことながら、実際のシナリオでは、このボタンを識別するためには、RanoreXPath にはすべての先祖のノードが必要です。

独立した RanoreXPath の連結

Exit ボタンを取得するには、独立したノード/UI 要素の RanoreXPath を連結するだけです。これにより、他の完全な RanoreXPath と同様に、3 つのパーツで構成される、Exit ボタンの 完全な RanoreXPath が得られます。

RanoreXPath construction

ルート要素
現在の UI 要素ツリーのルートです。最終ノードへ到達するための開始ポイントです。

ルートから最終ノードへのパス
ルートと最終ノード間のノードです。0 個以上を指定できます。

最終ノード
識別したい UI 要素です。

Note icon

メモ

これは、完全な RanoreXPath が、常に 3 個のノードで構成されているという意味ではありません。1 個のノードのみで構成される場合 (例: デモ アプリのウィンドウのみを識別する場合)、2 個のノードで構成される場合 (ルートと最終ノード間にノードがない場合)、3 個のノードで構成される場合 (ルートと最終ノード間に複数のノードがある場合)、などがあります。

Ranorex Spy で Exit ボタンをトラッキングした時に生成される、完全な RanoreXPath を確認してみましょう。

Simple RanoreXPath example

トラッキングした Exit ボタン
Ranorex Spy で生成された RanoreXPath

Ranorex Spy は、RanoreXPath がどの UI 要素をナビゲート/識別するのかといった、より詳細な情報を表示します。

Example for RanoreXPath in Spy

UI 要素ツリー ブラウザーでは、2 個の要素の RanoreXPath が階層表示されています。

  • ルート要素は、デモ アプリのプログラム ウィンドウ (= Form) です。
  • この要素は、controlname 'RxMainFrame' で識別されています。
  • 最終ノードは、Exit ボタンです。
  • この要素は、controlname 'RxButtonExit' で識別されています。.
  • これらのノード間の中間ノードはありません。

パス エディターでは、どのノードが RanoreXPath 式のどの部分に対応するのかといった詳細とともに、RanoreXPath 式の視覚的な表現を提供します。

Exit ボタンの完全な RanoreXPath 式は以下になります。

Resulting example RanoreXPath specification

堅牢性と柔軟性

UI テスト自動化においては、堅牢性とは、UI の変更、例えば、ボタンの場所の移動、ボタンのラベルの変更、といった変更が加えられた場合でも、テストが機能することを意味します。Ranorex Studio では、これは RanoreXPath を介しておこなわれます。.

理想的な RanoreXPath は、必要な限り詳細 (= より堅牢) で、可能な限り柔軟 (= より高速な UI 要素の識別) なものです。

RanoreXPath principle
  • 詳細さと柔軟性は、堅牢性と実行速度に影響を与えます。
  • 非常に詳細な RanoreXPath は、その堅牢性は低下しますが、テスト実行速度は向上します。
  • 非常に柔軟な RanoreXPath は、UI の変更に対する堅牢性は向上しますが、テスト実行速度は低下します。

ワイルドカードによる柔軟性の向上

RanoreXPath の柔軟性、ひいては堅牢性を向上させたい場合には、ワイルドカードを使用することで実現できます。Ranorex Studio が自動的に RanoreXPath を生成する際、RanoreXPath の柔軟性と UI 要素識別の速度のバランスを取るために、必要に応じてワイルドカードを追加します。

Ranorex Studio によるワイルドカードの自動挿入の例を確認してみましょう。デモ アプリの Test database タブにある Female ラジオ ボタンをトラッキングし、RanoreXPath を自動生成させます。

Ranorex Spy で Track をクリックします。
デモ アプリの Test database タブにある Female ラジオ ボタンをクリックします。

RanoreXPath robustness example definition

Ranorex Studio が、対象の UI 要素の RanoreXPath を自動生成します。

RanoreXPath robustness example result

RanoreXPath 式:

  • 生成された RanoreXPath 式です。要素ツリー ブラウザーとパス エディターに表示されているものと比べてみてください。

要素ツリー ブラウザーの表示

  • ラジオ ボタンが配置されている UI の階層構造を表示しています。
  • 5 個の異なる UI 要素があります。

パス エディター

  • RanoreXPath 式のノードの視覚的な表現を表示しています。
  • ルートおよび最終ノードを含め、計 7 個のノードがあります。

パス エディターに表示されている、自動生成された RanoreXPath をより詳しく見てみましょう。

RanoreXPath robustness through wildcards

ルート RxMainFrame:
このノードは、テスト対象アプリ (つまり、デモ アプリ) のプログラム ウィンドウを表しており、この 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 の例 を参照してください。