【问题标题】:In Page Class should the action methods have return type as class name or using void return type is a good practice?在 Page Class 中,动作方法应该将返回类型作为类名还是使用 void 返回类型是一个好习惯?
【发布时间】:2020-02-06 18:54:38
【问题描述】:
public class HomePage {

    public HomePage clickAboutUs1Link() {
        aboutUs1.click();
        return this;
    }

    public void clickAboutUs1Link() {
        aboutUs1.click();    
    }
}

我将在我的测试类中调用 action 方法。那么在 Selenium webdriver 中使用页面对象模型时,使用其中任何一个有什么优势或劣势?

【问题讨论】:

    标签: selenium selenium-webdriver testng pageobjects


    【解决方案1】:

    如果你有更多的方法,这个问题会更清楚。考虑那些类

    public class HomePage {
    
        public AboutUsPage clickAboutUsLinkAndGoToAboutUsPage() {
            aboutUs1.click();
            return new AboutUsPage();
        }   
    
        public HomePage typeToField() {
            aboutUs1.click();
            return this;
        }
    
        public HomePage clickOnChecbox() {
            aboutUs1.click();
            return this;
        }
    }
    
    class AboutUsPage {
    
        public boolean isAboutUsPageDisplayed() {
            return someElement.isDisplayed();
        }
    }
    

    现在您可以在测试中使用方法链来创建流程

    public class TestAboutUsLink {
    
        boolean isDisplayed =
        new HomePage()
            .typeToField()
            .clickOnChecbox()
            .clickAboutUsLinkAndGoToAboutUsPage()
            .isAboutUsPageDisplayed();
    
        assertTrue(isDisplayed);
    }
    

    如果每个方法都没有返回任何东西

    public class TestAboutUsLink {
    
        HomePage homePage = new HomePage();
        homePage.typeToField();
        homePage.clickOnChecbox();
        homePage.clickAboutUsLinkAndGoToAboutUsPage()
    
        AboutUsPage aboutUsPage = new AboutUsPage(); 
        boolean isDisplayed = aboutUsPage.isAboutUsPageDisplayed();
    
        assertTrue(isDisplayed);
    }
    

    这是一个主观问题,但我发现使用隐式页面对象创建(就测试问题而言)的测试流程比将其分解为多个部分更清晰。

    【讨论】:

    • 在方法链接示例中,我不明白您如何在没有 AboutUsPage 对象的情况下调用 isAboutUsPageDisplayed()。这可能吗?
    • @Aditya 有AboutUsPage 创建,在clickAboutUsLinkAndGoToAboutUsPage()。它在那里初始化并返回测试。
    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2015-07-18
    相关资源
    最近更新 更多