While 迴圈 - daniel-qa/RobotFramework GitHub Wiki

https://robocorp.com/docs/languages-and-frameworks/robot-framework/while-loops

For 迴圈

Only upper limit
    [Documentation]    Loops over values from 0 to 9
    FOR    ${index}    IN RANGE    10
        Log    ${index}
    END

While 迴圈

  • 簡單範例
WHILE  ${Frue} == ${True}
	Log    Demo
END
  • 判斷元件是否存在範例
${element_present}=    Set Variable    False
Log    Value of my_variable is: ${element_present}

Log    判斷下一題按鈕是否Enable
${element_present}    Run Keyword And Return Status    Page Should Not Contain Element    css=.pageCtl2 button:nth-child(2).disable	
	
WHILE  ${element_present} == ${True}
	
	Log    判斷下一題按鈕是否Enable
	${element_present}    Run Keyword And Return Status    Page Should Not Contain Element    css=.pageCtl2 button:nth-child(2).disable
        
	Log    依題型判斷作答
	依題型判斷作答
	
	Log    下一題
	下一題	
	Sleep   3s		
	
	
END

Log    交卷
交卷
  • While 的 limit

While 循環的默認限制為 10000 次迭代,以避免意外的無限循環。上面的示例在達到默認限制 (10000) 時引發異常。

limit 跳出時,不引發錯誤

*** Variables ***
${index}    0

*** Test Cases ***
Example Test Case
 	
	TRY
		WHILE    ${True}    limit=3
			Log    Test ${index}  
			Set Variable    ${index}=${index}+1 
		END
		
	EXCEPT    WHILE loop was aborted    type=start
		Log    The loop did not finish within the limit.
	END
*** Tasks ***
WHILE: A simple while loop using the default loop limit
    WHILE    True    limit=10000
        Log    Executed until the default loop limit (10000) is hit.
    END
  • 跳過 while 循環迭代CONTINUE

CONTINUE可用於跳過循環迭代。循環將繼續進行下一次迭代:

*** Tasks ***
WHILE: Skip a loop iteration with CONTINUE
    ${x}=    Set Variable    ${0}
    WHILE    ${x} < 3
        ${x}=    Evaluate    ${x} + 1
        IF    ${x} == 2    CONTINUE    # Skip this iteration.
        Log    x = ${x}    # x = 1, x = 3
    END
  • 退出 while 循環BREAK

BREAK可以用來跳出循環。它將有效地結束循環:

*** Tasks ***
WHILE: Exit loop with BREAK
    WHILE    True
        BREAK
        Log    This will not be logged.
    END