需要将包含String的变量转换为方法调用。
示例:
变量:
//Enter the name and value of the locator
public String[] LoginID_Button = {"name","Log in"};
在我的另一堂课中:
driver.findElement(By.name(loc1.LoginID_Button[1])).isDisplayed();
但我需要写作:
driver.findElement(By.loc1.LoginID_Button[0](loc1.LoginID_Button[1])).isDisplayed();
名称是变量字符串,但应更改为Method。怎么做?
答案 0 :(得分:0)
这称为反射。其中,是能够在运行时更改结构/行为。
这是关于它的nice question。
对于您的问题,您可以像接受该问题的答案那样做。
driver.findElement(By.class.getMethod(loc1.LoginID_Button[0],String.class).invoke(null,loc1.LoginID_Button[1])).isDisplayed();
在上面的代码中,方法getMethod()
用于按名称动态查找方法,在本例中为LoginId_Butt[0]
。还需要指定目标方法接受的参数类型,在我们的示例中,它是String
。
然后使用invoke()
方法调用找到的方法。 invoke()
方法有两个参数,第一个是执行动态方法的实例。在我们的示例中,实例为null,因为动态方法是静态的。
第二个参数是传递给动态方法的参数的参数。在这种情况下,我们只有一个参数可以传递,即LoginId_Butt[1]
。
备注强>
请不要忘记用ty / catch包装此代码,可以抛出许多异常。
请使用变量名称的java命名约定,例如loginID_Button