[英]How do you write in Robot Framework a dynamic element with multiple identifiers?
[英]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
經過一些修補,我找到了解決方案。 也許有一種更有效的寫法,如果有人有任何建議,我想知道那是什么。 我的解決方案:
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.