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.
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