PurpleBeni
PurpleBeni

Reputation: 479

Robot Framework - performing multiple keywords after running keyword if

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.

Upvotes: 9

Views: 36399

Answers (3)

Sun
Sun

Reputation: 1591

Use IF END construct instead of "Run keyword If" to run multiple keywords without much hustle.

Example:

IF    '${skip}' == 'True'
    Log    This prints this line
    ${count} =    Evaluate    ${count} + 1
    IF    '${count}' == ${10}
        Log     Value of count: ${count}. Resetting ${skip}
        ${skip}    Set Variable    ${False}    
    END
END 

Upvotes: 0

sm0404
sm0404

Reputation: 9

Run keywords does not take keywords with arguments so you cannot use this.Option is to create keyword for all statements below Run keywords and call it. https://robotframework.googlecode.com/svn/trunk/doc/libraries/BuiltIn.html#Run --User keywords must nevertheless be used if the executed keywords need to take arguments.

Upvotes: 0

Bryan Oakley
Bryan Oakley

Reputation: 385970

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

Upvotes: 20

Related Questions