2011-05-08 34 views
1

我想用Selenium和NUnit測試一個網頁。我的一個測試用例需要驗證文本框。使用Selenium和C#,我可以檢索在文本框中輸入的值。但是,當文本框的驗證失敗時,文本框旁邊會顯示一條錯誤消息。使用硒測試文本框的驗證

所以,這裏是我的問題: 1.我如何測試是否由於驗證失敗而引發錯誤。 2.我可以得到該錯誤的文本。 3.或者,我是否會走出困境,我試圖做的事情根本不可能。

我已經嘗試閱讀元素的值,但它總是似乎是一個空字符串。

舉例來說,我試圖測試網頁https://edit.yahoo.com/registration。當我在名字字段中輸入「** myname & &」時,出現錯誤,指出「只允許使用字母,空格,連字符和撇號」。我希望能夠測試出現此錯誤。

此外,我注意到,當硒打開網頁,並在文本框中輸入一個不正確的值時,錯誤消息不會顯示在此文本框旁邊。然而,當我自己打開網頁並輸入錯誤文本時,顯示錯誤消息

謝謝!

+0

好吧,我想出了一種方法來使它工作。但我不確定這是否是最有效的方法。 這是測試的C#代碼: [測試] public void TheUntitledTest() { selenium.Open(「/ registration」); selenium.Focus(「firstname」); selenium.Type( 「名字」, 「* &&"); 了Thread.Sleep(1000); selenium.FireEvent(」 名字」, 「模糊」);} 我不知道,如果它通常是一個很好的做法,在單元測試中加入「睡眠」 任何人都可以提出更好的方法嗎? – wind007 2011-05-08 02:46:00

回答

0

你將不得不使用thread.sleep,但以更好的方式。最好寫一個這樣的函數(我正在用JAVA編寫這個函數,你應該可以爲C#編寫它)。該方法將等待該元素可見的指定秒數。如果該元素即使在指定的秒數後仍然不可見,那麼該方法將返回false。如果它變得可見,那麼該方法將返回true。

或者,您可以使用斷言而不是返回假條件,以便測試失敗。

public boolean waitForErrorMessage(String elementToWaitFor, int waitTimeInSeconds) 
{ 
int timeOut=0; 
while(!selenium.isVisible(elementToWaitFor)) 
    { 
    if(timeOut<waitTimeInSeconds){ 
     #sleep for one second 
     Thread.Sleep(1000); 
    } 
    else { 
     return false; 
    } 
    timeOut=timeOut+1; 
    } 
    return true; 
}