我尝试使用 selenium Web 驱动程序来使用方法findElement获取 WebElement 。有效。但是当我尝试调用方法findElement和参数作为 By.name("") 以获取 WebElement 作为回报时,反射 api 出现了问题。在这里,以下几行可以提供有关问题的更多信息。
Javaw 抛出异常
java.lang.NoSuchMethodException: org.openqa.selenium.firefox.FirefoxDriver.findElement(org.openqa.selenium.By$ByName) at java.lang.Class.getMethod(未知来源)
尝试了一般方法(工作)
WebDriver driver = new FirefoxDriver();
Method[] methods = driver.getClass().getMethods();
for(Method method:methods){
System.out.println(method.getName());
}
driver.manage().window().maximize();
driver.get("http://www.facebook.com/");
By by = By.name("email");
WebElement element = driver.findElement(by);
使用Java反射api实现(通过以下代码发生异常)
WebDriver driver = new FirefoxDriver();
Method[] methods = driver.getClass().getMethods();
for(Method method:methods){
System.out.println(method.getName());
}
driver.manage().window().maximize();
driver.get("http://www.facebook.com/");
By by = By.name("email");
Class c = Class.forName(driver.getClass().getName());
Method getMethod = c.getMethod("findElement", new Class[]{by.getClass()});
getMethod.setAccessible(true);
WebElement element = (WebElement) getMethod.invoke(driver, by);
请有人可以指导使用反射api完成代码工作