Возвращение строкового литерала из Enum - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь использовать Enum, чтобы установить конечный список возможных расстояний, при этом строка используется в качестве cssSelector в методе Selenium API:

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);

1 Ответ

0 голосов
/ 14 февраля 2019

Если вы можете отредактировать метод 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() {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...