2012-04-30 57 views
0

我幾個星期前就開始使用硒。我設計我的測試使用@BeforeClass我創建一個對象並調用類,這是打開瀏覽器的方法,並進行登錄操作這樣硒多次運行同樣的方法

  1. 我有這對於測試操作我要執行的代碼,硒,在我的情況下邊界值分析的另一種方法
  2. 現在我已經創建了一個@Test方法,它調用此以前的方法和價值觀傳遞給它需要我對着測試

問題是 1.啓動瀏覽器並登錄電子操作需要的速度,在此之後,瀏覽器嘗試再次打開主頁。 2.我想知道這是否是寫Selenium測試腳本

另外,如果我刪除步驟1中,包括在步驟2中登錄的方法在我的測試運行正常正確的方式 我使用硒RC和STS的常規上的grails

代碼在一類

void candidatelogin() { 
     selenium.open("/jeepnee/") 
     selenium.click("link=Login") 
     selenium.type("id=username", "[email protected]") 
     selenium.type("id=j_password", "kanishka1") 
     selenium.click("id=submit") 
     selenium.waitForPageToLoad("60000") 
    } 

上述部分我從代碼調用波紋管

class CandidateEditProfileInfoFunctionalTests extends GroovyTestCase{ 

public String addressone="nejshdgfbvxczaqwer1y2io3lkjh7dg*lakiqwerjshag" 
    @BeforeClass 
    static void setUp() { 
     GeneralTests candidate= new GeneralTests() 
     candidate.candidatelogin() 
    } 


void EditProfileInfoFail(String streeta, String streetb, String city, String state, String zip, String mobilecountry, String mobilearea, String mobilephone, String landlinecountry, String landlinearea, String landlinenumber) { 
     selenium.waitForPageToLoad("60000") 
     selenium.click("link=My Profile") 
     selenium.waitForPageToLoad("80000") 
     selenium.click("id=editProfile") 
     selenium.waitForPageToLoad("80000") 
     selenium.type("id=street1", streeta) 
     selenium.type("id=street2", streetb) 
     selenium.type("id=city", city) 
     selenium.type("id=state", state) 
     selenium.type("id=zip", zip) 
     selenium.select("id=country", "label=Philippines") 
     selenium.type("id=mobileCountryCode", mobilecountry) 
     selenium.type("id=mobileAreaCode", mobilearea) 
     selenium.type("id=mobilePhoneNumber", mobilephone) 
     selenium.type("id=landlineCountryCode", landlinecountry) 
     selenium.type("id=landlineAreaCode", landlinearea) 
     selenium.type("id=landlinePhoneNumber", landlinenumber) 
     selenium.click("id=submit") 
     selenium.waitForPageToLoad("80000") 
     assertTrue(selenium.isTextPresent("Please complete the required fields")) 
     assertEquals("Candidate Creation - Step 2", selenium.getTitle()) 
    } 
    @Test 
    void homeCountryOnFailureShowsErrorMessage(){ 
     EditProfileInfoFail(addressone, "aaa", "bangalote", "karnataka", "1234", "11", "222", "12345", "11", "22", "5432") 

    } 
} 
+0

你的描述似乎是正確的做法。請注意,您無需在任何地方調用標註有'@ BeforeClass'和'@ Test'的方法。如果你不這樣做,請發佈一些代碼,以便我們看到你的實際實現。 –

+0

我已經發布了一些代碼。請看看你是否可以 – Acid

+0

我完全不解。 –

回答

1

您的@BeforeClass方法中是否有任何邏輯複製?該方法運行一次,以設置所有測試方法所需的任何依賴關係。聽起來這個方法中的邏輯在步驟2中有些重複。看起來,步驟2中打開主頁的代碼可能被刪除,因爲它發生在@BeforeClass方法中。如果您的後續測試需要返回主頁,則最好更改爲@Before註釋,然後在每次測試運行之前運行該代碼。

+0

謝謝scot。我的代碼在前一種方法中沒有重複。在我的第二步中,我也沒有執行任何打開操作,主要是點擊和鍵入。我發現步驟1運行多次。因爲我在測試結束時得到的錯誤與我在BeforeClass中調用的方法有關 – Acid

+0

您可以嘗試將您的方法從setUp重命名爲任何其他方法嗎?它不應該運行兩次,但它是在jUnit中進行測試之前要運行的任何方法的默認方法名稱。 – Scott

+0

謝謝@Scott,它在重命名該方法後有效。 – Acid