如何在黄瓜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
}
先谢谢
答案 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