自己動手寫Web自動化測試框架(4):驗證Web控制元件

Just4life發表於2013-07-31
上次我們講到了如何控制Web控制元件,有了上次的基礎,我們這一次的東西就會比較簡單:如何驗證Web控。

  我們知道我們測試的目的就是判斷被測產品是不是符合要求,如果是手動的測試,就是點到我們要判斷的地方,然後用眼睛去判斷出現的東西是不是我們想要的。

  而自動化就稍微複雜一點。我們需要解決兩大問題:一個是操縱電腦去點選,另一個就是去檢查是不是我們想要的結果。我們前面的文章可以解決操縱瀏覽器進行瀏覽,而接下來我們講的就是如何判斷是否正確了。

  不考慮效能測試的話,檢查點無非有這麼幾個:

  * 內容是否正確

  * 樣式是否正確

  下面我們以實際程式碼來講解如何判斷。

  首先判斷一下樣式,我們接著上次的程式碼,判斷一下百度首頁的文字框的大小是不是我們想要的(這個程式碼接著上次的得到keyword控制元件之後,Submit之前):

//驗證

if (keyword.getAttribute("size", 0).ToString().Equals("36"))
  Console.WriteLine("Validation Passed! Size is Correct");

else
  Console.WriteLine("Validation Failed! Size is wrong");

  我們可以看到IHTMLElement有getAttribute方法,這個方法可以得到一個Element裡面的Attribute,比如value,type,以及css樣式之類的,都可以用這個方法得到,見msdn對這個方法的更詳細的講解。

  我們用下面的程式碼對百度的搜尋結果的內容和標題進行判斷:

//驗證

if(string.Equals(doc.title.Trim(),"百度搜尋_colblog.net"))
  Console.WriteLine("Validation Passed! Title is Corrected");

else
  Console.WriteLine("Validation Failed! Title is wrong");

if (doc.body.innerText.Contains("生生不息"))
  Console.WriteLine("Validation Passed! Body contains your string");
else
  Console.WriteLine("Validation Failed! Body do not contain");

  IE的標題就直接用HtmlDocument的title屬性就好,而判斷字元就是用到了IHTMLElement的innerText屬性,這個屬性是我們很常用的屬性之一,他會將該Element中顯示在IE的字串返回給我們,另一個相對應的屬性就是InnerHtml屬性,這個屬性會把這個 Element裡的所有html程式碼返回。

  比如說一個簡單的Dropdownlist,用InnerText就會返回這個List裡面每一項的text,而使用InnerHtml就會返回這個list裡面的html程式碼。

  在這裡我們使用innerText來判斷是否有我們想要的文字在裡面。

  NoticeNotice

  注意:innerText和innerHtml屬性,是IHTMLELement的屬性,所以我們得到的每一個IHTMLElement都可以拿到這樣的屬性,並不是只有body才可以。這樣我們以後就可以用前面的知識得到想要的IHTMLElement元素,然後再使用InnerHtml和 InnerText來判斷內容。

  除了這兩個,還有outerHtml和outerText可以使用。

  這次的內容比較簡單。下一篇將會提到如何判斷IE是否完成了頁面讀取的問題。

相關文章