繁体   English   中英

java将字符串匹配到变量名称并传递变量的值

[英]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库即可。 看看这个类似的答案:

使用BeanUtils检索字段值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM