copenndthagen
copenndthagen

Reputation: 50742

Selenium Handle conditional assert

I am doing a UI action and there are 2 possibilities;

1. I get an info message OR
2. I get a success message

Now I need to assert the same in Selenium.

Again there is only one outcome possible on the UI...either I get an info message OR i get a success message..

So basically I need to assert on either of the following;

assertThat(getAlertMessage("info", "cancel info message").getText(), equalTo("cancel info message"));

assertThat(getAlertMessage("success", "cancel success message").getText(), equalTo("cancel success message"));

Should I do a try catch OR use if...else ?

Upvotes: 0

Views: 560

Answers (1)

Selena
Selena

Reputation: 2268

You could use the assertion methods that take booleans as parameters and just do a conditional OR check:

For TestNG:

String alertMessage = getAlertMessage("info", "cancel info message").getText();
String infoMessage = "cancel info message";
String successMessage = "cancel success message";

assertTrue(alertMessage.equals(infoMessage) || alertMessage.equals(successMessage), "Alert message does not equal either info or success message");

For JUnit:

String alertMessage = getAlertMessage("info", "cancel info message").getText();
String infoMessage = "cancel info message";
String successMessage = "cancel success message";

assertTrue("Alert message does not equal either info or success message", alertMessage.equals(infoMessage) || alertMessage.equals(successMessage));

If you are using Hamcrest matchers, you can do this:

assertThat(alertMessage, anyOf(equalTo(infoMessage), equalTo(successMessage)));

Upvotes: 2

Related Questions