QTP一些問(wèn)題的解決方法 軟件測試
以下是我經(jīng)常遇到的問(wèn)題:
一、無(wú)法識別控件。
二、錯誤回放過(guò)程未知彈出窗口。
三、加載.net插件后和TD的關(guān)聯(lián)問(wèn)題。
四、動(dòng)態(tài)加載元素的識別問(wèn)題。
五、調用外部dll的問(wèn)題。
六、隨機驗證碼的問(wèn)題。
問(wèn)題一,解決辦法有三種:
1、更改QTP自身對某控件的識別方式,在tools——Object Identification中。在這里列出了所有QTP能識別的控件,以及控件的識別方式。你可以給他添加X(jué)、Y坐標進(jìn)行識別;蚋黠@的,列表中的信息,不按名稱(chēng)識別,而是按ID識別。這個(gè)修改可以解決一些問(wèn)題,具體的趕緊動(dòng)手試試吧……
2、使用虛擬物件,來(lái)定義一個(gè)控件,在tools——Virtual Object中。在這里可以自定義一個(gè)控件。例如在A(yíng)SP的程序中,程序出錯,在客戶(hù)端的表現形式大部分是一樣的,你可以把整個(gè)錯誤頁(yè)面當成一個(gè)控件來(lái)識別(感覺(jué)不錯)。如果加一個(gè)判斷,出錯后你想做什么就由你自己定了。
3、使用低級錄制或鼠標錄制。用Test——LowLevelRecording/AnlogRecording吧,用它錄制就不需要什么設置了,他會(huì )記錄你的程序控件相對屏幕的位置。用LowLevelRecording還有代碼可改,用AnlogRecording動(dòng)作就被封裝了(維護性極差)。兩者因實(shí)際環(huán)境更取其長(cháng)吧……
問(wèn)題二的解決過(guò)程:
關(guān)于彈出提示的問(wèn)題,我當時(shí)需要情況是這樣的。一個(gè)信息錄入系統,由于數據量很大,查詢(xún)需要一段時(shí)間。QTP回放時(shí)動(dòng)作比較快,點(diǎn)了保存,程序還沒(méi)反應過(guò)來(lái)它就進(jìn)行了下一步操作。這時(shí)的操作就和錄制時(shí)不一樣了,程序給出一個(gè)提示,但這個(gè)提示是錄制過(guò)程沒(méi)有的。彈出框是一般都是POP形勢(至上)的,導致QTP無(wú)法繼續回放,結果就是回放失敗。
解決辦法有兩個(gè):
1、進(jìn)行判斷,當出現這個(gè)提示時(shí),點(diǎn)是/否/取消按鈕。
2、通過(guò)Tools——Recorvery Scenario Manager設置默認操作。
我最初就是用的第一種方法。寫(xiě)一個(gè)函數判斷是否出現這個(gè)提示,如果出現就點(diǎn)“取消”然后wait(2)。 每個(gè)可能出現彈出框的動(dòng)作后都調用一次這個(gè)函數。雖然可以解決這個(gè)問(wèn)題,但回放的效率就低了,而且需要你預知提示框的信息。
當我知道了第二種方法,顯然更科學(xué)^_^。它可以對所有預知甚至不知的提示進(jìn)行指定的操作。
實(shí)際上,當程序出現了未預知的提示時(shí),可能就是程序的BUG,所以使用上述辦法解決工具問(wèn)題時(shí),也要考慮是否會(huì )掩蓋程序的缺陷。
問(wèn)題三的解決辦法:
用好QTP后,會(huì )不自覺(jué)的和TD關(guān)聯(lián)起來(lái)。但從TD直接啟動(dòng)QTP時(shí),程序只會(huì )加載QTP自帶的插件,如果你安裝了其它插件(如.net、java、etc.),默認是不加載的。這會(huì )導致上傳的腳本無(wú)法正確執行。解決辦法很簡(jiǎn)單,去Test——Setting里進(jìn)行Modify吧。從本地打開(kāi)的腳本,這里不能進(jìn)行Modify的。所以辦法很簡(jiǎn)單,但如果不知道的話(huà)就很難了。當初為這個(gè)問(wèn)題我可是廢了八牛三虎之力呢……
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/