2015-06-19 59 views
-2

我修好了。我擴展了方法所在的AbstractPage。起初我會得到一個Test類必須有一個單獨的無參數構造函數。然後我意識到在@Before之後,驅動程序變量和啓動變量在刪除這些內容後出現問題,只是將其稱爲開放式chromedriver()方法和openhomepage方法,eclipse非常高興,它允許我運行測試並刪除必須的部分調用類然後調用方法。謝謝您的幫助。有沒有不同的方法來使用另一個類的方法?

package seleniumTests.QA.com; 


public class Testforpage { 

private WebDriver driver; 

@Before 
public void SetUp() { 
    AbstractPage startUp = new AbstractPage(driver); 
    driver = startUp.openChromeDriver(); 
    onRegistrationPage = new RegistrationPage(driver); 
    onRegistrationPage.openHomePage(driver); 
} 

@Test 
public void register() { 
    onRegistrationPage.clickOn(onRegistrationPage.REGISTRATION_LINK); 
    assertEquals(onRegistrationPage.getURL(),"http://demoqa.com/registration/"); 
    // Write first name** 
    onRegistrationPage.type(onRegistrationPage.FIRST_NAME_INPUT, "User"); 
    // Write last name 
    onRegistrationPage.type(onRegistrationPage.LAST_NAME_INPUT, "Dev"); 
    // click marrital status 
    onRegistrationPage.clickOn(onRegistrationPage.MARITAL_STATUS_BUTTON); 
    // click hobby 
    onRegistrationPage.clickOn(onRegistrationPage.HOBBY_BUTTON); 

這就是代碼現在的樣子。

public class Testforpage extends AbstractPage { 


    public Testforpage() { 
    } 

@Before 
public void SetUp() { 
    driver = openChromeDriver(); 
    openHomePage(driver); 
} 

@Test 
public void register() { 
    clickOn(REGISTRATION_LINK); 
    assertEquals(getURL(),"http://demoqa.com/registration/"); 
    // Write first name** 
    type(FIRST_NAME_INPUT, "User"); 
    // Write last name 
    type(LAST_NAME_INPUT, "Dev"); 
    // click marrital status 
    clickOn(MARITAL_STATUS_BUTTON); 
+0

我會建議,至少,原始(或最新版本)發佈爲「保留」版本。在沒有問題的情況下,我們有兩個答案現在沒有意義。 –

+0

是否有理由不能刪除自己的問題?我不認爲有刪除自己的問題/答案/評論的聲譽要求。 –

+0

重新打開請求。我花了一些時間考慮這個問題,並藉助我的一個答案來解決問題。我還爲我的問題發佈瞭解決方案。 – Kenandrae

回答

0

如果要調用位於RegistrationPage類中的方法,通常需要有一個實例,以便編譯器知道您正在調用哪個方法clickOn

您可以通過創建方法static而無需實例來完成此操作,然後您可以調用RegistrationPage.clickOn,但將其更改爲static還有其他影響,您應該閱讀它們。

另一種解決方案是使RegistrationPage成爲父類/接口並讓下層類繼承它,然後您可以調用clickOn;但是從非測試類繼承測試類沒有什麼意義。

+0

我使用了低級選項。我使用Abstract頁面來完成通常在測試類中編寫的所有東西,例如find元素,並單擊或查找元素和sendkeys。我想要一個只有很少代碼知識的人能夠閱讀測試,並且能夠很好地理解測試正在做什麼,測試的唯一不同之處在於它是我聲明的地方。 – Kenandrae

0

你不延長/繼承所有,而是使用RegistrationPage類。由於這個原因,有必要輸入onRegistrationPage部分,所以你的代碼閱讀器(和java編譯器)很清楚你調用的方法是onRegistrationPage而不是其他某個對象。

如果你想修改這個代碼,你可以用RegistrationPage一個方法或子類,如該方法需要足夠的參數來完成所有的typeclickOn電話與Testforpage一個方法調用。

相關問題