gpt4 book ai didi

java - Cucumber框架的好写法是什么

转载 作者:行者123 更新时间:2023-12-01 18:18:46 25 4
gpt4 key购买 nike

我是Cucumber新手,正在设计框架。编写框架的好方法是什么。

到目前为止,我已经设计了这样的框架(页面对象模型)

Feature File
Given User is on home screen

Step Definition file
@Given("^User is on home screen$")
public void User_is_on_home_screen(String Username,String Pwd)
{
lp.enterDetails(Username,Pwd)
}

Page related java files (Includes all Methods by page wise,which is called by respective step definition files).
public class login{
/**
Locators
**/
public void enterDetails(String Username,String Pwd){
/**
steps
**/
}

我的问题是我们是否可以将这些方法包含在相应的页面定义文件中,而不是创建单独的 java 文件并将所有页面定位器存储在一个 java 文件中

Feature File
Given User is on home screen

Step Definition file
@Given("^User is on home screen$")
public void User_is_on_home_screen(String Username,String Pwd)
{
public void enterDetails(String Username,String Pwd){
/**
steps
**/
}

Page Locators java file (Includes all page locators
public class Locators{
/**
All Locators
**/
}

哪一个是标准且高效的?

最佳答案

是的,您可以在 Cucumber 中使用依赖项注入(inject),并使用依赖项将页面对象类注入(inject)到您的步骤定义

        <dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>

看起来像这样:

public class BaseStep {

private DeviceServiceImpl deviceService;
private DashboardScreen dashboardScreen;
public BaseStep() {
this.deviceService = new DeviceServiceImpl(Hooks.driver);
this.dashboardScreen = new DashboardScreen(Hooks.driver);
}

@Then("^I install application$")
public void iInstallApplication() {
dashboardScreen.scroll();
}

@Given("^I enable all network activity$")
public void iEnableAllNetworkActivity() {

}
}

此时您已找到页面上的所有元素:

/**
* @author Tomash Gombosh
*/
public class DashboardScreen extends AbstractScreen {
private static final AppElement SIGN_IN_BUTTON = new AppElement(
"Sign in button",
By.id(String.format("%s:%s", ApplicationProperties.ANDROID_APP_PACKAGE, "id/right_link")),
ScrollTo.NO,
true);
private static final AppElement SIGN_UP_BUTTON = new AppElement(
"Sign Up Button",
By.id(String.format("%s:%s", ApplicationProperties.ANDROID_APP_PACKAGE, "id/sign_button")),
ScrollTo.NO,
true);

public DashboardScreen(final AppiumDriver<MobileElement> driver) {
super(driver);
}

@Override
public boolean isDisplayed() {
waitToBeVisible(SIGN_IN_BUTTON);
scrollService.scrollDown();
return allRequiredElementDisplayed();
}

public void tapLogin() {
isDisplayed();
tap(SIGN_IN_BUTTON);
}

public void tapSignIn() {
tap(SIGN_UP_BUTTON);
}

public void scroll() {
scrollService.scrollDown();
}
}

这对你有帮助吗?或者需要更多解释?

关于java - Cucumber框架的好写法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60316671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com