Reputation: 50742
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
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