Selenium <;黄瓜JVM>;在cucumber中的步骤之间传递值

Selenium <;黄瓜JVM>;在cucumber中的步骤之间传递值,selenium,selenium-webdriver,cucumber-jvm,Selenium,Selenium Webdriver,Cucumber Jvm,如何在JVM中的两个步骤之间传递值 在下面的场景中,我希望访问步骤中提供的用户名,然后是步骤。 如何在JVM中的两个步骤之间传递值?目前,我通过将该值保存到公共变量中来访问这些值。方法是否正确(或)我可以通过其他方式访问步骤之间的方法 情景: 给定用户在登录页面上 当用户输入用户名为user1,密码为pass1时 然后点击登录按钮 然后显示登录后页面 @When("^user enters username as ([^\"]*) and password as ([^\"]*)$") publ

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

提前感谢

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

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

    }

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

一个易于使用的替代弹簧的方法是使用PicoContainer

有关这两种方法的更多信息,请查看:


最佳解决方案:

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 <username> and password as <password>
Then post login page is displayed with <username>

Examples:

| username|password|
|Kiran|1234|

在步骤之间传递值而不使用变量的任何其他替代方法。是的,尝试使用依赖项注入。Cucumber支持多个依赖注入框架。正在寻找此问题的答案。除了以下答案之外,你还能想出别的答案吗