簡體   English   中英

從枚舉返回字符串文字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM