在
測試中經(jīng)常會出現(xiàn)在兩個頁面中的使用同一個對象,出現(xiàn)這樣的情況我們一定是使用同一個對象來處理,這樣才不會出現(xiàn)重復對象,就比如我們使用
百度搜索,當我們打開百度時有一個搜索框,在輸入一些內(nèi)容提交后,頁面會重載并且搜索框這個對象仍然存在,這個時候如果我們需要再次控制搜索框這個對象我們一定會想到直接使用之前對象庫里的那個搜索框對象,因為它們其實就是同一個對象。
SystemUtil.Run "iexplore.exe" Set oBrowser = Browser("micClass:=Browser") Set oEdit = oBrowser.Page("micClass:=Page").WebEdit("name:=wd","index:=0") oBrowser.Navigate www.baidu.com With oEdit .Set "zzxxbb112" .Submit End With oEdit.Set http://blog.csdn.net/zzxxbb112 |
我們可以看到在運行以上腳本后,QTP首先是輸入搜索內(nèi)容然后提交,在提交的瞬間也就是頁面還有跳轉完成時就提前輸入了另一個值,而這并不是我們想要的效果,我們需要的是等頁面跳轉完成之后再輸入另一個搜索內(nèi)容。解決這個問題的辦法是添加同步函數(shù)sync。
SystemUtil.Run "iexplore.exe" Set oBrowser = Browser("micClass:=Browser") Set oEdit = oBrowser.Page("micClass:=Page").WebEdit("name:=wd","index:=0") oBrowser.Navigate www.baidu.com With oEdit .Set "zzxxbb112" .Submit End With oBrowser.Sync oEdit.Set http://blog.csdn.net/zzxxbb112 |
在添加同步之后,QTP就會等待頁面緩沖完成之后,才對搜索框進行輸入操作,但是問題又來了,我們運行以上腳本后卻碰到了另一個問題。QTP無法對重載頁面后的搜索框對象進行操作,但其實他們是一個對象,腳本提示:oEdit參數(shù)不正確。
這個問題的原因其實是因為當頁面同步完成時,測試對象還沒有被同步,因此導致我們無法對其進行操作,而報出了以上的錯誤。不過幸好QTP提供了一個方法可以解決此問題。
SystemUtil.Run "iexplore.exe" Set oBrowser = Browser("micClass:=Browser") Set oEdit = oBrowser.Page("micClass:=Page").WebEdit("name:=wd","index:=0") oBrowser.Navigate www.baidu.com With oEdit .Set "zzxxbb112" .Submit End With oBrowser.Sync oEdit.init oEdit.Set http://blog.csdn.net/zzxxbb112 |
執(zhí)行以上腳本后成功做到了在WEB頁面加載后對象的復用。
obj.init —- 此方法為QTP的隱藏方法,在幫助文檔中都沒有任何的介紹,用于重新同步頁面上的測試對象。我們可以通過使用VS2008改裝過的DEBUG引擎來查看此方法。