Is it possible to create a nested FOR loop in RobotFramework?

11,767 views
Skip to first unread message

antonio III cabreira

unread,
Oct 13, 2011, 10:48:14 AM10/13/11
to robotframework-users
Need help in creating a nested FOR loop. I was able to create a For
loop but when i add an additional For loop inside it, I get a message
"FOR loop contains no keywords"

Below is my code:
@{list_username} = Convert To List ${username}
@{list_password} = Convert To List ${password}
:For ${user} IN @{list_username}
\ :For ${pass} IN @{list_password}
\ Input Text ${login_username_textbox} ${user}
\ Click Element ${login_password_textbox} dont_wait
\ Input Password ${login_password_textbox} ${pass}
\ Click Button ${login_button}
\ Click Element sms-logout-button-button


Am I doing a nested loop correctly?

Thomas Klein

unread,
Oct 13, 2011, 10:55:14 AM10/13/11
to robotframework-users
Hey,

You cannot create a nested :FOR loop directly afaik. But you can work
around this issue by creating a keyword with the inner :FOR loop and
calling that keyword in the outer loop.

Cheers,

Thomas.

On Oct 13, 4:48 pm, antonio III cabreira

g28

unread,
Oct 13, 2011, 11:34:13 AM10/13/11
to robotframework-users
Tom is correct. Keywords with a loop that contain a keyword to
another loop.

Here is a basic example that I wrote. I needed a way to add records
in our app up to 5 levels deep and control how many records are added
on each level.

Loop 1 add a records
Loop 2 add b records to a
Loop 3 add c records to b
Loop 4 add d records to c
Loop 5 add e records to d


*** Test Cases ***
NestedLoopExample
comment LOOP TIMES
${LoopCount} Set Variable 1

comment LEVEL 1
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop
comment LEVEL 2
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop2 ${var2}
comment LEVEL 3
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop3 ${var2}
comment LEVEL 4
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop4 ${var2}
comment LEVEL 5
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop5 ${var2}


*** Keywords ***
kLoop
ClickElement xpath=//*[@id="NewBtn"]
kSave
kLoop2
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kSave
kLoop3
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop31 ${var3}
kLoop31
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kSave
kLoop4
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ ${var3}= Set Variable ${Arg1} ${var2}
\ kLoop41 ${var3}
kLoop41
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop42 ${var3}
kLoop42
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kSave
kLoop5
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ ${var3}= Set Variable ${Arg1} ${var2}
\ kLoop51 ${var3}
kLoop51
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ ${var3}= Set Variable ${Arg1} ${var2}
\ kLoop52 ${var3}
kLoop52
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kLoop53 ${var3}
kLoop53
[Arguments] ${Arg1}
: FOR ${var} IN RANGE 0 ${LoopCount}
\ ${var2}= Evaluate ${var} + 1
\ kSave
kSave
WaitUntilPageContainsElement xpath=//*[@id="SaveBtn"]
Focus xpath=//*[@id="SaveBtn"]
SetSeleniumSpeed 1 seconds
PressKeyNative 9
ClickElement xpath=//*[@id="SaveBtn"]
SetSeleniumSpeed 0 seconds
Reply all
Reply to author
Forward
0 new messages