J'ai besoin de créer une boucle imbriquée dans le framework Robot. Pouvez-vous s'il vous plaît m'aider à le faire?

${contents}=    Get File    ${file path}
 @{lines}=    Split to lines    ${contents}
 ${matched elements}=    Get Webelements    ${LABEL PORTAIL XPATH }
 : FOR    ${element}    IN    @{matched elements}
 \    ${text}=    Get Text    ${element}
 \    : FOR    ${line}    IN    @{lines}
 \    Run Keyword If    '${text}' == '${line}'    Log    '${text} matched'

J'ai besoin d'une boucle imbriquée qui compare tous les ${text} avec tous les @{lines} dans le fichier.

Merci d'avance

0
Narek Hakobyan 21 avril 2017 à 16:41

3 réponses

Meilleure réponse

Pas de boucles imbriquées dans RF; cela ne peut être fait qu'en appelant un mot-clé avec la boucle interne, dans la boucle externe.

Dans votre cas particulier, vous pouvez vous en passer - comme vous voulez faire correspondre la ligne complète, c'est faisable via Should Contain:

${contents}=    Get File    ${file path}
@{lines}=    Split to lines    ${contents}
${matched elements}=    Get Webelements    ${LABEL PORTAIL XPATH }
: FOR    ${element}    IN    @{matched elements}
\  ${text}=     Get Text    ${element}
\  ${present}=  Run Keyword And Return Status    Should Contain    ${lines} 
${text}
\    Run Keyword If  ${present}    Log    '${text} matched'

Si vous recherchiez une correspondance partielle - c'est-à-dire ${text} pour faire partie d'un membre ${lines}, alors ce ne serait pas possible comme ça.

3
Todor Minakov 21 avril 2017 à 18:56

Imbriqué pour les boucles

Le fait d'avoir des boucles for imbriquées n'est pas pris en charge directement , mais il est possible d'utiliser un mot-clé utilisateur dans une boucle for et d'en créer une autre.

*** Keywords ***
Handle Table
    [Arguments]    @{table}
    :FOR    ${row}    IN    @{table}
    \    Handle Row    @{row}

Handle Row
    [Arguments]    @{row}
    :FOR    ${cell}    IN    @{row}
    \    Handle Cell    ${cell}

Référencé à partir de: http://robotframework.org/robotframework/latest/RoberFrame .html # boucles imbriquées

0
Mayur Agarwal 5 oct. 2017 à 10:46

Ce n'est pas possible sans un mot clé personnalisé contenant la boucle interne. Voir doc: http://robotframework.org/robotframework/latest/RobotFrame .html # boucles imbriquées

Je dirais qu'une telle logique devrait toujours être écrite en utilisant un langage plus fort (python, java ...) et ensuite simplement appelée depuis RF.

2
Jan Kovařík 21 avril 2017 à 14:16