【问题标题】:For Loop Iteration Robot FrameworkFor循环迭代机器人框架
【发布时间】:2017-04-20 12:06:34
【问题描述】:

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

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

【问题讨论】:

    标签: for-loop robotframework


    【解决方案1】:
    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

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        希望对你有帮助!!!

        【讨论】:

        • 它将在循环案例中保持循环!不是同时循环 2 个数组,对吗?
        猜你喜欢
        • 2020-12-29
        • 2016-11-18
        • 2018-08-09
        • 2016-03-15
        • 2017-07-02
        • 2020-02-19
        • 2021-07-17
        • 2018-09-16
        • 1970-01-01
        相关资源
        最近更新 更多