[英]Returning a string literal from an Enum
我正在嘗試使用一個Enum來設置一個可能的距離的有限列表,該字符串被用作Selenium API方法中的cssSelector:
public enum DistanceFrom {
FIVEMILES("a[data-reactid='.2cr8yg16ohc.2.1.0.2:$5.0']"),
TENMILES("a['.2cr8yg16ohc.2.1.0.2:$10.0.2']"),
TWENTYMILES("a['.2cr8yg16ohc.2.1.0.2:$20.0']"),
THIRTYMILES("a['.2cr8yg16ohc.2.1.0.2:$30.0']");
private String value;
DistanceFrom(String value){
this.value=value;
}
@Override
public String toString(){
return value;
}
}
我在測試中使用它:
local.setDistance(DistanceFrom.FIVEMILES.toString());
其中setDistance是頁面對象中的一種流暢方法:
public LocalNewsPage setDistance(String value) {
WebElement setDistanceButton = driver.findElement(By.cssSelector(value));
setDistanceButton.click();
return this;
}
為什么我必須聲明:
local.setDistance(DistanceFrom.FIVEMILES.toString());
而且不能簡單地:
local.setDistance(DistanceFrom.FIVEMILES);
如果可以編輯setDistance
方法,則可以將其更改為接受DistanceFrom
:
public LocalNewsPage setDistance(DistanceFrom value) {
WebElement setDistanceButton = driver.findElement(By.cssSelector(value.toString()));
setDistanceButton.click();
return this;
}
另外,您可以將DistanceFrom
的枚舉值更改為static final String
:
public final class DistanceFrom {
public static final String FIVEMILES = "a[data-reactid='.2cr8yg16ohc.2.1.0.2:$5.0']";
public static final String TENMILES = "a['.2cr8yg16ohc.2.1.0.2:$10.0.2']";
public static final String TWENTYMILES = "a['.2cr8yg16ohc.2.1.0.2:$20.0']";
public static final String THIRTYMILES = "a['.2cr8yg16ohc.2.1.0.2:$30.0']";
private DistanceFrom() {}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.