java - Java反射-NoSuchMethodException当方法存在时抛出

标签 java reflection automation qa

我正在尝试创建一个采用两个字符串参数并在一个对象上调用方法调用的方法。这两个参数将提供className和methodName。理想情况下,我想使用反射来查找对象和方法,然后调用该方法。这是我管理的自动化套件。

public void executeMethod(String className, String methodName){
   Class object = className.getClass(); 
   Method objMethod = object.getMethod(methodName); 
   objMethod.invoke(pageObject);  
}


运行它时,我收到错误NoSuchMethodException:java.lang.String.isPageDisplayed()。

我相信我的问题与找到对象或与对象有关。

如果我执行上述相同的方法,如下所示,它将起作用:

public void executeMethod(String className, String methodName){ 
    Method objMethod = knownObject.class.getMethod(methodName);
    m1.invoke(pageObject);
}


谁能帮我弄清楚我做错了吗?该方法,在这种情况下,我尝试调用的是public static void方法。

最佳答案

由于className的类型为String,因此className.getClass()仅返回一个Class<String>,显然该方法没有该方法作为成员。相反,您应该使用Class.forName(className)

public void executeMethod(String className, String methodName){
   Class<?> clazz = Class.forName(className); 
   Method objMethod = clazz.getMethod(methodName); 
   objMethod.invoke(pageObject);  
}

关于java - Java反射-NoSuchMethodException当方法存在时抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42099669/

相关文章:

java - 多态性和 n 层应用程序

java - 如果我们知道时区 ID,是否可以知道大陆/国家的名称?

java - 附件 在 Lotus Notes 上发送 session 邀请时过来

c# - 通过反射将方法赋值给委托(delegate)

java - 直接获取字段的注解

git - MongoDB 备份为文本而不是用于源代码控制的二进制文件

java - 在登录方法上同步代码

Java 反射 getDeclaredMethod 抛出 NoSuchMethodException

ios - 在应用程序中自动化 iOS webkit

Selenium 运行功能测试按测试时间分布