在一个Serenity任务类中打开不同的URL?

时间:2018-06-26 12:10:51

标签: serenity-bdd

在Serenity BDD中,我有一个Task,用于打开应用程序的登录页面。我想使用此类不仅打开登录页面,还打开其他页面。

public class StartWith implements Task {

    LoginPage loginPage;

    @Override
    public <T extends Actor> void performAs(T actor) {
        actor.attemptsTo(
                Open.browserOn(loginPage)
        );
    }

    public static Task theLoginPage() {
        return instrumented(StartWith.class);
    }

    // Is this possible???
    public static Task theContactPage() {
        return instrumented(StartWith.class);
    }
}

是否可以添加其他静态方法,例如theContactPage,以便我的演员可以呼叫以下其中之一:

  • StartWith.theLoginPage()
  • StartWith.theContactPage()

1 个答案:

答案 0 :(得分:0)

您可以将url用作字符串参数。

public class StartWith implements Task {
    private final String url;

    public StartWith(String url) {
        this.url = url;
    }

    @Override
    @Step("{0} start portal at \\{#url\\}")
    public <T extends Actor> void performAs(T actor) {
        actor.attemptsTo(
                Open.url(url)
        );
    }

    public static Task theLoginPage() {
        String url = "http://example.com/login";
        return instrumented(StartWith.class, url);
    }

    public static Task theContactPage() {
        String url = "http://example.com/contact";
        return instrumented(StartWith.class);
    }
}