Conditional execution in Robot Framework

In general, it is not recommended to have conditional logic in tasks, or even in user keywords, because it can make them hard to understand and maintain. Instead, this kind of logic should be in test libraries, where it can be implemented using natural programming language constructs. However, some conditional logic can be useful at times, and even though Robot Framework does not have an actual if/else construct, there are several ways to get the same effect. - Robot Framework User Guide

The following robot demonstrates how to use the Run Keyword Unless and Run Keyword If keywords to achieve conditional execution in your robot. Conditional logic might fit better in a Python library that exposes a keyword for the robot, to keep things simple robot-code-wise.

The RPA.Tasks library offers another way for building conditional logic, check it out!

See the Conditional execution chapter in the Robot Framework User Guide, and the Run Keyword If keyword documentation for more information.

*** Settings ***
Documentation     IF / ELSE IF / ELSE example.
...               Generate a random number.
...               Do things based on the generated number.
...               Stop (pass) when the condition is met.

*** Variables ***
${MAX_TRIES}=     ${50}
${NUMBER_TO_PASS_ON}=    7

*** Keywords ***
Generate Numbers And Act On Result
    FOR    ${i}    IN RANGE    ${MAX_TRIES}
        ${random}=    Evaluate    random.randint(0, 10)
        ${is_expected}=    Evaluate    ${random} == ${NUMBER_TO_PASS_ON}
        Run Keyword Unless
        ...    ${is_expected}
        ...    Log To Console    Condition not met.
        Run Keyword If
        ...    ${is_expected}
        ...    Pass Execution    "${random} == ${NUMBER_TO_PASS_ON}"
        ...    ELSE IF
        ...    ${random} > ${NUMBER_TO_PASS_ON}
        ...    Log To Console    Too high.
        ...    ELSE
        ...    Log To Console    Too low.
    END

*** Tasks ***
Do if-else logic
    Generate Numbers And Act On Result