I just can’t figure out how to map a keyword as a condition.
@keyword("Is the Closed Message Page Present") def check_closedMsg_page(self): result = self.CLOSED_TEXT.is_displayed self.LOG(f"It returns {self.CLOSED_TEXT.is_displayed}") return result
The above function returns a bool value either True or False.
“Is the Closed Message Page Present” is a keyword which I want to make condition. If the condition is true then it should execute the below two keywords else skip it.
IF Is the Closed Message Page Present = True Then Login username password And Close Browsers END
I tried following:
IF Is the Closed Message Page Present == 'True' Then Login username password And Close Browsers END
IF 'Is the Closed Message Page Present' == 'True' Then Login username password And Close Browsers END
Is the Closed Message Page Present IF True Then Login username password And Close Browsers END
I am expecting the keyword (Is the Closed Message Page Present) to be condition which needs to be true to execute the other two statements or keywords.
Advertisement
Answer
I’m still new to the framework, but the only simple method I found is to store the keyword return value to a local variable and use that in the IF statement.
*** Settings *** Library SeleniumLibrary Library ../stackoverflow.py *** Test Cases *** robot Example ${value} Is the Closed Message Page Present IF ${value} Login username password Close Browser END *** Keywords *** Login [Arguments] ${username} ${password} log 'Logs in to system'
stackoverflow.py returns a random True/False value
import random from robot.api.deco import keyword class stackoverflow: @keyword("Is the Closed Message Page Present") def check_closedMsg_page(self): return random.choice([True, False])
There is an exhaustive list of conditional expressions that you could further use at https://robocorp.com/docs/languages-and-frameworks/robot-framework/conditional-execution