在页面 Class 中,操作方法应该将 return 类型作为 class 名称,还是使用 void return 类型是一个好习惯?
In Page Class should the action methods have return type as class name or using void return type is a good practice?
public class HomePage {
public HomePage clickAboutUs1Link() {
aboutUs1.click();
return this;
}
public void clickAboutUs1Link() {
aboutUs1.click();
}
}
我将在我的测试中调用操作方法 Class。那么,在将页面对象模型与 Selenium webdriver 结合使用时,使用其中任何一个比另一个有什么优势或劣势?
如果你有更多的方法,这个问题会更清楚。考虑那些 类
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);
}
如果每个方法都没有 return 任何东西
public class TestAboutUsLink {
HomePage homePage = new HomePage();
homePage.typeToField();
homePage.clickOnChecbox();
homePage.clickAboutUsLinkAndGoToAboutUsPage()
AboutUsPage aboutUsPage = new AboutUsPage();
boolean isDisplayed = aboutUsPage.isAboutUsPageDisplayed();
assertTrue(isDisplayed);
}
这是主观问题,但我发现使用隐式页面对象创建(就测试而言)进行测试流程比将其分解成多个部分更清晰。
public class HomePage {
public HomePage clickAboutUs1Link() {
aboutUs1.click();
return this;
}
public void clickAboutUs1Link() {
aboutUs1.click();
}
}
我将在我的测试中调用操作方法 Class。那么,在将页面对象模型与 Selenium webdriver 结合使用时,使用其中任何一个比另一个有什么优势或劣势?
如果你有更多的方法,这个问题会更清楚。考虑那些 类
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);
}
如果每个方法都没有 return 任何东西
public class TestAboutUsLink {
HomePage homePage = new HomePage();
homePage.typeToField();
homePage.clickOnChecbox();
homePage.clickAboutUsLinkAndGoToAboutUsPage()
AboutUsPage aboutUsPage = new AboutUsPage();
boolean isDisplayed = aboutUsPage.isAboutUsPageDisplayed();
assertTrue(isDisplayed);
}
这是主观问题,但我发现使用隐式页面对象创建(就测试而言)进行测试流程比将其分解成多个部分更清晰。