上次咱們分析了什麼是咱們想要的自動化測試框架,這一次咱們基於上一次的分析,來設計咱們的自動化測試框架架構。瀏覽器
首先,咱們須要一個類,去作幫助咱們處理和IE相關的事情,幫助咱們操縱IE,打開和關閉IE。而後,咱們須要一組的類,來描述網頁上的元素,好比TextBox和Button,去模擬他們的事件,去取得他們的狀態。整體來講就是封裝這些元素。架構
除此以外,咱們還須要一些輔助的類來幫助咱們作一些工做。框架
接下來咱們就先去分析幫助咱們操縱IE的類應該有那些功能。因此咱們把這個類命名爲WebBrowser。參考附帶的WebBrowser.cs文件。函數
首先,咱們須要一些內部的成員和輔助類,咱們打開的IE進程會用SHDocVw.InternetExplorer類來接受,咱們能夠把這個變量存在整個類的私有變量去。還有咱們其實要取出的是這個網頁的HTMLDocument類,以供之後來使用。這裏咱們直接寫成了internal,成員變量,其實能夠封裝成一個屬性,看你們的用法了。除了這些,咱們還須要一個Timer類,這個類幫助咱們完成一些計時的工做。見附帶的timer.cs文件。測試
其次,打開IE進程這樣的事情應該是由這個類來作的,因爲此次對WebBrowser的要求不高,我就在構造函數裏面講IE進程初始化好,具體如何處理這些請參見《本身動手寫Web自動化測試框架(2):打開和操縱IE》。咱們給這個類構造函數提供了一個帶有string參數的方法,目的是讓用戶能夠方便的傳入URL而打開瀏覽器而且轉到咱們要的頁面去。當咱們沒有參數給構造函數時,用戶就會獲得一個空的頁面。設計
再次,咱們須要一個NavigateTo函數,來操縱瀏覽器轉到某一個地方去。這個函數很少說,就是咱們之前的內容。進程
最後,咱們在這裏添加了一個DoWait的函數,這個函數的主要目的是完成咱們《本身動手寫Web自動化測試框架(5):判斷瀏覽器是否加載完成》裏面所討論的等待瀏覽器加載完成。DoWait放在這裏的緣由是咱們須要在幾個地方判斷頁面加載完成:瀏覽器瀏覽到了新的頁面、用戶點擊了某些按鈕或者連接、或者甚至用戶改變了控件的狀態,致使頁面回刷,這幾個地方會分別被WebBrowser和之後的Web控件類所使用,因此咱們把這個DoWait放在 WebBrowser裏面,之後的Web控件回去引用WebBrowser類的這個方法來判斷瀏覽器是否完成加載。事件
注意,這裏把DoWait的代碼寫在WebBrowser裏面是基於咱們以上的頁面沒有Ajax和框架的假設作出的,若是頁面可能有Ajax,咱們就不可能簡簡單單的用這個DoWait去等待加載完成。get
咱們之後會有對目前框架的改進文章,這些文章會討論這些問題。string
這樣咱們的WebBrowser就大概寫完了。
相關連接: