1

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

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

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

我该怎么做?

4

3 回答 3

1

这个 ?

如果您的类名为 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));
    }
于 2013-05-08T12:52:32.733 回答
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转换为 type T

于 2013-05-08T12:41:55.423 回答
0

如果它是PageFactory您使用的 Selenium,initElements它是通用的,所以您应该能够:

public <T> T SelectTab(WebDriver driver, String path, Class<T> pageClass) {
    // selection logic
    return PageFactory.initElements(driver, pageClass);
}
于 2013-05-08T12:43:50.310 回答