Automation 总是得到;无法转换步骤“的参数”;尝试将自定义对象参数传递给步骤定义时出错?
我的功能文件如下所示:Automation 总是得到;无法转换步骤“的参数”;尝试将自定义对象参数传递给步骤定义时出错?,automation,cucumber,Automation,Cucumber,我的功能文件如下所示: Given User is on Home Page When User Navigate to LogIn Page And User enters Credentials to LogIn | Username | Password | | testuser_1 | Test@153 | | testuser_2 | Test@154 | Then Message displayed Login Successful
Given User is on Home Page
When User Navigate to LogIn Page
And User enters Credentials to LogIn
| Username | Password |
| testuser_1 | Test@153 |
| testuser_2 | Test@154 |
Then Message displayed Login Successfully
步骤定义为:
public void user_enters_testuser_and_Test(List<Credentials> usercredentials) throws Throwable {
//Write the code to handle Data Table
for (Credentials credentials : usercredentials) {
driver.findElement(By.id("log")).sendKeys(credentials.getUsername());
driver.findElement(By.id("pwd")).sendKeys(credentials.getPassword());
driver.findElement(By.id("login")).click();
}
}
当我运行代码时,总是出现以下错误:
cucumber.runtime.CucumberException: Could not convert arguments for step [^User enters Credentials to LogIn$] defined at 'stepDefinitions.ConsumerServiceEnquiry.ConsumerSteps.user_enters_testuser_and_Test(Credentials>) in file:/C:/Users/jxz36/eclipse-workspace/SDBCucumberTestng/bin/'.
我到处都找过,看到很多类似的例子。所以我认为这一定是一些基本的错误或缺少配置。谁能帮我解决这个问题?非常感谢 我想你在cucumber 3及以上。如有,请参阅本条— 将现有的转换器更换为此
registry.defineDataTableType(new DataTableType(Credentials.class, new TableEntryTransformer<Credentials>() {
@Override
public Credentials transform(Map<String, String> entry) {
return new Credentials(entry.get("Username"),entry.get("Password"));
}
}));
}什么是黄瓜版?非常感谢蚱蜢。是的,我昨天就知道了,这是黄瓜版的问题。我已经降级到2.3.0版。问题已经解决了!谢谢这不是版本问题,只是处理自动转换的方式已经升级。由于xstream与java9不兼容而被删除,这是处理转换的新方法。
registry.defineDataTableType(new DataTableType(Credentials.class, new TableEntryTransformer<Credentials>() {
@Override
public Credentials transform(Map<String, String> entry) {
return new Credentials(entry.get("Username"),entry.get("Password"));
}
}));
public Credentials() {
}
public Credentials(String username, String password) {
this.username = username;
this.password = password;