如何将字符串转换为Java中的方法(如.Sendkeys)?

时间:2017-04-25 09:48:52

标签: java reflection

需要将包含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。怎么做?

1 个答案:

答案 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]

备注

  1. 请不要忘记用ty / catch包装此代码,可以抛出许多异常。

  2. 请使用变量名称的java命名约定,例如loginID_Button