1.1 如何去識別對象描述(Idenfirying Test Object Descrīption Problems)
如果你能在被測程序中看到對象,但仍出現了“Cannot Identify Object”錯誤信息,這就表示倉庫中對象的描述與程序中對象的描述一定存在著差異。
解決對象描述問題的第一步是找到差異,最簡單的方法是將倉庫中對象的屬性值與程序中對象的屬性值進行比較。(倉庫中對象的屬性值可在Object Repository窗口中查看,程序中對象的屬性值可用Object Spy功能查看。)
比較倉庫中對象的屬性值與程序中對象的屬性值的操作見1.3。
在完成比較后,是否發現存在差異?
如果是,請參考1.4;
如果否,請參考1.5。
1.2 處理對象丟失問題(Solving Missing Object Problems)
在運行腳本時,QTP償試進行某種操作,而該操作的對象在程序中卻沒有出現,出現這種情況的原因有以下幾種:
>>>對象不再存在。對象已經被從程序中刪除。
解決方法:見1.2.1。
>>>對象還沒有裝載。
解決方法:見1.2.2。
>>>當前的程序頁面(或窗口)不正確,不是對象所在的頁面(或窗口)。
解決方法:見1.2.3。
>>>前一個步驟沒有正確執行。
解決方法:見1.2.3。
1.2.1 解決對象不再存在的問題
如果對象已經不再在被測程序中存在,則應在腳本中修改或刪除相關步驟。
1.2.2 解決對象裝載超時的問題
如果對象丟失的原因是因為沒有足夠的時間裝載,償試以下解決方案:
a.對于Web對象,增加Browser Navigation Timeout(File>Setting>Web頁簽)時間。
b.在包括該對象的步驟前使用Wait語句,讓QTP在執行該步驟之前等待一段時間。
1.2.3 檢查前面步驟的執行情況
如果是因為打開了錯誤的頁面(或窗口)導致對象丟失問題,或因為前一步驟執行措誤導致對象丟失問題,則請按以下方法檢查原因:
a. 如果懷疑在完成腳本后,被測程序又發生了改變,則檢查對象的繼承關系以及對象描述。參考1.1。
b. 如果懷疑腳本錯誤,則檢查腳本的每一個步驟。你可能是遺失了某個步驟,也可能是使用了不正確的方法或參數。
1.3 測試對象的屬性值與Run-time對象的屬性值的比較(Comparing Test Object and Run-Time Object Property Values)
根據以下的步驟比較測試對象與Run-time對象的屬性值:
1) 進入Obecjt Repository窗口(Resources>Object Repository),選擇對象。
2) 用筆記下對象的class以及它的各個屬性及屬性值。
3) 打開被測程序,并打開包含被測對象的頁面或窗口。
4) 在QTP中選擇菜單Tools>Object Spy或點擊Object Spy按鈕,打開Object Spy對話框。
5) 選擇“Test Object Properties”選項。
6) 點擊右上角的按鈕(帶有手圖標的),這時QTP窗口以及Object Spy對話框都被最小化。
7) 在程序頁面(或窗口)中點擊目標對象,恢復Object Spy對話框,并在對話框中顯示對象及其父對象(以樹的形式顯示),并在Properties頁簽中顯示當前對象的屬性及屬性值。
8) 這時Object Spy對話框的Properties頁簽中顯示Run-time對象的所有屬性,在此查看對象的class,以及它的屬性及屬性值,并將它與第2步中記下的內容進行比較。
1.4 解決對象描述存在的問題(Solving Object Descrīption Problems)
如果發現倉庫中對象的屬性值與程序中對象的屬性值存在不同,你應該判斷這個不同是個別對象的問題,還是其它同類對象也存在相同的問題。
是所有(或多個)同類對象都存在問題嗎?
如果是,則參考1.6
如果否,則參考1.7
1.5 關于父對象描述的識別問題(Identifying Parent Object Descrīption Problems)
對象的識別還與它所繼承的父對象有關。
如果你能在被測程序中看到對象,而且程序中對象的屬性值與倉庫中對象的屬性值也是一致的,但仍然遭遇到了“Cannot identify object”錯誤,則這個錯誤可能與它的父對象有關(如倉庫中父對象的屬性值與程序中父對象的屬性值不一致),也可能是倉庫中的對象與程序中對象的繼承關系不相同導致的。
要判斷是繼承關系中的哪個父對象出現了問題,請償試下面的方法之一:
>>>重新錄制對象,比較新舊對象的父對象。
欲了解如何完成比較,參考1.8。
>>>對繼承關系中的每個父對象,分別插入一個Exist語句,并運行該部分腳本。
欲了解如果創建Exist語句,參考1.9。
注:你也可以使用Object Repository窗口中的Highlight in Application功能,在被測程序中定位對象。
一旦找到了存在問題的父對象,接下來償試以下方法:
>>>修復存在問題的父對象的描述。方法見1.4。
>>>在專家視圖的模式下,查找所有繼承存在問題的實例并進行修正。
舉例:1.8.1。
1.6 解決某類對象的識別問題(Soving Object Identification Problems for a Test Object Class)
如果你發現某類對象的對象描述對于被測程序來說都不是很合理,或你預期到對象描述中的某屬性值是經常變化的,你可以在Object Identification對話框中改變該類的識別屬性的設置,或定義該類的Smart Identification設置并啟用Smart Identification機制,這樣QTP就可以唯一識別對象了。
原文轉自:http://www.anti-gravitydesign.com