簡體   English   中英

你會如何在 Robot Framework 的循環中寫這個

[英]How would you write this in a loop in Robot Framework

所以我目前正在學習機器人框架,而不是使用重復代碼,我正在嘗試利用循環來使我的代碼更易於維護。 不幸的是,我不知道如何解決這個問題,我想把它放到一個循環中。 這是一系列帶有下拉答案的問題,每次測試運行時我都想選擇不同的答案。 我已經嘗試了幾個 foor 循環選項,但它們都不起作用。 基本上每個循環都應單擊下拉菜單並選擇一個隨機答案,直到所有問題都得到回答。

Check if User can change "Company" information
    Scroll Element Into View                ${USER_MENU_SCROLL_TO_COMPANY_MENU}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_COMPANY_EDIT_BUTTON}
    ${random_description1} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION1})
    click element                           ${random_description1}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_2}
    ${random_description2} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION2})
    click element                           ${random_description2}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_3}
    ${random_description3} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION3})
    click element                           ${random_description3}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_4}
    ${random_description4} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION4})
    click element                           ${random_description4}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_5}
    ${random_description5} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION5})
    click element                           ${random_description5}

我試過這樣的事情,但它想連接我的變量中的值。

FOR ${i} IN RANGE 1 5
    ${random_description} = Evaluate random.choice(@{USER_MENU_DROP_DOWN_QUESTION}+${i})
    click element ${USER_MENU_CLICK_DROP_DOWN_}+${i}
    click element ${random_description}
    sleep 1s
END

您的問題是構建變量的名稱。 您可以將變量作為列表的列表。

這是我對您當前代碼的解決方案的看法:

FOR ${i} IN RANGE 1 5
    ${random_description} = Evaluate random.choice(@{USER_MENU_DROP_DOWN_QUESTION${i}})
    click element ${USER_MENU_CLICK_DROP_DOWN_${i}}
    click element ${random_description}
    sleep 1s
END

編輯——這是最初的答案。 下面是一個經過驗證的解決方案。

*** Test Cases ***
Loop in menus
    @{USER_MENU_DROP_DOWN_QUESTION1}=    Create List    question11    question12    question13    question14    question15
    @{USER_MENU_DROP_DOWN_QUESTION2}=    Create List    question21    question22    question23    question24    question25
    @{USER_MENU_DROP_DOWN_QUESTION3}=    Create List    question31    question32    question33    question34    question35
    @{USER_MENU_DROP_DOWN_QUESTION4}=    Create List    question41    question42    question43    question44    question45
    @{USER_MENU_DROP_DOWN_QUESTION5}=    Create List    question51    question52    question53    question54    question55
    @{USER_MENU_CLICK_DROP_DOWN_1}=    Create List    item11    item12    item13    item14    item15
    @{USER_MENU_CLICK_DROP_DOWN_2}=    Create List    item21    item22    item23    item24    item25
    @{USER_MENU_CLICK_DROP_DOWN_3}=    Create List    item31    item32    item33    item34    item35
    @{USER_MENU_CLICK_DROP_DOWN_4}=    Create List    item41    item42    item43    item44    item45
    @{USER_MENU_CLICK_DROP_DOWN_5}=    Create List    item51    item52    item53    item54    item55
    FOR    ${i}    IN RANGE    0    5
        ${random_description}=    Evaluate    random.choice(${USER_MENU_DROP_DOWN_QUESTION${i+1}})
        Log To Console    \nclick element ${USER_MENU_CLICK_DROP_DOWN_${i+1}}[${i}]
        Log To Console    click element ${random_description}\n
        sleep    1s
    END

Output: 控制台輸出

經過一些修補,我找到了解決方案。 也許有一種更有效的寫法,如果有人有任何建議,我想知道那是什么。 我的解決方案:

Check if User can change "Company" information
Scroll Element Into View                ${USER_MENU_SCROLL_TO_COMPANY_MENU}
sleep                                   1s
click element                           ${USER_MENU_CLICK_COMPANY_EDIT_BUTTON}
${random_answer1} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_0})
${random_answer2} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_1})
${random_answer3} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_2})
${random_answer4} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_3})
${random_answer5} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_4})
@{random_answers} =     Create List     ${random_answer1}     ${random_answer2}      ${random_answer3}       ${random_answer3}       ${random_answer4}
FOR    ${question}    IN    @{random_answers}
    click element    ${USER_MENU_CLICK_NEXT_DROP_DOWN}
    Click Element    ${question}
    Sleep    1s
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM