Mapping dynamic UI elements | Ranorex
Help CenterUser GuideMapping dynamic UI elements

動的な UI 要素のマッピング

多くのアプリケーションには、いわゆる動的な UI 要素が含まれています。これらの要素は、例えば Web ページをリロードした時など、特定のイベントが発生するたびに変化します。多くの場合、自動テスト ツールで、これらの動的な UI 要素を確実に識別することは困難です。これは、静的な UI 要素に対しては堅牢な識別子 (要素の ID など) が、動的な UI 要素の場合には、常に変化するためです。そのため、動的な UI 要素に対しては、他の識別子を使用する必要があります。

Web 要素の場合、Ranorex Studio は、UI 要素が動的であることを識別するためのアルゴリズムを使用します。これにより、動的な識別子は無視され、代わりに、より堅牢な静的な識別子が使用されます。したがって通常は、ユーザーがリポジトリ アイテムから動的な識別子を見つけ出して編集する必要はありません。

しかしながら、デスクトップ アプリケーションや、モバイル アプリケーションの場合には、動的な識別子を手動で処理する必要があります。リポジトリ アイテムの RanoreXPath を手動で編集することも、特定の動的フレームワークのオブジェクト認識を最適化するための RanoreXPath ウェイトルールを使用することもできます。

通常はウェイトルールを使用することをおすすめします。この章で、その方法について説明します。

RanoreXPath ウェイト ルール

パス ウェイト ルールは、定義した条件の組み合わせを満たす、特定の機能 (Capability) の、特定の属性 (Attribute) のウェイトを設定します。このウェイトは、RanoreXPath を構築する際に使用されます。最も高いウェイトを持つ属性と、空以外の値を持つ属性が、UI 要素の識別に使用されます。

RanoreXPath ウェイト ルールは、ルール エディター (設定 > 詳細 > パス ウェイトの編集、または、Ranorex Spy の パス ウェイトの編集) から編集できます。

RanoreXPath ウェイト ルールは、堅牢なテスト自動化フレームワークのベースとなる、堅牢なリポジトリを自動生成するのに役立ちます。

RanoreXPath ウェイト ルールの追加

ユーザー独自の RanoreXPath ウェイト ルールの追加方法については、ブログ記事 Automated Testing and Dynamic IDs を参照してください。

共有 RanoreXPath ウェイト ルールの追加

設定ダイアログから、ルール エディターを開きます (設定 > 詳細 > パス ウェイトの編集)。任意の XML ルールを、以下のルール ライブラリからコピーして、ルール エディター ダイアログに貼り付けます。

ルール ライブラリ

RxWinForms ControlNet11 Classnames

<rule
name="RxWinForms ControlNet11 Classnames"
enabled="True"
capability="nativewindow"
attribute="class"
setweight="0"
conditionsoperator="and">
    <condition
    source="self"
    attribute="class"
    match="^WindowsForms10.Window"
    negate="False"></condition>
</rule>

RxWeb YUI (Yahoo User Interface Library)

<rule
name="RxWeb YUI (Yahoo User Interface Library)"
enabled="True"
capability="webelement"
attribute="id"
setweight="0"
conditionsoperator="or">
    <condition
    source="self"
    attribute="id"
    match="^yui(_d+)"
    negate="False"></condition>
    <condition
    source="self"
    attribute="id"
    match="^yui-gen.*"
    negate="False"></condition>
</rule>

RxWeb JS Frameworks (ExtJS, Sencha, Ozone Widget ,…)

<rule
name="RxWeb JS Frameworks (ExtJS, Sencha, Ozone Widget ,...)"
enabled="True"
capability="webelement"
attribute="id"
setweight="0"
conditionsoperator="or">
    <condition
    source="self"
    attribute="id"
    match="^ext-.*d+.*"
    negate="False"></condition>
    <condition
    source="self"
    attribute="id"
    match="^[a-z]+-d{4}(-[a-z]*(-d*)?)?"
    negate="False"></condition>
</rule>

RxWeb jQuery

<rule  
name="RxWeb jQuery"  
enabled="True"  
capability="webelement"  
attribute="id"  
setweight="0"  
conditionsoperator="or">  
    <condition  
    source="self"  
    attribute="id"  
    match="^ui-id-d+"  
    negate="False"></condition>  
</rule>

RxWeb ASP.net

<rule  
name="RxWeb ASP.net"  
enabled="False"  
capability="webelement"  
attribute="id"  
setweight="0"  
conditionsoperator="or">  
    <condition  
    source="self"  
    attribute="id"  
    match="^ctl00($|_)(.*($|_))"  
    negate="False"></condition>  
</rule>

RxWeb GWT

<rule  
name="RxWeb GWT"  
enabled="True"  
capability="webelement"  
attribute="id"  
setweight="0"  
conditionsoperator="or">  
    <condition  
    source="self"  
    attribute="id"  
    match="^gwt-uid-d+.*"  
    negate="False"></condition>  
    <condition  
    source="self"  
    attribute="id"  
    match="^isc_.+"  
    negate="False"></condition>  
</rule>

RxWeb MS Dynamics CRM

<rule  
name="RxWeb MS Dynamics CRM"  
enabled="True"  
capability="webelement"  
attribute="id"  
setweight="0"  
conditionsoperator="or">  
    <condition  
    source="self"  
    attribute="id"  
    match="[a-zA-Z_]+_{([0-9 A-F]+(-)?)+}_d+"  
    negate="False"></condition>  
</rule>

RxWin32 Random Control IDs

<rule  
name="RxWin32 Random ControlIds"  
enabled="False"  
capability="nativewindow"  
attribute="controlid"  
setweight="0"  
conditionsoperator="or"></rule>