I want to replace if else
statements:
if (userSalutation.equalsIgnoreCase("mr")) {
screenPage.selectMr();
} else {
screenPage.selectMs();
}
selectMr()
performs just click on this buttons.
With Command pattern implementation.
Using enums implementation for this aim.
I have to use if for web page elements (buttons):
Code snippet:
public class ScanScreenPageStep1 extends PageObject {
public ScanScreenPageStep1() {
PageFactory.initElements(new EasyWebFieldDecorator(getDriver()), this);
}
@FindBy(id = "salutation")
protected Button mr;
@FindBy(id = "salutation2")
protected Button ms;
Here is enum looking:
public enum PersonSalutations {
MR("mr") {
@Override
public Button getButton() {
return mr;
}
},
MS("ms") {
@Override
public Button getButton() {
return ms;
}
};
private String salutation;
PersonSalutations(String salutation) {
this.salutation = salutation;
}
public static final Map<String, Button> stringToButton = new HashMap<>();
static {
for (PersonSalutations salut : values()) {
stringToButton.put(salut.toString(), salut.getButton());
}
}
public String getSalutation() {
return salutation;
}
public abstract Button getButton();
public static Button fromString(String stringSalutation) {
return stringToButton.get(stringSalutation);
}
@Override
public String toString() {
return salutation.toUpperCase();
}
}
For adding buttons element to stringToButton
I have to make my button element static:
@FindBy(id = "salutation")
protected static Button mr;
@FindBy(id = "salutation2")
protected static Button ms;
How to avoid making elements static at this case?
Or some other circumstances at this case.