對于我來說,學習QTP是一個漫長而有艱苦的過程 。首先我不是計算機及相關專業畢業的(醫學相關)。跳入測試部時,我正在接受程序員的培訓課程。由于自己認為需要,于是開始學習QTP。
剛開始使用QTP,就一直對著說明書,不停的“訂飛機票”(訂飛機票是說明書里的一個例子)。學會了一個步驟就拿到公司產品上玩玩,回憶起來還是挺有趣的。
當我用一些簡單的功能開始錄制腳本時,發現保存ActiveXScreen的話,生成的腳本很中空間(因為程序會保存每個不同的錄制頁面),多錄一些硬盤空間就滿了,而且回放過程會很慢。 但如果不保存活動頁(ActiveXScreen),對腳本的再改造/維護起來就相對困難一些。
于是我開始去了解“關鍵字”視圖里的內容,嘗試了解代碼。慢慢的,我了解到“關鍵字”視圖顯示了整個操作步驟,第個組件相對于程序里一個元素。同時還記錄了錄制過程對該元素的操作和結果。
然后我又開始在論壇在找些資料看看,從有點所謂的高級應用中,我發現腳本的維護并不一定要有“活動頁”。實際是QTP所有對象的識別,都存在腳本的一個對象庫里了。QTP經常出現無法識別對象的問題,可以從這里著頭修改。
為了減少QTP腳本占用空間大、錄制慢的問題。我查閱了一些資料,可以在設置中進行修改,讓腳本中不保存活動控件(ActiveX)或僅保存出錯時的錄制
頁面。干脆,我就從此錄制頁面了。所有的調試都從“關鍵字”視圖和“專家”視圖中進行修改。而且關于對象庫,QTP也有個選項,可以設置加載頁面上所有的
對象,我修改成只保存頁面上錄制過程使用的對象。 這
樣,腳本的容量問題就解決了,錄制后的腳本會比以前小很多,來了個徹底的瘦身。關于錄制速度的問題,和保存“活動頁”、動態腳本也有一定的關系,另外可以
減小啟動的加載項(如:去掉VB插件、.net插件,不需要的就不加進來)。這樣的腳本上傳到TestDirector上,或從TestDirector
上調用就不會太慢了。
然而真正的問題,棘手的問題就不是上面所述的那么簡單了。不過都是有辦法解決了的,嘿嘿……
以下是我經常遇到的問題:
一、無法識別控件。
二、錯誤回放過程未知彈出窗口。
三、加載.net插件后和TD的關聯問題。
四、動態加載元素的識別問題。
五、調用外部dll的問題。
六、隨機驗證碼的問題。
問題一,解決辦法有三種:
1、更改QTP自身對某控件的識別方式,在 tools——Object Identification
中。在這里列出了所有QTP能識別的控件,以及控件的識別方式。你可以給他添加X、Y坐標進行識別?;蚋黠@的,列表中的信息,不按名稱識別,而是按ID
識別。這個修改可以解決一些問題,具體的趕緊動手試試吧……
2、使用虛擬物件,來定義一個控件,在 tools——Virtual
Object
中。在這里可以自定義一個控件。例如在ASP的程序中,程序出錯,在客戶端的表現形式大部分是一樣的,你可以把整個錯誤頁面當成一個控件來識別(感覺不
錯)。如果加一個判斷,出錯后你想做什么就由你自己定了。
3、使用低級錄制或鼠標錄制。用
Test——LowLevelRecording/AnlogRecording
吧,用它錄制就不需要什么設置了,他會記錄你的程序控件相對屏幕的位置。用LowLevelRecording還有代碼可改,用
AnlogRecording動作就被封裝了(維護性極差)。兩者因實際環境更取其長吧……
問題二的解決過程:
關于
彈出提示的問題,我當時需要情況是這樣的。一個信息錄入系統,由于數據量很大,查詢需要一段時間。QTP回放時動作比較快,點了保存,程序還沒反應過來它
就進行了下一步操作。這時的操作就和錄制時不一樣了,程序給出一個提示,但這個提示是錄制過程沒有的。彈出框是一般都是POP形勢(至上)的,導致QTP
無法繼續回放,結果就是回放失敗。
原文轉自:http://www.anti-gravitydesign.com