軟件測試中QTP的幾種同步等待方法
在編寫腳本時,經常要考慮到2個步驟之間的時間間隔問題,例如,1. 打開http://www.baidu.com2/. 輸入avepoint。 由于網速的不同,打開百度網頁之后會有一定的延遲,所以1,2兩步之間要有一個短時間的等待,可以通過以下幾種方法實現:
1. 對象的默認等待時間。
QTP識別對象時,會有一個默認的等待時間,可以在File-->Settings-->Run-->Object synchronization中設置,默認時間是20秒,也就是說當執行到第2步時,網頁還沒有完全打開,這樣的話QTP找不到第2步中需要的對象,那么它會在20秒內不斷的嘗試查找對象,如果百度這個網頁在20秒之內完全打開,那么這個方法就可行(網頁全部打開的話,第2步所需的對象就會被找到),如果超過20秒還不行的話,請參考下面幾種方式
2. 使用.Sync方法。
還是打開百度,輸入Avepoint,可用如下代碼來實現
Browser("Browser").Navigatehttp://www.baidu.com
Browser("Browser").Page("百度").Sync
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "Avepoint"
第2句的意思就是等待百度這個頁面完全打開,才繼續執行下面操作。
3. QTP系統自帶的同步點功能
第2種方法只能在Web中使用,那么如果其他類型的對象需要等待時間怎么辦?可以使用QTP系統自帶的同步點功能。
還是上面的例子,在錄制狀態下,選擇Insert-->Synchronization Point,選擇要同步的對象,設置要同步的屬性,我們可以對對象的Enable,visible一類表示狀態的屬性做同步點,生成如下腳本
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").WaitProperty "visible", True, 100000
這句話的意思就是在100秒的時間內,等待WebEdit這個對象的visible屬性,只要它的visible屬性變為true,那么就執行下面操作,最后的100000單位是毫秒,如果在100000毫秒(100秒)后還沒有等到visible = true,直接執行下面操作。
4. 利用VBS語句。
Do until Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Exist(5)
Wait(1)
Loop
判斷WebEdite這個對象是否出現,如果沒有出現,執行Wait(1),如果出現,跳出循環。
5. 死等大法。
就是用Wait()語句設置等待時間,死等,比如Wait(10),就是腳本停止10秒,任何操作都不做,10秒之后繼續往下執行操作。
原文轉自:http://www.anti-gravitydesign.com