結果がありません。
リクエストされたページは見つかりませんでした。記事を探すには、検索条件を絞るか、上記のナビゲーションを使ってください。
この章では、特定のシナリオにおける RanoreXPath 式の詳細な例を説明します。
以下のスクリーンキャストで、この章で説明している内容を確認できます。
このセクションのすべての例は、Ranorex Studio Demo Application を使用しています。ほとんどの例で、このアプリの UI-element test area タブを使用しています。
Ranorex demo application – UI-element test area
以下のリンクからダウンロードできます。
File: Ranorex Studio Demo Application
ここでは、ユーザー インターフェースでシンプルなボタンを識別してから、対応する RanoreXPath 式が任意のボタンにマッチするように汎化します。
Ranorex Spy で、Demo Application の UI-element test are にある、Exit ボタンをトラッキングします。
トラッキング後の Spy の表示は、以下のようになります。
RxMainFrame
の子であることを示している、ツリー ブラウザーの表示@controlname='RxButtonExit'
で識別されている Exit ボタンRanoreXPath の汎化は、詳細度を下げ、堅牢性を向上させることを意味します。
今回の例では、Exit ボタンが、button
ロールによってのみ識別されるよう、RanoreXPath を汎化します。これは、ボタンの属性を削除することでおこないます。Exit ボタンは、要素ツリーのこのレベルにおいて、唯一のボタンであるため、属性を削除しても引き続き正しく識別され、その RanoreXPath は UI の変更に対してより堅牢になります。
Spy で、RanoreXPath 行をクリックし、[@controlname='RxButtonExit']
属性を削除し、Enter を押下します。
Spy での表示は以下のようになります。
button
ロールのみが指定された、汎化された RanoreXPat要素ツリーの同じレベルに複数のボタン (または、汎化した RanoreXPath のいずれかの種類の UI 要素) が存在する場合、RanoreXPath 式はそれらすべてを識別します。
UI 要素をトラッキングすると、Ranorex Studio は RanoreXPath を自動的に生成し、その際に、識別に使用する属性も自動的に決定されます。当然のことながら、RanoreXPath で識別に使用する属性は変更できます。
Demo Application の UI-element test area にある、Exit ボタンをトラッキングします。
RanoreXPath 行をクリックし、パス エディターに切り替えます。
変更したい属性があるノード (例えば button ノード) を選択します。
任意の属性を選択/選択解除します。例えば、controlname 属性を選択解除し、代わりに controltext を選択します。RanoreXPath が自動的に変更されます。
ワイルドカードによって、RanoreXPath を UI 構造の変化に対してより堅牢にすることができます。
/* |
1 ツリー レベルのあらゆる UI 要素 |
/? |
0 または 1 ツリー レベルのあらゆる UI 要素 |
// |
複数のツリー レベルのあらゆる UI 要素 |
Demo Application の UI-element test area 全体をトラッキングします。
Ranorex Spy での表示は以下のようになります。
/?
ワイルドカードが挿入されています。対象の要素 3 は、ルート要素 1 の子孫の要素であり、必須ではない最大 2 つ (0,1 または 2) の UI 要素 2 が間にあります。
UI の中から、”深さ” が分からない要素を識別する必要がある場合があります。any descendants ワイルドカードを使用することで、ルート ノードと最終ノードの間にある、すべての中間ノードを包括できます。
Ranorex Spy のツリー ブラウザーで、以下の RanoreXPath 式を入力します。
radiobutton
ロールを持つ任意の UI 要素です。この式は、ルート要素の子孫である、すべてのラジオ ボタンを識別します。Spy での表示は以下のようになります。
識別したい要素の UI での “深さ” が分かっていて、中間ノードが無関係であることが分かっている場合には、RanoreXPath を堅牢にするために、any ワイルドカードが使用できます。
radiobutton
ロールを持つ任意の UI 要素です。この式は、ルート要素の 3 レベル下にある、すべてのラジオ ボタンを識別します。Spy での表示は以下のようになります。
radiobutton
要素が表示されています。他のレベルにあるラジオ ボタンは識別されていません。RanoreXPath 式が汎化されすぎていて、識別される UI 要素が多すぎる、あるいは正しくない場合があります。このような場合には、式を詳細化する必要があります。
この例ではまず、非常に汎化された RanoreXPath を作成します。Ranorex Studio Demo Application の UI-element test area タブにある、すべてのボタンを識別します。
Spy で以下の RanoreXPath を入力し、Enter を押下します。
17 個のボタンは明らかに多すぎるため、RanoreXPath を詳細化する必要があります。ここでは、ボタンに属性を追加します。非表示状態ではないボタンのみを識別するために、visible
属性を指定します。
RanoreXPath の最後の部分を以下のように変更し、Enter を押下します。
ボタンの数が 2 つ減っただけなので、RanoreXPath をさらに詳細化する必要があります。and
演算子を使用して、さらに別の属性を組み合わせることができます。
RanoreXPath の最後の部分を以下のように変更し、Enter を押下します。
and
演算子については、⇢ RanoreXPath の構文 を参照してください。詳細化した RanoreXPath 式によって、2 個のボタンのみが識別されるようになりました。
RanoreXPath が複数の要素を識別している場合、要素ツリー内の位置を指定することで、要素を選択できます。
Ranorex Spy で以下の RanoreXPath を入力し、Enter を押下します。
[2]
を追加することで、直前の RanoreXPath によって識別されている 2 個の要素から、2 番目の要素を選択します。Demo Application の UI では、Button 1 が識別されます。
要素ツリー内の位置のみが関係します。上記の Button 1 のように、UI 上では要素の位置は異なるかもしれません。
ツリー ビューは、一般的な UI 要素です。ここでは、Ranorex Studio がこれらの UI 要素をどのように識別するのかを説明します。
Ranorex Spy で、Track ボタンをクリックします。.
Demo Application の UI-element test area で、Web and mobile testing ツリー アイテムをクリックします。
Ranorex Spy での表示は以下のようになります。
/?/?
) を自動的に挿入します。Ranorex Spy で、Track ボタンをクリックします。
Demo Application の UI-element test area で、Web and mobile testing の子のツリー アイテム Endpoints をクリックします。
Ranorex Spy での表示は以下のようになります。
//
) 演算子によって包括されます。Ranorex Studio は、すべてのサブツリー アイテムを、通常のツリー アイテムとして扱い、同じ様に述語 (属性+値) を使用して識別します。ツリー構造が干渉しないようにするために、any descendants 演算子も挿入されます。これにより、ツリー アイテムがツリー内のどこにいても識別できます。
ツリー アイテムの兄弟を識別したい場合には、⇢ 軸指定子 (Axis) を使用することで識別できます。軸指定子は、特定のノードを基準にしたノードの指定がおこなえます。以下で、following-sibling
を使用した例を説明します。
Ranorex Spy で、以下の RanoreXPath を入力して Enter を押下します。
following-sibling::treeitem
を追加した RanoreXPathです。この軸指定子は、treeitem
ロールを持ち、Spy の要素ツリー内で同じレベルにあるEndpoints ツリー アイテムの下にある、すべての UI 要素を識別することを意味します。following-sibling
軸指定子は、後に続く兄弟が複数ある場合、そのすべてを返します。ここでは、テーブル アイテムの識別方法について説明します。
この例では、Demo Application の UI-element test area にあるテーブルから、Thomas Bach という名前の人物の年齢を含むセルを、より堅牢な形で識別します。Thomas という名前を含むセルと、これに続く年齢を含むセルの両方を識別する必要があります。
最初に、Thomas という名前を含むセルを識別します。以下の画像のように、セルをトラッキングして、セルへの絶対位置指定での RanoreXPath を生成するのが簡単な方法です。
accessiblename = 'FirstName Row3'
であるセルを識別しています。この属性値は、テーブルにおけるセルの位置を示しています。このセルの現在の値は Thomas です。絶対位置指定の RanoreXPath には問題があります。テーブルをソートやシャッフルするなどして、テーブルが変更されると、識別されたセルの値は Thomas ではなくなります。
accessiblename 属性を使用してセルを識別する代わりに、セル内のテキストを参照する、text 属性を使用します。
しかし、Thomas というテキストを含むセルは 2 つあるため、これはまだ堅牢と言える解決方法ではありません。
FirstName 列が Thomas であるセルのみが識別されるようにする必要があります。セルの accessiblename に関する別の属性を、述語に追加します。
場合によっては、さらに属性や軸指定子を追加して、RanoreXPath をさらに詳細化する必要があります。
FirstName に Thomas を含むセルを堅牢な形で識別できたことで、Thomas の年齢 (age) のセルを識別することができます。
これは、パスを相対指定することでおこないます。つまり、parent
軸指定子 (省略系: ..
) を使用し、アンカー ポイント (Thomas セル) から行 (row) へ戻り、そこから Age のセルへ移動します。これにより、Age のセルが Thomas のセルの位置に関連付けられ、常に正しく識別されるようになります。