Pour chaque boucle

L'étape Pour chaque boucle exécute une itèration sur les nœuds de l'arborescence d'application. Elle dispose d'un localisateur de composant appelé Localisateur de portée, qui définit une partie de l'arborescence pour trouver les nœuds sur lesquels l'itération doit être exécuter. L'itération n'exécute jamais de boucle sur les nœuds qui ne sont pas en dessous du nœud de portée(le nœud trouvé par le localisateur de portée). Le localisateur de portée est similaire à n'importe quel localisateur dans une étape, car il trouve une partie de l'arborescence sur laquelle l'étape est exécutée. Le localisateur doit toujours avoir un nom et il doit être unique à l'intérieur de l'étape Pour chaque boucle.

Le localisateur d'élément de l'étape Pour chaque boucle se compose du nom du localisateur et d'un sélecteur relatif, tel que "> DIV". Comme le localisateur de portée, le localisateur d'élément doit aussi toujours avoir un nom et il doit être unique à l'intérieur de l'étape Pour chaque boucle.

Le sélecteur relatif est utilisé pour trouver les éléments sur lesquels exécuter une boucle. Le sélecteur est dit relatif parce qu'il est censé être combiné avec un autre sélecteur pour former un nouveau sélecteur réel. Si le localisateur de portée a un sélecteur "DIV[class="someClass"]" et que les localisateurs d'éléments est ">DIV", le sélecteur combiné est "DIV[class="someClass"] > DIV". Le localisateur réel utilisé pour trouver les éléments sur lesquels l'itération doit être exécutée est essentiellement le même que le localisateur de portée, sauf que le sélecteur est remplacé par ce nouveau sélecteur combiné.

L'étape pour chaque boucle fonctionne comme suit. Dans la première itération, le premier élément trouvé par le localisateur combiné est celui qui sera lié au nom du localisateur d'élément. Lors de l'itération suivante, l'élément trouvé est le prochain élément trouvé après le précédent. Si l'arborescence a changé pendant l'exécution de l'étape Boucle et qu'un nouvel élément apparaît dans l'arborescence, le nouvel élément peut ou non être inclus dans la future itération selon qu'il est apparu après ou avant l'élément de l'itération en cours.

L'élément trouvé par le localisateur d'élément peut être ensuite utilisé à l'intérieur du corps de la boucle comme référence dans d'autres localisateurs.

Il s'agit d'un exemple d'étape Pour chaque boucle :


Étape Pour chaque boucle

Menu Boucle de la vue Enregistreur

L'étape Pour chaque boucle peut être insérée directement comme toute autre étape dans le volet de l'éditeur, mais il est plus pratique de l'insérer en cliquant avec le bouton droit de la souris dans la vue de l'enregistreur et en utilisant le menu contextuel. Sélectionnez une option de menu appelée Boucle, qui comporte quatre sous-menus :

  • Tous les descendants

  • Chaque descendant <nom de balise>

  • Chaque ancêtre <nom de la balise> (<niveau>)

  • Chaque ligne de tableau

Ces sous-menus vous aident à créer une étape Pour chaque boucle qui exécute une boucle sur divers éléments en fonction de l'élément actuellement sélectionné. Design Studio insère également une étape Choix contrôlé autour de l'étape Pour chaque boucle, ce qui garantit que le localisateur de portée est trouvé dans l'arborescence avant que l'étape Boucle ne soit exécutée.

Tous les descendants
L'option de menu insère une étape Pour chaque boucle exécute une boucle sur tous les descendants de la balise sélectionnée. Le localisateur de portée trouve le parent (appelé le nœud Portée) de l'élément sélectionné, et le sélecteur d'élément est "> *". C'est-à-dire qu'il trouve les nœuds enfants sous le nœud de portée.
Chaque descendant <nom de balise>
Cette option de menu insère une étape Pour chaque boucle qui exécute une boucle sur tous les descendants de la balise sélectionnée ayant le même nom de balise. Le localisateur de portée trouve le parent (appelé nœud Portée) de l'élément sélectionné, et si l'élément sélectionné a un nom de balise P, le sélecteur d'élément est "> P".
Chaque ancêtre <nom de la balise> (<niveau>)

Cette option de menu est spécifique à l'utilisation du navigateur intégré dans les robots. La commande recherche un bon nœud d'ancêtre sur lequel exécuter une boucle. Dans ce cas, il recherche soit un nœud ancêtre ayant un ou plusieurs nœuds descendants qui lui ressemblent, soit un élément avec l'un des noms de balises suivants : "TR", "LI", "TD", "TH", "DD", "OPTION", "PARAM". Deux nœuds sont similaires si :

  • S'ils ont le même nom de balise et n'ont pas d'attribut de classe.
  • Ils sont le même nom de balise et le même attribut de classe.

Si vous sélectionnez l'une des balises P internes dans le HTLM suivant, la boucle n'exécute pas d'itération sur une balise P dans la balise DIV qui l'entoure, mais elle passe sur les balises DIV contenant la balise P.

Par exemple :


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

Le niveau entre parenthèses indique à combien de niveaux au-dessus de l'élément sélectionné se trouve l'élément de boucle. Dans l'exemple ci-dessus, il s'agit de 1. Le nom de balise indiqué dans l'option de menu est le nom de balise de l'élément de boucle.

Chaque ligne de tableau
Cette option de menu est spécifique à l'utilisation du navigateur intégré dans les robots. La commande insère une étape Pour chaque boucle qui exécute un itération sur toutes les lignes d'un tableau.

Utiliser l'étape Pour chaque boucle

Vous devez tenir compte d'un certain nombre d'éléments lorsque vous utilisez l'étape Pour chaque boucle.

Ignorer des itérations
Si vous voulez ignorer un élément pendant l'exécution comme quelques nœuds initiaux ou un nœud sur deux, insérez une étape conditionnelle comme première étape à l'intérieur de la boucle qui continue lorsque le test est vrai. Par exemple, avec la condition suivante, la boucle ignore toutes les itérations égales.

=i % 2 == 0

Localisateur dans l'étape Boucle
Kofax RPA trouve automatiquement les éléments relatifs à l'élément trouvé. Si vous insérez une activité en cliquant avec le bouton droit de la souris dans la vue de l'enregistreur et que l'élément se trouve à l'intérieur d'un élément trouvé nommé, le localisateur généré est relatif à l'élément trouvé, comme indiqué ci-dessous.

Le résultat doit ressembler à ce qui suit. Le résultat dépend de l'élément que vous sélectionnez et du nom que vous avez donné au localisateur d'élément.