首页 > 解决方案 > 在一个 Serenity 任务类中打开不同的 URL?

问题描述

在 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,以便我的演员可以调用其中一个:

标签: serenity-bdd

解决方案


您可以使用 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);
    }
}

推荐阅读