<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Ready Test? Go, Go, Go !!!
     

    關(guān)注測試,也關(guān)注成長

    公告
    • 關(guān)注軟件測試自動化,性能測試。
      目前負責醫(yī)療軟件功能測試以及
      測試過程改進

    日歷
    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678
    統(tǒng)計
    • 隨筆 - 22
    • 文章 - 0
    • 評論 - 87
    • 引用 - 0

    導航

    常用鏈接

    留言簿(17)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     


    出處:http://blog.163.com/lilei_0207/blog/static/306754920079242641852/

    1. 不能識別對象(Cannot identify object

    出現(xiàn)了這個錯誤時,就表示當前被測程序的窗口中沒有符合條件的對象。

    出現(xiàn)這種錯誤,可能的原因有以下兩種:

    >>> 對象此時在程序中沒有顯示或不存在。

    >>> 在程序中存在該對象,但是它的描述在后來發(fā)生了改變,導致與對象倉庫中存儲的信息不匹配,從而QTP無法識別對象。

    如果你正遇到“Cannot identify object”的問題,解決方法見1.1

    1.1 如何去識別對象描述(Identifying Test Object Description Problems

        如果你能在被測程序中看到對象,但仍出現(xiàn)了“Cannot Identify Object”錯誤信息,這就表示倉庫中對象的描述與程序中對象的描述一定存在著差異。

        解決對象描述問題的第一步是找到差異,最簡單的方法是將倉庫中對象的屬性值與程序中對象的屬性值進行比較。(倉庫中對象的屬性值可在Object Repository窗口中查看,程序中對象的屬性值可用Object Spy功能查看。)

    比較倉庫中對象的屬性值與程序中對象的屬性值的操作見1.3

    在完成比較后,是否發(fā)現(xiàn)存在差異?

    如果是,請參考1.4

    如果否,請參考1.5 

    1.2 處理對象丟失問題(Solving Missing Object Problems

    在運行腳本時,QTP嘗試進行某種操作,而該操作的對象在程序中卻沒有出現(xiàn),出現(xiàn)這種情況的原因有以下幾種:

    >>> 對象不再存在。對象已經(jīng)被從程序中刪除。

    解決方法:見1.2.1

    >>> 對象還沒有裝載。

    解決方法:見1.2.2

    >>>當前的程序頁面(或窗口)不正確,不是對象所在的頁面(或窗口)。

    解決方法:見1.2.3

    >>>前一個步驟沒有正確執(zhí)行。

    解決方法:見1.2.3

    1.2.1 解決對象不再存在的問題

    如果對象已經(jīng)不再在被測程序中存在,則應在腳本中修改或刪除相關(guān)步驟。

    1.2.2 解決對象裝載超時的問題

    如果對象丟失的原因是因為沒有足夠的時間裝載,嘗試以下解決方案:

    a.對于Web對象,增加Browser Navigation TimeoutFile>Setting>Web頁簽)時間。

    b.在包括該對象的步驟前使用Wait語句,讓QTP在執(zhí)行該步驟之前等待一段時間。

    1.2.3 檢查前面步驟的執(zhí)行情況

    如果是因為打開了錯誤的頁面(或窗口)導致對象丟失問題,或因為前一步驟執(zhí)行措誤導致對象丟失問題,則請按以下方法檢查原因:

    a. 如果懷疑在完成腳本后,被測程序又發(fā)生了改變,則檢查對象的繼承關(guān)系以及對象描述。參考1.1

    b. 如果懷疑腳本錯誤,則檢查腳本的每一個步驟。你可能是遺失了某個步驟,也可能是使用了不正確的方法或參數(shù)

    1.3 測試對象的屬性值與Run-time對象的屬性值的比較(Comparing Test Object and Run-Time Object Property Values

    根據(jù)以下的步驟比較測試對象與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步中記下的內(nèi)容進行比較。 

    1.4 解決對象描述存在的問題(Solving Object Descrīption Problems

        如果發(fā)現(xiàn)倉庫中對象的屬性值與程序中對象的屬性值存在不同,你應該判斷這個不同是個別對象的問題,還是其它同類對象也存在相同的問題。

    是所有(或多個)同類對象都存在問題嗎?

    如果是,則參考1.6

    如果否,則參考1.7 

    1.5 關(guān)于父對象描述的識別問題(Identifying Parent Object Descrīption Problems

    對象的識別還與它所繼承的父對象有關(guān)。

        如果你能在被測程序中看到對象,而且程序中對象的屬性值與倉庫中對象的屬性值也是一致的,但仍然遭遇到了“Cannot identify object”錯誤,則這個錯誤可能與它的父對象有關(guān)(如倉庫中父對象的屬性值與程序中父對象的屬性值不一致),也可能是倉庫中的對象與程序中對象的繼承關(guān)系不相同導致的。

    要判斷是繼承關(guān)系中的哪個父對象出現(xiàn)了問題,請償試下面的方法之一:

    >>>重新錄制對象,比較新舊對象的父對象。

    欲了解如何完成比較,參考1.8

    >>>對繼承關(guān)系中的每個父對象,分別插入一個Exist語句,并運行該部分腳本。

    欲了解如果創(chuàng)建Exist語句,參考1.9

    注:你也可以使用Object Repository窗口中的Highlight in Application功能,在被測程序中定位對象。

    一旦找到了存在問題的父對象,接下來償試以下方法:

    >>>修復存在問題的父對象的描述。方法見1.4

    >>>在專家視圖的模式下,查找所有繼承存在問題的實例并進行修正。

    舉例:1.8.1 

    1.6 解決某類對象的識別問題(Soving Object Identification Problems for a Test Object Class

        如果你發(fā)現(xiàn)某類對象的對象描述對于被測程序來說都不是很合理,或你預期到對象描述中的某屬性值是經(jīng)常變化的,你可以在Object Identification對話框中改變該類的識別屬性的設置,或定義該類的Smart Identification設置并啟用Smart Identification機制,這樣QTP就可以唯一識別對象了。

    1.7 解決單個對象的描述問題(Solving Individual Test Object Description Problems

    選擇下列方法之一來解決對象的描述問題:

    >>>如果被測程序中對象描述發(fā)生了改變,并且你也清楚改變的內(nèi)容,并且該改變是永久性或長期性的,你可以直接手工修改倉庫中對象描述中的相關(guān)屬性值。

    >>>如果被測程序中的對象的屬性值依賴于前面的步驟或其它對象,則將該屬性值參數(shù)化,這樣就可以使用其它步驟的輸出值為屬性值。

    >>>如果屬性值的組成部分中,部分是固定的,部分是動態(tài)改變的,則可以將屬性值設計為正則表達式。

    >>>如果屬性值是遵循某種規(guī)則變化的,或者是不可預期的,則從對象描述中移除該屬性,并向?qū)ο竺枋鲋刑砑右粋€或多個屬性以便于QTP進行對象識別。

    >>>If you can only access the information on the property values during the run session, you can create and use functions that use programmatic descriptions to identify the object using property values retrieved earlier in the run session.

    For more information on programmatic descriptions, see Using Programmatic Descriptions.

    >>>如果在錄制過程中對象是唯一的,但現(xiàn)在程序中出現(xiàn)了兩個或多個描述相同的對象,但是它們在頁面(或窗口)中的位置不相同,則應在Object PropertiesObject Repository窗口中,向?qū)ο竺枋鲋刑砑右粋€ordinal identifierindexlocation)。

     

    1.8 重新錄制對象,以判斷父對象描述是否存在問題(Re-recording an Object to Identify Parent Object Description Problems

    根據(jù)下面的指引,來判斷父對象的問題。

    通過重新錄制對象,來判斷它的父對象是否存在問題:

    1) 打開瀏覽器或程序,來到包含被測對象的頁面或窗口。

    2) 在關(guān)鍵字視圖模式,選擇最后一個組件(component),或在專家視圖模式,將光標放在最后一個腳本步驟的下面。

    3) 點擊Record按鈕,或選擇Automation>Record

    4) 點擊(或操作)頁面或窗口中的目標對象。

    5) 點擊Stop按鈕,或選擇Automation>Stop,完成步驟添加。

    6) 右擊新添加的步驟,并選擇Object Properties右鍵菜單。

    7) Object Properties對話框中,點擊Repository,打開Object Repository窗口,并選中了新對象。注意記下該對象的繼承關(guān)系。

    8) Object Repository窗口中找到舊的對象(即存在問題的對象),將它的繼承關(guān)系與新對象的繼承關(guān)系進行比較。

    通過比較,可以檢查到新舊對象是父對象的描述存在不同,還是它們的繼承關(guān)系根本就不同。

    a. 如果是父對象的描述問題,則修改父對象的描述。參見1.4.

    b. 如果是對象的繼承關(guān)系不正確(即具有不同的父對象)引起的問題,則在腳本中找到所有使用該繼承關(guān)系的實例,將它們替換為正確的繼承關(guān)系。

    舉例:參見1.8.1

    1.8.1 舉例

        假設有一個帶有Frame的網(wǎng)站,你錄制了一個操作針對Image對象“Poster”的操作步驟。在Object Repository窗口,你可以Image對象的繼承關(guān)系如下所示:

    MyCompanyBrowser

        MyCompanyPage

            Main(Frame)

                 Poster(image)

        當你運行腳本時,網(wǎng)頁看起來沒有什么不同,但是識別Image對象時卻出現(xiàn)了“Cannot identiry object”的錯誤提示。當你重新錄制操作步驟,然后在Object Repository窗口中查看新的Image對象時,發(fā)現(xiàn)該對象的繼承關(guān)系如下所示:

    MyCompanyBrowser

        MyCompanyPage

             Poster(image)

        從中可以看出,Frame已經(jīng)從Web Page中移除,所以盡管Image對象“Poster”的描述沒有發(fā)生任何改變,但它的繼承關(guān)系已經(jīng)改變了。

        Object Repository窗口,你可以看到新舊Image對象“Poster”是兩個完全不同的對象:舊的位于已經(jīng)被移除的Frame對象之下,而新的則直接位于PageMycompany”對象之下。

        修復這個問題,可以在腳本步驟中將舊的對象替換為新的對象。

        為了保持Object Repository窗口的整潔,你應刪除那些已不再存在的對象(如本例中的Frame)。

    1.9 創(chuàng)建Exist語句,以判斷父對象的描述是否存在問題

        QTP在錄制發(fā)生在某個對象上的操作時,也會同時去了解對象以及它的繼承關(guān)系。因此,如果在運行過程中,QTP不能識別繼承關(guān)系中的任何一個父對象,都會導致目標對象的識別失敗。

        使用帶有Exist方法的Msgbox語句,可以方便的檢查出是繼承關(guān)系中的哪個父對象出現(xiàn)了問題。

        假設在運行下面腳本時,你遇到了“Cannot identify Object”錯誤信息(但是可以確定對象倉庫中Link對象的描述與當前程序中對象的描述是完全一致的):

    Browser("Yahoo!").Page("Yahoo!").Link("Arts & Humanities").Click

    你可以在該語句前面插入以下語句:

    Msgbox Browser("Yahoo!").Exist

    Msgbox Browser("Yahoo!").Page("Yahoo!").Exist

    Msgbox Browser("Yahoo!").Page("Yahoo!").Link("Arts & Humanities").Exist

    然后你從頭開始運行腳本,發(fā)現(xiàn)第1行語句運

        但是,當QTP運行到第2步時,就彈出信息框,內(nèi)容為“False”,表示不能找到Page object。這就證明Page對象存在問題。

        確定了出現(xiàn)問題的父對象以后,修復該問題。參見1.4

    2. 對象不唯一(The object is not unique

    在被測頁面或窗口中的同一父對象下,找到多個與倉庫中對象描述相符的Run-tim對象。

    請確定是只有個別對象存在此問題,還是此類對象的所有對象(或部分對象)存在此問題。

    此類對象的所有對象(或部分對象)都存在此問題嗎?

    如果是,參考2.1

    如果否,參考2.2 

    2.1 為某對象類設置能唯一識別對象的描述規(guī)則(Configuring Unique Test Object Descrīptions for a Test Object Class

        如果你發(fā)現(xiàn)某類對象的對象描述都不足以唯一識別對象,你可以在Object Identification對話框中,改變該類的識別屬性的設置,或定義該類的Smart Identification設置并啟用Smart Identification機制,這樣QTP就可以唯一識別對象了。

     

    2.2 設置通唯一識別對象的對象描述(Creating a Unique Test Object Descrīption for an Object

    查看當前對象的描述,并償試在程序中找到其它具有相同描述的對象并查看它們的描述。

    >>>如果你找到了可以將它們區(qū)別開來的一個或多個屬性,則修改倉庫中對象的相關(guān)屬性(如向描述中添加屬性等),以使QTP在運行時可以唯一識別它。

    >>>如果它們的識別屬性完全相同,則在對象描述中為對象添加一個ordinal identifierindexlocation)。 

    3. 找不到父對象(Parent not found

    識別對象時,會先識別它的父對象是否正確。如果遇到“Parent not found”的錯誤信息,請償試以下解決方法:

    >>>修復出現(xiàn)問題的父對象的描述。參見1.4

    >>>在腳本中找到繼承關(guān)系不正確的實例,并修改為正確的繼承關(guān)系。例如1.8.1

    4. 無效的參數(shù)(Invalid arguments

    一個或多個方法的參數(shù)是無效的。

    參數(shù)無效可能是參數(shù)類型錯誤,也可能是參數(shù)個數(shù)不正確。

    根據(jù)以下建議,找到方法的正確語法:

    >>>Keyword模式,如果方法包括參數(shù),則在Value欄會顯示該方法的參數(shù)提示。

    >>>Expert模式,如果方法包括參數(shù),則當你插入方法然后按下Shift+Ctrl+Space鍵時,QTP會顯示該方法的參數(shù)的提示信息。(注:只有在Editor Options對話框的General頁簽中打開了Statement completion功能時才可以看到參數(shù)的提示信息。) 

    5. 不能識別itemCannot identify item

    QTP不能識別方法參數(shù)中指定的列表或樹對象的item時,請確認指定的item是否存在于對象之中。

    >>>如果item不存在,則刪除相關(guān)腳本步驟,或修改item

    >>>如果item存在,但被測程序中它的名字發(fā)生了改變,則修改item的名稱,或在腳本中使用itemindex而不是名字(如“#4”)。

    注意,不同的對象或方法,它們使用index的語法可能不同。 

    6. 對象的item不唯一(The object’s item is not unique

    在列表或樹對象中,可能有多個名字相同的item

    在這種情況下,可以指定item使用index(例如“#4”)。 

    7. 運行失敗(Test run failed

    測試運行失敗,還有可能是其它未知錯誤造成的。檢查出現(xiàn)錯誤時的腳本步驟。

    如果錯誤出現(xiàn)在執(zhí)行檢查點或輸出值時,請查閱關(guān)于檢查點與輸出值的幫助。

    如果錯誤出現(xiàn)在使用外部文件時,如數(shù)據(jù)庫表、數(shù)據(jù)庫、環(huán)境變量文件、或關(guān)聯(lián)倉庫文件等,則檢查是否可以正常獲取并使用文件,或這些文件的存儲格式是否正確。

    如果錯誤出現(xiàn)在完成某個腳本動作時,請參考QuickTest Object Model Reference幫助,以確認方法或函數(shù)的使用是否正確。

    如果錯誤出現(xiàn)在執(zhí)行一個標準的VBscrīpt語句時,參考Microsoft VBscrīpt Reference以獲得幫助。

    posted on 2008-02-15 14:13 Cinderella 閱讀(1910) 評論(0)  編輯  收藏 所屬分類: 功能測試他山之玉
     
    Copyright © Cinderella Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 久久免费精彩视频| 久久亚洲AV成人无码国产电影| 免费看一级一级人妻片| 青青青青青青久久久免费观看| 亚洲国产精品综合久久久| 天天影视色香欲综合免费| 亚洲综合小说久久另类区| 91短视频在线免费观看| 亚洲综合丁香婷婷六月香| 亚洲国产精品一区二区三区久久| 亚洲精品无码中文久久字幕| 巨胸喷奶水视频www网免费| 亚洲乱色熟女一区二区三区蜜臀| 天天操夜夜操免费视频| 国产av无码专区亚洲av毛片搜| 日韩亚洲精品福利| 亚洲最新中文字幕| 99视频全部免费精品全部四虎| 亚洲国产成人精品无码区在线网站| 免费av欧美国产在钱| 亚洲成a人无码亚洲成www牛牛| 99久久免费精品视频| 亚洲国产中文在线二区三区免| 久久天天躁狠狠躁夜夜免费观看| 亚洲免费综合色在线视频| 国产一级一片免费播放| 成全视成人免费观看在线看| 亚洲五月激情综合图片区| a毛片基地免费全部视频| 精品在线视频免费| 久久亚洲精品中文字幕无码| 国产免费女女脚奴视频网| 相泽南亚洲一区二区在线播放| 亚洲春色在线视频| 毛片在线免费视频| 国产日韩久久免费影院| 亚洲精品资源在线| 亚洲精品一级无码鲁丝片| 老湿机一区午夜精品免费福利| 亚洲精品蜜桃久久久久久| 扒开双腿猛进入爽爽免费视频 |