[英]java match string to variable name and pass the variable's value
我是使用Java的Cucumber Selenium的初学者,并且拥有Google,但是找不到是否有可能。 这就是问题。 我有一个方法,该方法具有一个String参数,我想将其与变量名匹配。 然后,我想将该变量用于另一种方法。
简而言之,我将有一个参数String(fe“ name”)并希望将其与变量'name'匹配并获取/使用该值
这样的事情。
我的黄瓜方案将具有以下步骤:
Abstract Scenario: check errors in fields
If there is an error in "field"
Then foo
Examples:
|field |
|name |
|address|
|phone |
我在步骤定义中的方法将类似于:
private final name = "field_ID_Name"
private final address = "field_ID_Address"
private final phone = "field_ID_Phone"
public void thereIsAnErrorIn(String field){
// Here the match from the argument "name" to use of the variable "name"
checkError(field)
}
private void checkError(String field){
// here I'd like to check based on the value, so in my case for variable
//'name' would get "field_ID_name" as passed parameter
seleniumdriver.pollVisible(field) //field = "field_ID_Name"
}
现在(很明显),它以“ name”作为字符串传递,但是对于此示例,我无法找出传递“ field_ID_Name”的方法。 我可以使用switch语句来检查field的各种可能值,但是我宁愿根据传递的字符串进行匹配。 将精确定位符作为第一种方法的参数的另一种选择,但是对于我必须了解功能文件(黄瓜方案)的客户而言,这并不容易理解。
任何建议表示赞赏!
您可以创建一个以变量名作为键,并以所需的参数作为值传递给pollVisible函数的映射。 因此您的地图看起来像:
myMap:名称-> field_ID_Name
现在执行:
私人void checkError(String field){
seleniumdriver.pollVisible(myMap.get(field));
}
您可以使用Java Reflection API读取对象字段值,这是最简单的方法-只需使用Apache BeanUtils库即可。 看看这个类似的答案:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.