2013-05-08 49 views
1

我們使用PageObjects模式進行自動化。 我有功能,如何製作類的動態返回類型

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

返回類型應該是我們要傳遞給SelectTab(),因爲類名是動態的類名。

我該怎麼做?

+0

調用功能: stStudentDashboardpage = stStudentPersonalArchives.VerifyParagraphInPersonalArchives(PSSSessionTitle) ; 被調用函數: \t公共STStudentDashboardPage VerifyPSSSavedInPersonalArchives(字符串PSSTitle)拋出異常{ \t \t的System.out.println( 「提交的學生段的標題:」 + PSSTitle); \t \t \t \t \t 返回\t PageFactory.initElements(_driver,STStudentDashboardPage.class); \t} – 2013-05-08 13:34:41

+0

我需要打電話: stStudentDashboardpage = stStudentPersonalArchives.VerifyParagraphInPersonalArchives(PSSSessionTitle,stStudentDashboardpage); \t \t 被調用函數應該是這樣的: \t \t公共類名VerifyPSSSavedInPersonalArchives(字符串PSSTitle,類名)拋出異常{ \t \t的System.out.println( 「提交的學生段的標題:」 + PSSTitle); \t \t \t \t return PageFactory.initElements(_driver,ClassName.class); \t} – 2013-05-08 13:35:12

回答

0

我沒有硒的方便,但也許這會工作。

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

您可能需要轉換的initElements結果輸入T

0

如果它是你正在使用的硒PageFactoryinitElements是通用的,所以你應該能夠做到:

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

我必須返回類似.. \t返回PageFactory.initElements(_driver,ClassName.class) – 2013-05-09 05:26:27

+0

是...什麼是問題? – NilsH 2013-05-09 05:37:22

+0

我得到這個錯誤...在這一行的多個標記 - className無法解析爲一個類型 - 類型PageFactory類型的方法initElements(WebDriver,類)引用缺少的類型 – 2013-05-10 05:08:44

1

這?

如果你已經作爲類名字符串

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)); 
    } 
+0

我必須返回類似..返回PageFactory。initElements(_driver,ClassName.class) – 2013-05-09 05:27:04

+0

這個例子中的'obj'是什麼? – NilsH 2013-05-09 06:22:33

+0

@NilsH對不起,這是一個錯字錯誤。固定。 – 2013-05-09 09:31:14