Robot Framework - performing multiple keywords after running keyword if

PurpleBeni picture PurpleBeni · May 4, 2015 · Viewed 17.9k times · Source

I am trying to execute multiple keywords if a condition evaluates as true.

I tried to do something like this

 *** Test Cases ***
| Example

 *** Keywords ***
| Example
|  | ${title}=  Get Title
|  | Run Keyword If      | '${title}' == 'Some Title' 
|  | ... Click Element   |  xpath=some element 
|  | ... Element Text Should Be  |   xpath=some element   |  some text
|  | ... Else
|  | ... Click Element   | xpath=other element  

The error I get when running this is that the Click Element expects 1 argument but gets 4.

I know that I can set the if statement in the Test cases section and if evaluated true it will run a keyword with all the stuff I want but I wonder if there is a way to do it from the Keywords section.

Thanks.

Answer

Bryan Oakley picture Bryan Oakley · May 4, 2015

You can do a couple of things. The first is to create a new keyword that calls all the other keywords, and then call that from Run keyword if. This might be the most readable solution, but at the expense of having to write and document another keyword.

The other choice is to use a combination of Run keyword if and Run keywords, like so:

| | Run Keyword if | '${title}' == 'Some Title'
| | ... | Run Keywords
| | ... | Click Element | xpath=some element
| | ... | AND | Element Text Should Be  |  xpath=some element | some text
| | ... | ELSE
| | ... | Click Element | xpath=other element