要素の繰り返し

要素の繰り返しステップは、アプリケーション ツリー内のノードを反復処理します。[スコープ ファインダー] と呼ばれるコンポーネント ファインダーがあります。これは、ツリーの一部を特定し、反復するノードを検出します。イテレーションは、スコープ ノードの下にないノード (スコープ ファインダ-によって検出されたノード) についてはループしません。[スコープ ファインダー] は、ステップ内のすべてのファインダーと似ています。これは、このステップが動作するツリーの一部を検出するためです。スコープ ファインダーは常に、要素の繰り返しステップの中で一意となる名前を持つ必要があります。

要素の繰り返しステップの要素ファインダーは、ファインダーの名前と "> DIV" などの相対セレクターで設定されています。スコープ ファインダーと同様に、要素ファインダーは常に、要素の繰り返しステップの中で一意となる名前を持つ必要があります。

相対セレクターは、ループするエレメントを検出するために使用されます。このセレクターは、別のセレクターと結合されて実際の新しいセレクターを形成するようになっているため、相対セレクターと呼ばれます。スコープ ファインダーにセレクター "DIV[class="someClass"]" があり、要素ファインダーのセレクターが "> DIV" の場合、結合セレクターは "DIV[class="someClass"] > DIV" のようになります。反復するエレメントを検出するために使用される実際のファインダーはスコープ ファインダーと本質的に同じですが、セレクターがこの新しい結合セレクターに置き換えられます。

要素の繰り返しステップは次のように動作します。開始イテレーションでは、結合されたファインダーにより最初に検出されたエレメントは、要素ファインダーの名前となるエレメントです。次のイテレーションで検出されるエレメントは、前のエレメントの次に見つかるエレメントです。繰り返しステップの実行中にツリーが変更され、新しいエレメントがツリーに表示された場合、現在のイテレーションのエレメントの前または後に現れるかどうかに応じて、この新しいエレメントがその後のイテレーションに含まれる場合と含まれない場合があります。

要素ファインダーで見つかったエレメントは、他のファインダーのリファレンスとしてループの本文内で使用されます。

以下は、要素の繰り返しステップの一例です。

要素の繰り返しステップ

レコーダー ビューの [ループ] メニュー

「要素の繰り返し」ステップは、他のステップと同様にエディター ペインに直接挿入できますが、レコーダー ビュー内で右クリックし、ショートカット メニューを使用して挿入する方が簡単です。[ループ] と呼ばれるメニュー項目を選択します。ループには次の 4 つのサブメニューがあります。

  • すべての同位層

  • 各 <タグ名> 同位層

  • 各 <タグ名> (<レベル>) 上位層

  • テーブル行繰り返し

これらのサブメニューは、現在選択されているエレメントに応じてさまざまなエレメントをループする要素の繰り返しステップを作成するのに役立ちます。Design Studio では、要素の繰り返しステップにガード チョイス ステップが挿入されます。これにより、ループ ステップが実行される前にスコープ ファインダーがツリー内に確実に表示されるようになります。

すべての同位層
このメニュー項目は、選択されたタグのすべての同位層をループする要素の繰り返しステップを挿入します。スコープ ファインダーは、選択されたエレメントの親 (スコープ ノードと呼ばれる) を検出し、エレメント セレクターは "> *" となります。つまり、スコープ ノードの下にある任意の子ノードを検出します。
各 <タグ名> 同位層
このメニュー項目は、選択されたタグのすべての同位層を同じタグ名でループする要素の繰り返しステップを挿入します。スコープ ファインダーは、選択されたエレメントの親 (スコープ ノードと呼ばれる) を検出し、選択されたエレメントがタグ名 P を持つ場合、エレメント セレクターは "> P" となります。
各 <タグ名> (<レベル>) 上位層

このメニュー項目は、ロボットで組み込みブラウザを使用する場合にのみ使用します。このコマンドは、ループのための適切な上位層ノードを検索します。そうすることで、自身に似た同位層ノードが複数あるノード、または以下のタグ名のエレメントを持つ上位層ノードを探します。"TR"、"LI"、"TD"、"TH"、"DD"、"OPTION"、"PARAM"以下の場合、2 つのノードが類似します。

  • タグ名が同じで、クラス属性がない。
  • タグ名が同じで、同じクラス属性である。

次の HTML で内部の P タグを 1 つ選択すると、そのループは囲んでいる DIV タグ内の 1 つの P タグを繰り返さずに、P タグを含む DIV タグをループします。

例:


<DIV>
  <DIV>
    <P>1</P>
  </DIV>
  <DIV>
   <P>2</P>
  </DIV>
</DIV> 

メニュー項目の丸括弧内のレベルは、選択されたエレメントのいくつ上のレベルに実際の要素の繰り返しが配置されているかを示します。上記の例では、このレベルは 1 です。メニュー項目に表示されるタグ名は、実際の要素の繰り返しのタグ名です。

テーブル行繰り返し
このメニュー項目は、ロボットで組み込みブラウザを使用する場合にのみ使用します。このコマンドは、表のすべての行を繰り返し処理する要素の繰り返しステップを挿入します。

要素の繰り返しステップの使用

要素の繰り返しステップを使用する際には、いくつかの点を考慮する必要があります。

イテレーションのスキップ
一部の初期ノードや各 2 番目のノードなど、一部のエレメントをループ中にスキップする場合は、ループ内の最初のステップとして、テストが true である場合に継続される条件付きステップを挿入します。たとえば、次の条件では、ループはすべての偶数回の繰り返しをスキップします。

=i % 2 == 0

ループ ステップ内のファインダー
Kofax RPA は、検出されたエレメントに相対的な要素を自動的に検出します。レコーダー ビューで要素を右クリックしてアクションを挿入するときに、この要素が検出された指定エレメント内にある場合、生成されたファインダーは、次のように検出された要素に対して相対的になります。

結果は下図のようになります。実際の結果は、選択したエレメントと、要素ファインダーに付けた名前によって異なります。