If - elseif - else - endIf (expression, label) - Selenium IDE command

If is the granddaddy of all conditionals and is available in the Ui.Vision RPA Selenium IDE. It allows the macro, for example, to react to errors and changes on the website.

How to use if/elseif/else/end: Very often when you write code, you want to perform different actions for different decisions. You can use conditional statements in your code to do this. With if/elseif/else/end you use if to specify a block of code to be executed, if a specified condition is true and use else to specify a block of code to be executed, if the same condition is false. The expression is technically a Javascript EVAL, exactly like in executeScript_Sandbox.

Related user questions:

1. When I run the macro sometimes I get [error] time out when looking for element 'css=button.btn.btn-primary....'. .Is there a way to ignore these errors and go to next step? Like "if (notFound) go to next step".

2. Hi, Sometimes when a macro is playing it encounters an error and then it will not be completed (for example the image will not be found). Is there a way to override such errors? Like for example: 1. Start over. 2. Go to the next line. 3. Go to a specified line.

Solution for 1 and 2: The solution is to use if together with the internal variable !statusOK. You also need to set !errorIgnore to true, so the macro execution does not stop.
Example: If | ${!statusOK}...else....end or gotoIf | ${!statusOK} | Label.

The above code goes into if...end if the there was no error before. But if you want to do something if the last command was NOT successful (element NOT found etc), then you can simply add the "!" (Javasacript not operator) in front of the internal variable.
Example: If | !${!statusOK} is the same as If | ${!statusOK} == false.
The extra ! in front of the internal variable is the Javascript symbol for NOT as in "!(x == y) is true".

If uses executeScript_Sandbox

UI Vision Selenium IDE uses executeScript_Sandbox to evaluate an expression.

If Example

The example macro tries a second link if the first one is not found. Best if you see the flow logic in action by running the DemoIfElse macro that installs with the IDE.

Command Target Pattern/Text
open https://ui.vision/
store true !errorIgnore
click link=helloworld
If ${!statusOK} == true
click link=anotherLink
else
echo The first link was found
end

If ${!statusOK} == true

Note that !statusOK is a boolean value, so there are no "" around true or false:

RPA boolean values

Do...RepeatIf and While...End

If you want to use IF as condition for loop, consider using do... repeat if (condition) or while (condition)... end.


If IMAGE do THIS: This screencast uses repeat if to wait for an image, and do something once it appears.

Works in

Ui.Vision RPA for Chrome Selenium IDE, Ui.Vision RPA for Firefox Selenium IDE, Firefox IDE Classic

Related Demo Macros

DemoGotoIf, DemocsvSave

The ready-to-import-and-run source code of all demo macros can be found in the Open-Source RPA software Github repository.

See also

gotoIf, gotoLabel, Label, while, endWhile, !LastCommandOK, !errorIgnore, Web Automation Extension User Manual, Selenium IDE commands, Selenium IDE Flow Control (SelBlocks), Classic Firefox Selenium IDE.

Anything wrong or missing on this page? Suggestions?

...then please contact us.

<em>Ui.Vision RPA</em> Selenium IDE for Chrome and Firefox - Web Test Automation

Fresh from the Ui.Vision Forum: The Latest 3 Topics. Join the discussions:

← Meet the Ui.Vision team and users in our forums.