我是使用Java的Cucumber Selenium的初学者并且已经谷歌了,但无法找到它是否可能。这是问题所在。我有一个方法,它有一个我想与变量名匹配的String参数。然后我想将该变量用于另一种方法。
所以简而言之,我会有一个参数String(f.e。" 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"
}
现在(显然)传递了#34;名称"作为字符串,但我无法找到传递方式" field_ID_Name"对于这个例子。 我可以使用switch语句来检查各种可能的字段值,但我宁可根据传递的字符串进行匹配。将精确定位器作为第一种方法的参数的另一种选择,但对于必须理解特征文件的客户而言,这并不容易阅读(黄瓜情景' s)。
任何建议都赞赏!
答案 0 :(得分:1)
您可以创建一个带有变量名称作为键的映射,并将所需的参数作为值传递给pollVisible函数。 所以你的地图看起来像是:
myMap:name - > field_ID_Name
现在做:
private void checkError(String field){
seleniumdriver.pollVisible(myMap.get(场));
}
答案 1 :(得分:0)
您可以使用Java Reflection API读取对象字段值,这是最简单的方法 - 只需使用Apache BeanUtils库。看看这个回答相似的问题: