C#函数可以返回两个不同页面对象中的任何一个

时间:2018-11-14 12:51:19

标签: c# function selenium selenium-webdriver return-value

我有一个函数,它返回一个WelcomeScreen页面对象,如下所示:

public WelcomeScreen UpdateAndSubmitProfile()
{
    LastNameField.Clear();
    LastNameField.SendKeys("Malik");
    Reporter.LogPassingTestStepToBugLogger("Update Last Name profile field, Last Name => Malik");
    ProfileSubmitButton.Click();
    Reporter.LogPassingTestStepToBugLogger("Click Submit button.");
    return new WelcomeScreen(Driver);
}

现在,我想访问相同的方法,但希望它返回另一个页面对象LessonPagereturn new LessonPage(Driver))。有什么方法可以使用相同的方法来完成此任务吗?

2 个答案:

答案 0 :(得分:4)

如果两个类都实现一个接口,则可以将方法的返回类型更改为接口。

public Screen UpdateAndSubmitProfile()
{
    LastNameField.Clear();
    LastNameField.SendKeys("Malik");
    Reporter.LogPassingTestStepToBugLogger("Update Last Name profile field, Last Name => Malik");
    ProfileSubmitButton.Click();
    Reporter.LogPassingTestStepToBugLogger("Click Submit button.");
    if(...)
        return new WelcomeScreen(Driver);
    else
        return new LessonPage(Driver);
}

答案 1 :(得分:0)

您可以使用逻辑创建私有方法,并使用两种方法扭曲它,每个方法都返回一个页面对象

private void UpdateAndSubmitProfile()
{
    LastNameField.Clear();
    LastNameField.SendKeys("Malik");
    Reporter.LogPassingTestStepToBugLogger("Update Last Name profile field, Last Name => Malik");
    ProfileSubmitButton.Click();
    Reporter.LogPassingTestStepToBugLogger("Click Submit button.");
}

public WelcomeScreen UpdateAndSubmitProfileAndGoToWelcomeScreen()
{
    UpdateAndSubmitProfile();
    return new WelcomeScreen(Driver);
}

public LessonPage UpdateAndSubmitProfileAndGoToLessonPage()
{
    UpdateAndSubmitProfile();
    return new LessonPage(Driver);
}