For Loop Iteration Robot Framework

时间:2016-12-05 23:44:07

标签: for-loop robotframework

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

目前,我的代码完全遍历第一个下拉列表,然后完全通过第二个下拉列表,并以所选择的两个下拉列表的最后一个值结束。我需要能够一次遍历每个下拉列表。我已经包含了我的代码和相关的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>

3 个答案:

答案 0 :(得分:2)

ForInZip Iteration Example
    ${one}=     Get List Items      id=CMB_CLASS_ID
    ${two}=     Get List Items      id=CMB_EVENT_TYPE_ID

    : FOR    ${each1}  ${each2}    IN ZIP    ${one}    ${two}
    \   Select From List By Label   id=CMB_CLASS_ID     ${each1}
    \   Select From List By Label   id=CMB_EVENT_TYPE_ID    ${each2}

注意:这是在2.9版本的RobotFramework中引入的,因此请确保您的版本等于或大于2.9

希望它有所帮助!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

另一个解决方案是将第二个循环保留为关键字并从第一个循环调用如下:

${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}

希望它有所帮助!!!