• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 自己動手寫Web自動化測試框架5 - 判斷瀏覽器是否加載完成

    發表于:2010-06-30來源:作者:點擊數: 標簽:自動化框架webWebWEB
    自己動手寫Web 自動化測試 框架5 - 判斷瀏覽器是否加載完成 軟件測試 上面的幾次課程中,我們介紹了如何打開瀏覽器,如何獲取每個web控件的信息,并且控制并驗證他們。 從上面的文章中,我相信大家已經可以寫出簡單的測試程序了。但是還有一個很重要的問題沒

      自己動手寫Web自動化測試框架5 - 判斷瀏覽器是否加載完成  軟件測試

      上面的幾次課程中,我們介紹了如何打開瀏覽器,如何獲取每個web控件的信息,并且控制并驗證他們。

      從上面的文章中,我相信大家已經可以寫出簡單的測試程序了。但是還有一個很重要的問題沒有解決:如何判斷瀏覽器是否加載完成?

      前面的文章我們沒有對瀏覽器的加載進行判斷,而只是簡簡單單的等一段時間,這不是一個很好的解決方法,一方面浪費了時間,另一方面,我們也無法知道應該等多久,導致我們的測試程序不夠穩定。

      接下來我們假設被測網頁沒有Ajax和框架,以這種情況來分析如何判斷網頁加載完畢。

      現在比較常用判斷是否加載的方法有三種:

      不停判斷IE的狀態,如果沒有準備好就等待。

      實現IE的DocumentComplete事件,標志完成。

      不停去查找頁面有沒有我們想要控件,沒有就等待。

      第一種方法:不停判斷IE的狀態,我們要判斷IE的哪些狀態呢?

      一方面,我們需要判斷IE的Busy狀態,看IE是不是在忙著解析東西,另一方面判斷IE的ReadyState狀態,看html文檔是不是被完全加載進來。

    clearcase/" target="_blank" >ccff" border=0>
    MILY: 新宋體">

    while(ie.Busy || ie.ReadyState !=tagREADYSTATE.READYSTATE_COMPLETE)
    {
      Thread.Sleep(100);
    }

      用如上的代碼就可以等待IE到完成。

     

    這里只是簡簡單單的Demo,所以用了很簡單的預計進行判斷,我們假設我們的網頁沒有Ajax,也不會出現Load的死鎖,真正的實際工作要比這個復雜一些,比如要定一個Time out,如果除了Timeout的范圍,就強行終止,以防止測試過程中的死鎖。

    而如何判斷Ajax是否被加載完,不是我們這個系列的討論范圍,請關注以后的其他系列文章。

      這種方法是我比較推薦的一種方法,雖然《.net軟件測試自動化之道》推薦的是第二種方法,不過我經過實際的測試,推薦第一種方法。這個方法可以比較好的處理Navigate、Submit等情況,也是WatiN使用的方法(WatiN的用法要復雜很多,考慮到了Frame等其他情況)。

      第二種方法:通過綁定DocumentComplete,用AutoResetEvent來等待。

      InternetExplorer給我們提供了DocumentComplete事件,會在IE被Load之后被調用,我們可以使用這個來等待。等待方法就是使用System.Threading.AutoResetEvent對象來。

      所以我們需要做的是:

      聲明一個AutoResetEvent對象的實例,因為要在兩個方法直接調用,所以需要放到類的成員變量。

      在InternatExplorer被獲取之后,綁定DocumentComplete事件。

      在DocumentComplete事件中,調用AutoResetEvent.set()方法。

      在等待頁面加載的時候調用AutoResetEvent.WaitOne()方法

      下面是源代碼:

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>