QTP一些問題的解決方法 軟件測試
以下是我經常遇到的問題:
一、無法識別控件。
二、錯誤回放過程未知彈出窗口。
三、加載.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無法繼續回放,結果就是回放失敗。
解決辦法有兩個:
1、進行判斷,當出現這個提示時,點是/否/取消按鈕。
2、通過Tools——Recorvery Scenario Manager設置默認操作。
我最初就是用的第一種方法。寫一個函數判斷是否出現這個提示,如果出現就點“取消”然后wait(2)。 每個可能出現彈出框的動作后都調用一次這個函數。雖然可以解決這個問題,但回放的效率就低了,而且需要你預知提示框的信息。
當我知道了第二種方法,顯然更科學^_^。它可以對所有預知甚至不知的提示進行指定的操作。
實際上,當程序出現了未預知的提示時,可能就是程序的BUG,所以使用上述辦法解決工具問題時,也要考慮是否會掩蓋程序的缺陷。
問題三的解決辦法:
用好QTP后,會不自覺的和TD關聯起來。但從TD直接啟動QTP時,程序只會加載QTP自帶的插件,如果你安裝了其它插件(如.net、java、etc.),默認是不加載的。這會導致上傳的腳本無法正確執行。解決辦法很簡單,去Test——Setting里進行Modify吧。從本地打開的腳本,這里不能進行Modify的。所以辦法很簡單,但如果不知道的話就很難了。當初為這個問題我可是廢了八牛三虎之力呢……
文章來源于領測軟件測試網 http://www.kjueaiud.com/