问题
I need to create a nested loop in Robot framework. Can you please Help me do it?
${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'
I need to have a nested loop which compares all the ${text}
with all the @{lines}
in the file.
Thanks in Advance
回答1:
No nested loops in RF; that can be done only by calling a keyword with the inner loop, in the outer one.
In your particular case though, you could go without it - as you want to match the full line, that's doable through 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'
If you were going after a partial match - i.e. ${text}
to be a part of a ${lines}
member, then it wouldn't be possible like this.
回答2:
It isn't possible without custom keyword containing the inner loop. See doc: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#nested-for-loops
I'd say that such logic should be always written using some stronger language (python, java...) and then just called from RF.
回答3:
Nested for loops
Having nested for loops is not supported directly, but it is possible to use a user keyword inside a for loop and have another for loop there.
*** Keywords ***
Handle Table
[Arguments] @{table}
:FOR ${row} IN @{table}
\ Handle Row @{row}
Handle Row
[Arguments] @{row}
:FOR ${cell} IN @{row}
\ Handle Cell ${cell}
Referenced from : http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#nested-for-loops
来源:https://stackoverflow.com/questions/43544297/nested-loop-in-robotframework