pass values between steps in cucumber

问题描述 投票:1回答:2

如何在黄瓜JVM中的两个步骤之间传递值?

在以下场景中,我想访问提供的用户名。如何在黄瓜JVM中的两个步骤之间传递值?目前我通过将该值保存到公共变量来访问它们。方法是否正确(或)我可以访问步骤之间的任何其他方式?

场景:

给定用户登录页面当用户输入用户名为user1,密码为pass1并点击登录按钮后显示登录页面

@When("^user enters username as ([^\"]*) and password as ([^\"]*)$")
public void enterLoginDetails(String username,String password){
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("password")).sendKeys(password);
}

在以下步骤定义中,我想从上一步定义中访问用户名

@Then("^post login page is displayed$")
public void postLoginValidation(){
// i would like access username and verify username is displayed
}

提前致谢

selenium selenium-webdriver cucumber-jvm
2个回答
0
投票
public your class {

    private String usr;

    @When("^user enters username as ([^\"]*) and password as ([^\"]*)$")
    public void enterLoginDetails(String username,String password){

      usr = username;
      ...
    }

    @Then("^post login page is displayed$")
    public void postLoginValidation(){

      //do something with usr

    }

}

0
投票

根据Bala的建议,您可以使用变量在步骤之间共享状态。

Java中的另一个解决方案是使用依赖注入。 Cucumber-JVM支持许多不同的依赖注入框架。其中一个是春天。可以使用注释在需要它们的地方提供依赖关系。如果您的项目已经在使用Spring,那么使用Spring是一个不错的选择。否则它可能太大而且很麻烦。

一个易于使用的Spring替代品,就是使用PicoContainer。

有关这两者的更多信息,请查看:

http://www.thinkcode.se/blog/2017/06/24/sharing-state-between-steps-in-cucumberjvm-using-spring

http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer

© www.soinside.com 2019 - 2024. All rights reserved.