在進行軟件測試時手工編寫QTP測試腳本方法
這里可能有人會問, QTP 的錄制功能不是很強大么,為什么還要自己手寫腳本,這樣是不是更麻煩。我先說一下我對手寫 測試 腳本的感受,供大家參考。首先,如果我們整理好對象倉庫,再錄制腳本,QTP就會又自動生成一批新的對象,命名很亂,再修改替換太費事;其
這里可能有人會問,
QTP的錄制功能不是很強大么,為什么還要自己手寫腳本,這樣是不是更麻煩。我先說一下我對手寫
測試腳本的感受,供大家參考。首先,如果我們整理好對象倉庫,再錄制腳本,QTP就會又自動生成一批新的對象,命名很亂,再修改替換太費事;其次,錄制腳本的過程如果出現問題,再重來,很麻煩;最后,也是最重要的,手寫腳本時思路非常清楚,而且寫完再運行,感覺非常好,呵呵。
與編寫腳本相比,腳本的維護工作同樣很重要,而且維護腳本一般都是直接修改腳本,并不會去重新錄制,所以開始的時候就用手寫的方式,維護起來就會更輕松。
編寫QTP腳本其實是比較簡單、快速的。我們首先創建一個Test,然后把所有相關對象倉庫的tsr文件和
vbs文件添加到這個Test里面,下面就可以開始寫了。寫腳本大致會遇到這么幾種情況:
1、調用vbs函數
2、調用其他Test
3、打開指定的URL
4、操作頁面Page上的控件
5、添加CheckPoint
6、其他邏輯運算
我們分別講一下。調用vbs函數比較簡單,直接Call [函數名]。如果要調用其他的Test,那么首先點擊Call to Existing Test,然后在
QC中選擇一個可以復用的Test,例如登錄。如果登錄的Test有參數,那么可以這樣寫:
RunAction \"Action1 [login]\", oneIteration , \"張三\"
下面的腳本要操作對象倉庫了。我們先寫出“Browser(”,這時就會發現,對象倉庫里面的Browser對象都列了出來,然后我們選擇需要的那個B對象就好。我們先從打開指定URL的腳本開始講,打開指定的URL使用的機會比較多,特別是在Test的開始。一般我們這樣寫
Browser(\"登錄\").Navigate \"指定的URL\"
這里的“登錄”是一個Browser對象,一般我們要選業務上符合的B對象。寫完這句以后要再寫:
Browser(\"登錄\").Page(\"登錄首頁\").Sync
這句的意思是等待“登錄首頁”這個Page加載完畢,注意不要用Wait幾秒這種方式來等待頁面加載結束。
操作Page的對象是比較簡單的,由于控件的類型太多,比如下拉菜單WebList、文本輸入框WebEdit、按鈕WebButton,這里就不一一說明了,大家看下面的一些例子吧:
Browser(\"購買直充\").Page(\"購買直充\").WebList(\"
游戲區\").Select 1
Browser(\"購買直充\").Page(\"購買直充\").WebEdit(\"PlayerName\").Set \"abc\"
Browser(\"購買直充\").Page(\"購買直充\").WebEdit(\"PlayerNameAgain\").Set \"abc\"
Browser(\"購買直充\").Page(\"購買直充\").WebEdit(\"CheckCode\").Set \"8888\"
Browser(\"購買直充\").Page(\"購買直充\").Image(\"Submit\").Click
如果遇到問題,不知道怎么寫,可以先用錄制的方式,生成一些腳本,然后仿照腳本寫就可以了。另外在Page下面有可能會有Frame對象,這個沒關系,就像這樣寫即可:
Browser(\"我的直充\").Page(\"我的直充\").Frame(\"直充入口\").Image(\"立即直充\").Click
添加CheckPoint要稍微復雜一些,比如說我們要檢查Page上的一個WebElement的顯示字符是否正確,那么首選要把這個WebElement完整的寫在Test里面,這一句后面需要刪除:
Browser(\"購買直充\").Page(\"購買直充\").WebElement(\"購買結果\").Click
然后右擊這一行腳本,選擇Insert Standard CheckPoint,在彈出的CP屬性窗口,設置CP的細節。確認后腳本就會自動生成一行:
Browser(\"購買直充\").Page(\"購買直充\").WebElement(\"購買結果\").Check CheckPoint(\"購買結果\")
最后再把上面那一行刪除就可以了。
其他的邏輯運算,例如循環、判斷,請參考vbs腳本語法,這里不說了。
總之,手動編寫QTP腳本有很多好處,我在嘗試了錄制和手寫兩種方式之后,最終選擇了手寫的方式,大家不妨也試試,特別是對編碼有興趣的朋友。
原文轉自:http://www.anti-gravitydesign.com