要素の繰り返し
要素の繰り返しステップは、アプリケーション ツリー内のノードを反復処理します。[スコープ ファインダー] と呼ばれるコンポーネント ファインダーがあります。これは、ツリーの一部を特定し、反復するノードを検出します。イテレーションは、スコープ ノードの下にないノード (スコープ ファインダ-によって検出されたノード) についてはループしません。[スコープ ファインダー] は、ステップ内のすべてのファインダーと似ています。これは、このステップが動作するツリーの一部を検出するためです。スコープ ファインダーは、常に要素の繰り返しステップの中で一意となる名前を持ちます。
要素の繰り返しステップの要素ファインダーは、ファインダーの名前と "> DIV" などの相対セレクターで構成されています。スコープ ファインダーと同様に、要素ファインダーは常に、要素の繰り返しステップの中で一意となる名前を持つ必要があります。
相対セレクターは、ループするエレメントを検出するために使用されます。このセレクターは、別のセレクターと結合されて実際の新しいセレクターを形成するようになっているため、相対セレクターと呼ばれます。スコープ ファインダーにセレクター "DIV[class="someClass"]" があり、要素ファインダーのセレクターが "> DIV" の場合、結合セレクターは "DIV[class="someClass"] > DIV" になります。反復するエレメントを検出するために使用される実際のファインダーはスコープ ファインダーと本質的に同じですが、セレクターがこの新しい結合セレクターに置き換えられます。
要素の繰り返しステップは次のように動作します。開始イテレーションでは、結合されたファインダーにより最初に検出されたエレメントは、要素ファインダーの名前となるエレメントです。次のイテレーションで検出されるエレメントは、前のエレメントの次に見つかるエレメントです。繰り返しステップの実行中にツリーが変更され、新しい要素がツリーに表示された場合、現在の反復の要素の前または後に現れるかどうかに応じて、この新しい要素がその後の反復に含まれる場合と含まれない場合があります。
要素ファインダーで見つかったエレメントは、他のファインダーのリファレンスとしてループの本文内で使用されます。
以下は、要素の繰り返しステップの一例です。

レコーダー ビューの [ループ] メニュー
要素の繰り返しステップは、エディター ペイン内の他のステップと同じように直接挿入することができます。レコーダー ビュー内で右クリックし、ショートカット メニューを使用して挿入することをお勧めします。[ループ] というメニュー項目を選択します。このメニュー項目には次のようなサブメニューがあります。
これらのサブメニューは、現在選択されているエレメントに応じてさまざまなエレメントをループする要素の繰り返しステップを作成するのに役立ちます。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 です。メニュー項目に表示されるタグ名は、実際の要素の繰り返しのタグ名です。
テーブル行繰り返し
このメニュー項目は、ロボットで組み込みブラウザを使用する場合にのみ使用します。このコマンドは、表のすべての行を繰り返し処理する要素の繰り返しステップを挿入します。
各 <タグ名> タグの繰り返し
HTML ページ全体の指定されたタグを持つすべての要素をループする要素の繰り返しステップを挿入します。
次のようなサブメニューを使用できます。
-
プレーン: 指定されたタグを持つすべての要素を、それ以上の条件なしでループします。
-
クラス付き: <クラス名>: 特定のクラスを持ち、指定されたタグを持つすべての要素をループします。
-
クラス付き: <class_name1>, <class_name2>: 選択した要素の特定のクラスのタグをループします。
-
上位のすべてのクラス: 可能なすべてのクラスのタグをループします。3 つ以上のクラスが存在する場合は、このサブメニューが表示されます。
サブメニューは動的であり、クラスを使用できるかどうか応じて異なる場合があります。
要素の繰り返しステップの使用
要素の繰り返しステップを使用する際には、いくつかの点を考慮する必要があります。
- イテレーションのスキップ
- 一部の初期ノードや各 2 番目のノードなど、一部のエレメントをループ中にスキップする場合は、ループ内の最初のステップとして、テストが true である場合に継続される条件付きステップを挿入します。たとえば、次の条件では、ループはすべての偶数回の繰り返しをスキップします。
=i % 2 == 0
- ループ ステップ内のファインダー
-
Tungsten RPA は、検出されたエレメントに相対的な要素を自動的に検出します。レコーダー ビューで要素を右クリックしてアクションを挿入し、検出された名前付きの要素内に要素がある場合、ここに示すように、生成されるファインダーは検出された要素に関連するファインダーになります。

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