在 Robot Framework 的循环中包含一个循环

Include a loop in a loop in Robot Framework

我在 RF 的另一个现有循环中使用循环时遇到问题 这只是我需要的一个例子:我有一个人员列表 (@{people}),每个人都有一个项目列表。

我执行以下操作:

:FOR | ${person} | IN @{people} 
\ | @{items}= | Create List | xpath=//div[@class='item'] 
\ | :FOR ${item} | IN @{items} 
\ | \ | ...

问题在第二个:因为我得到了一个错误 'keyword :FOR is not found'。我做错了什么吗?或者有没有其他方法可以在另一个循环中包含一个循环?

According to User Guide,不直接支持嵌套的 for 循环,但可以在 for 循环内使用 user 关键字并在那里有另一个 for 循环

*** Keywords ***
Loop over people
    :FOR  ${person}  IN  @{people} 
    \  @{items}=  Create List  xpath=//div[@class='item'] 
    \  Loop over items  @{items}

Loop over items    
    [Arguments]  @{items}
    :FOR  ${item}  IN  @{items} 
    \  ...

这个问题也和你的一样

这里也分享同样的答案。

嵌套 for 循环

直接不支持嵌套 for 循环,但可以在 for 循环内使用 user 关键字并在那里有另一个 for 循环。

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

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

引用自:http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#nested-for-loops

可以使用这样的自定义关键字:

请注意,这不支持 While 循环、不是 "IN RANGE" 的 For 循环或 Robot Framework 样式的变量构造(因此出现问题),但我一直在测试时使用它来避免为内部 for 循环使用第二个关键字。干净多了。