2016-12-05 101 views
0

使用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> 

回答

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

希望它能幫助!

0

爲什麼你不試圖把一個條件,如果你從列表中選擇所需的元素,然後出來的循環,而不是遍歷整個循環?按照代碼,你在這裏提到,當然,它將遍歷整個列表元素,它選擇一個元素,當它到達第二個元素時,它會選擇它。這個過程一直持續到最後一個元素。

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} 

希望它可以幫助!

+0

它將保持循環內循環的情況!不是同時循環2個數組,我說得對嗎? – Waman