<cucumber-jvm>在黄瓜</cucumber-jvm>中的步骤之间传递值

时间:2014-02-11 00:37:48

标签: selenium selenium-webdriver cucumber-jvm

如何在黄瓜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
}

先谢谢

3 个答案:

答案 0 :(得分:1)

最佳解决方案:

如果您使用的是方案大纲:

When user enters username as <username> and password as <password>
Then post login page is displayed with <username>

Examples:

| username|password|
|Kiran|1234|

步骤定义代码:

@When("user enters username as (.*) and password as (.*)")
public void enterLoginDetails(String userName,String password)
{
    //You will get userName=Kiran and Password=1234

}
@Then("post login page is displayed with (.*)")
public void postLoginValidation(String userName)
{
   //You will be access the same username which is you are passing while login
  ////You will get userName=Kiran
}

答案 1 :(得分: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

    }

}

答案 2 :(得分: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