QTP 同步點設置

在運行測試腳本時,QuickTest通過識別對象來判斷腳本回放是否成功。當對象在默認的時間內未出現時,腳本回放就會報錯。如果需要指定QuickTest暫停運行一個測試或組件,直到特定的對象屬性存在後纔開始運行下一步,那麼可以插入同步點來實現。

  • 同步點原理
  • 同步點方法

---------------------------------------------------------------------------

同步點原理

同步點是指在一個測試過程中,指示QuickTest等待應用程序中某個特定過程運行完成以後再運行下一步操作。
Waits until the specified object property achieves the specified value or exceeds the specified timeout before continuing to the next step.

一般,在下列情況下使用同步點:

  • 判斷進度條是否已經100%完成。
  • 判斷某一狀態消息的出現。
  • 等待某按鈕狀態變爲可用。
  • 一個操作後,彈出一個消息對話框。
  • 等待窗口打開並提交數據。

    默認同步時間

    QTP默認的同步時間爲20s。(File>>>Settings>>>Run>>>Object synchronization timeout:)
    可以手工更改對象識別的同步時間。
    Web插件對於Web瀏覽器對象的默認同步時間爲60s。(File>>>Settings>>>Web>>>Browser navigation timeout:)
    同樣,可以手工更改對象識別的同步時間。

    插入同步點

    語法:object.WaitProperty(PropertyName,PropertyValue,[TimeOut])
    Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").WaitProperty "name","wd",5000

    QTP默認同步時間爲全局時間,手工設置的時間爲同步點超時時間,總超時時間=全局時間+同步點超時時間。時間單位ms。

同步點方法

  • 對象的默認等待時間
  • Sync方法
  • WaitProperty方法
  • Exist方法
  • Wait方法

    對象的默認等待時間

    QTP識別對象時,會有一個默認的等待時間,可以在File>>>Settings>>>Run>>>Object synchronization中設置,默認時間是20秒,也就是說當執行到第2步時,網頁還沒有完全打開,這樣的話QTP找不到第2步中需要的對象,那麼它會在20秒內不斷的嘗試查找對象,如果百度這個網頁在20秒之內完全打開,那麼這個方法就可行(網頁全部打開的話,第2步所需的對象就會被找到),如果超過20秒還不行的話,請參考下面幾種方式

    Sync方法

    Sync方法等待瀏覽器或頁面加載完成後才進行下一步操作。常用對象中,只有Browser(瀏覽器對象)和Page(頁面對象)具有Sync方法。
    Browser.Sync:表示等待IE狀態顯示爲完成後,再進行下一步操作。
    Page.Sync:表示等待頁面信息加載完成後,再進行下一步操作。

    SystemUtil.Run "iexplore.exe","http://www.google.com"
    Browser("Google").Page("Google").Sync

    注意:雖然Sync方法會使QTP等待到頁面加載完成後,才進行下一步操作,但是它無法判斷頁面是否加載成功,如果需要判斷頁面加載是否成功,可以通過判斷頁面中對象visible的屬性值。
    If Browser("Google").Page("Google").WebEdit("q").GetROProperty("visible")=true then
        msgbox "加載成功"
    else
        msgbox "加載不成功"
    end if

    Sync方法只能在Web中使用,如果其他類型的對象需要等待時間怎麼辦?可以使用QTP自帶的同步點功能。

    WaitProperty方法

   WaitProperty方法是指當指定的屬性出現後或是指定時間後指定的屬性還未出現,再進行下一步操作。

   注意:該方法適用於除WinMenu對象(菜單對象)以外的所有標準Windows對象。

   常用的比較方式有一下6種:

  1. micGreaterThan(大於)
  2. micLessThan(小於)
  3. micGreaterThanOrEqual(大於或等於)
  4. micLessThanOrEqual(小於或等於)
  5. micNotEqual(不等於)
  6. micRegExpMatch(正則表達式匹配)

   Exist方法 

   Exist方法用於判斷對象是否存在   語法:object.Exist([TimeOut])   當設置超時時間時,如object.Exist 10,那麼QTP會一直查找該對象,如果在指定的時間內未找到該對象,則提示無法找到該對象。時間單位ms。
   如果設置超時時間爲0,如object.Exist 0,那麼QTP不會等待,而是直接返回查找的結果(True或False)。
   如果未設置超時時間,如object.Exist,那麼超時時間爲QTP默認的同步時間。
   Do until Browser("百度一下,你就知道").Page("百度一下,你就道").WebEdit("wd").Exist(5)
       Wait(1)
   Loop

   判斷WebEdite這個對象是否出現,如果沒有出現,執行Wait(1),如果出現,跳出循環。

   Wait方法

   Wait方法又稱爲爲死等大法。Wait方法使QTP暫停運行一定的時間。
   與其他的方法不同的是,Wait方法強制QTP暫停運行一定的時間,並不會判斷指定的對象是否出現。不管對象是否出現,當等待的時間結束後,QTP都將進行下一步操作。

   當腳本走到Wait函數時,就開始執行這個函數,如:Wait(10),就等待10秒,然後再繼續執行下面的語句。Wait函數的這個等待的時間,是比較固定的,Wait(10),就一定要等待10秒後在執行。時間單位s。
   同步點的等待時間就比較靈活,它的等待時間是不固定的。設置同步點後,當腳本執行到這句話後,腳本就開始執行等待,腳本會在規定時間內不斷的去檢查,所同步的對象有沒有出現,一但出現,腳本就繼續往下執行,不需要等完所規定的時間。如果在固定的時間內,所要同步對象還沒有出現,那就提示超時的錯誤信息。

發佈了28 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章