For循环迭代机器人框架
问题描述:
使用Robot Framework,我想创建一个循环,其中从第一个下拉列表中选择一个值,然后从第二个下拉列表中选择一个值。用户然后执行另一个选项,然后循环重新开始并重复,直到第一个循环中的所有元素都被选中。For循环迭代机器人框架
目前,我的代码完全遍历第1个下拉菜单,然后完全贯穿第2个下拉菜单,并以选中的两个下拉菜单的最后一个值结束。我需要一次遍历每个下拉列表。我已经将我的代码&包含在相关的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>
答
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
希望它能帮助!
答
为什么你不试图把一个条件,如果你从列表中选择所需的元素,然后出来的循环,而不是遍历整个循环?按照代码,你在这里提到,当然,它将遍历整个列表元素,它选择一个元素,当它到达第二个元素时,它会选择它。这个过程一直持续到最后一个元素。
答
另一种解决方案是保持第二环为关键词,并从第一循环拨打如下:
${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个数组,我说得对吗? – Waman