如何将java.lang.reflect.Field强制转换为org.openqa.selenium.WebElement以用于页面工厂框架中的关键字驱动

如何将java.lang.reflect.Field强制转换为org.openqa.selenium.WebElement以用于页面工厂框架中的关键字驱动,java,reflection,casting,webdriver,pageobjects,Java,Reflection,Casting,Webdriver,Pageobjects,登录页面的一个片段- Class LoginPage extends BaseClass { public LoginPage() throws Exception { eDriver = BrowserDriver.getDriverInstance(); PageFactory.initElements(eDriver, this); } @FindBy(name = "rememberMe") public WebElement rememberMe_checkbox;

登录页面的一个片段-

Class LoginPage extends BaseClass {
public LoginPage() throws Exception {
    eDriver = BrowserDriver.getDriverInstance();
    PageFactory.initElements(eDriver, this);
}
@FindBy(name = "rememberMe")
public WebElement rememberMe_checkbox;

}
当前框架使用页面工厂和页面对象。但是,我也想成为关键字驱动

excel文件中的关键字定义如下-

    class       element_name            action
    LoginPage   rememberMe_checkbox     click
在关键字action类中,我能够获得LoginPage类对象。我可以获取“rememberMe_checkbox”WebElement字段。但我没能把它投给WebElement

我得到了这个错误:

java.lang.ClassCastException:无法将java.lang.reflect.Field强制转换为org.openqa.selenium.WebElement

这是我到目前为止所拥有的-

public class ActionKeywords {
public void enter_Text(String className, String elementName, String textValue) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InstantiationException {
ClassLoader classLoader = ActionKeywords.class.getClassLoader();
Class<?> containerClass = classLoader.loadClass(className);
Object theElm = containerClass.getDeclaredField(elementName);
WebElement theWebElm = WebElement.class.cast(theElm);  <-- Error

theElm.getType() => interface org.openqa.selenium.WebElement
theElm.getClass() => class java.lang.reflect.Field

为什么不将类本身的实例而不仅仅是字符串(
string className
)传递给
enter\u text
函数?您可以创建一个所有页面都将从中继承的父类,然后可以像
enterText(?extends ParentClass,…)
@Eugene S这样传递该类-感谢您的回复!很抱歉,我未能在原始代码中包含LoginPage是从基类扩展而来的。但该类只有WebDriver和测试环境设置。你能详细说明一下它是如何工作的吗?谢谢
theWebElm.sendKeys(textValue);