我们正在使用PageObjects模式进行自动化。 我有功能,
public className SelectTab(driver,path,className)throws Exception{
driver.findelement(By.xpath("path")).click();
return PageFactory.initElements(driver,className.class);
}
返回类型应该是我们传递给SelectTab()的className,因为className是动态的。
我怎么做?
答案 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 PageFactory
,initElements
是通用的,那么您应该可以这样做:
public <T> T SelectTab(WebDriver driver, String path, Class<T> pageClass) {
// selection logic
return PageFactory.initElements(driver, pageClass);
}