For loop For循环迭代机器人框架

For loop For循环迭代机器人框架,for-loop,robotframework,For Loop,Robotframework,使用Robot框架,我试图创建一个循环,其中从第一个下拉列表中选择一个值,然后从第二个下拉列表中选择一个值。然后用户执行另一个选项,然后循环重新开始并重复,直到第一个循环中的所有元素都被选中 目前,我的代码完全遍历第一个下拉列表,然后完全遍历第二个下拉列表,最后选择两个下拉列表的最后一个值。我需要能够一次遍历每个下拉列表。我已经包括了我的代码和相关的HTML ${one}= Get List Items id=CMB_CLASS_ID //get all values

使用Robot框架,我试图创建一个循环,其中从第一个下拉列表中选择一个值,然后从第二个下拉列表中选择一个值。然后用户执行另一个选项,然后循环重新开始并重复,直到第一个循环中的所有元素都被选中

目前,我的代码完全遍历第一个下拉列表,然后完全遍历第二个下拉列表,最后选择两个下拉列表的最后一个值。我需要能够一次遍历每个下拉列表。我已经包括了我的代码和相关的HTML

${one}=     Get List Items      id=CMB_CLASS_ID     //get all values from 1st drop down
:FOR    ${each}     IN  @{one}
\   Select From List By Label   id=CMB_CLASS_ID     ${each}
${two}=     Get List Items      id=CMB_EVENT_TYPE_ID    //get all values from 2nd drop down
:FOR    ${each}     IN  @{two}
\   Select From List By Label   id=CMB_EVENT_TYPE_ID    ${each}

<select name="CMB_CLASS_ID" id="CMB_CLASS_ID" onchange="GetClassData();" class="form-control" orgvalue="-1" tabindex="1">
    <option value="-1" master_value="" selected="true">- Not Selected -</option>
    <option value="807000000" master_value="">Budget Lines</option>
    <option value="712000000" master_value="">Documents</option>
</select>
<select name="CMB_EVENT_TYPE_ID" id="CMB_EVENT_TYPE_ID" xml_name="EVENT_TYPE_ID" onchange="GetEventData(this);" class="form-control" orgvalue="-1" tabindex="2">
    <option value="-1" master_value="" selected="true">- Not Selected -</option>
    <option value="905000000" master_value="">Created</option>
    <option value="906000000" master_value="">Updated</option>
</select>
${one}=Get List Items id=CMB\u CLASS\u id//从第一个下拉列表中获取所有值
:对于@{one}中的${each}
\按标签id=CMB\U CLASS\U id${each}从列表中选择
${two}=Get List Items id=CMB\u EVENT\u TYPE\u id//从第二个下拉列表中获取所有值
:对于@{two}中的${each}
\按标签id=CMB\U事件类型\U id${each}从列表中选择
-未选择-
预算项目
文件
-未选择-
创建
更新
注意:这是在RobotFramework的2.9版本中引入的,因此请确保您的版本等于或大于2.9


希望有帮助

为什么不尝试设置一个条件,即如果从列表中选择了所需的元素,则从循环中出来,而不是遍历整个循环?根据您在这里提到的代码,它肯定会遍历整个列表元素,它选择一个元素,当它转到第二个元素时,它选择该元素。这个过程一直持续到最后一个元素。

另一个解决方案是保持第二个循环作为关键字,并从第一个循环调用,如下所示:

${one}=     Get List Items      id=CMB_CLASS_ID     //get all values from 1st drop down
:FOR    ${each}     IN  @{one}
\   Select From List By Label   id=CMB_CLASS_ID     ${each}
\   ${two}=     Get List Items      id=CMB_EVENT_TYPE_ID    //get all values from 2nd drop down
\   SelectFromSecondDropdown ${two}


****Keywords********
SelectFromSecondDropdown 
[Argument]  ${two}
:FOR    ${each}     IN  @{two}
\   Select From List By Label   id=CMB_EVENT_TYPE_ID    ${each}

希望对你有帮助

它将仍然是一个循环内循环的情况!不是同时循环两个数组,对吗?
${one}=     Get List Items      id=CMB_CLASS_ID     //get all values from 1st drop down
:FOR    ${each}     IN  @{one}
\   Select From List By Label   id=CMB_CLASS_ID     ${each}
\   ${two}=     Get List Items      id=CMB_EVENT_TYPE_ID    //get all values from 2nd drop down
\   SelectFromSecondDropdown ${two}


****Keywords********
SelectFromSecondDropdown 
[Argument]  ${two}
:FOR    ${each}     IN  @{two}
\   Select From List By Label   id=CMB_EVENT_TYPE_ID    ${each}