1
我想替換if else
聲明:如何替換命令模式的靜態元素初始化?
if (userSalutation.equalsIgnoreCase("mr")) {
screenPage.selectMr();
} else {
screenPage.selectMs();
}
selectMr()
執行只需點擊此按鈕。
With Command pattern implementation。
使用枚舉實現此目的。
我如果要使用網頁元素(按鈕):
代碼片斷:
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;
這裏是枚舉尋找:
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();
}
}
對於添加按鈕元素stringToButton
我必須讓我的按鈕素靜:
@FindBy(id = "salutation")
protected static Button mr;
@FindBy(id = "salutation2")
protected static Button ms;
如何避免在這種情況下,靜態元素?
或在這種情況下的一些其他情況。