如何使类的动态返回类型

时间:2013-05-08 12:38:38

标签: java selenium-webdriver pageobjects

我们正在使用PageObjects模式进行自动化。     我有功能,

public className SelectTab(driver,path,className)throws Exception{
    driver.findelement(By.xpath("path")).click();
    return PageFactory.initElements(driver,className.class);
}

返回类型应该是我们传递给SelectTab()的className,因为className是动态的。

我怎么做?

3 个答案:

答案 0 :(得分:1)

这个?

如果你的classname为String

   public <T> T SelectTab(WebDriver  driver,String  path, T className) throws Exception{
        driver.findelement(By.xpath("path")).click();
        return PageFactory.initElements(driver, className.class);
    }

并将SelectTab调用为

SelectTAB(driver,path,Class.forName(classNameString));// where classNameString is the value you are currently passing to SelectTab  with your code.

或使用类似

的内容
   public Object SelectTab(WebDriver  driver,String  path, String className) throws Exception{
        driver.findelement(By.xpath("path")).click();
        return PageFactory.initElements(driver, Class.forName(className));
    }

答案 1 :(得分:0)

我没有Selenium方便,但也许这会奏效。

public <T> T SelectTab(driver,path, Class<T> clazz) throws Exception{
    driver.findelement(By.xpath("path")).click();
    return PageFactory.initElements(driver, clazz);
}

您可能需要将initElements的结果投射到T类型。

答案 2 :(得分:0)

如果是您正在使用的Selenium PageFactoryinitElements是通用的,那么您应该可以这样做:

public <T> T SelectTab(WebDriver driver, String path, Class<T> pageClass) {
    // selection logic
    return PageFactory.initElements(driver, pageClass);
}