Ready Test? Go, Go, Go !!!
           

          關(guān)注測(cè)試,也關(guān)注成長(zhǎng)

          公告
          • 關(guān)注軟件測(cè)試自動(dòng)化,性能測(cè)試。
            目前負(fù)責(zé)醫(yī)療軟件功能測(cè)試以及
            測(cè)試過程改進(jìn)

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

          導(dǎo)航

          常用鏈接

          留言簿(17)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

           


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

          1. 不能識(shí)別對(duì)象(Cannot identify object

          出現(xiàn)了這個(gè)錯(cuò)誤時(shí),就表示當(dāng)前被測(cè)程序的窗口中沒有符合條件的對(duì)象。

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

          >>> 對(duì)象此時(shí)在程序中沒有顯示或不存在。

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

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

          1.1 如何去識(shí)別對(duì)象描述(Identifying Test Object Description Problems

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

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

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

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

          如果是,請(qǐng)參考1.4

          如果否,請(qǐng)參考1.5 

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

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

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

          解決方法:見1.2.1

          >>> 對(duì)象還沒有裝載。

          解決方法:見1.2.2

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

          解決方法:見1.2.3

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

          解決方法:見1.2.3

          1.2.1 解決對(duì)象不再存在的問題

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

          1.2.2 解決對(duì)象裝載超時(shí)的問題

          如果對(duì)象丟失的原因是因?yàn)闆]有足夠的時(shí)間裝載,嘗試以下解決方案:

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

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

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

          如果是因?yàn)榇蜷_了錯(cuò)誤的頁面(或窗口)導(dǎo)致對(duì)象丟失問題,或因?yàn)榍耙徊襟E執(zhí)行措誤導(dǎo)致對(duì)象丟失問題,則請(qǐng)按以下方法檢查原因:

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

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

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

          根據(jù)以下的步驟比較測(cè)試對(duì)象與Run-time對(duì)象的屬性值:

          1) 進(jìn)入Obecjt Repository窗口(Resources>Object Repository),選擇對(duì)象。

          2) 用筆記下對(duì)象的class以及它的各個(gè)屬性及屬性值。

          3) 打開被測(cè)程序,并打開包含被測(cè)對(duì)象的頁面或窗口。

          4) QTP中選擇菜單Tools>Object Spy或點(diǎn)擊Object Spy按鈕,打開Object Spy對(duì)話框。

          5) 選擇“Test Object Properties”選項(xiàng)。

          6) 點(diǎn)擊右上角的按鈕(帶有手圖標(biāo)的),這時(shí)QTP窗口以及Object Spy對(duì)話框都被最小化。

          7) 在程序頁面(或窗口)中點(diǎn)擊目標(biāo)對(duì)象,恢復(fù)Object Spy對(duì)話框,并在對(duì)話框中顯示對(duì)象及其父對(duì)象(以樹的形式顯示),并在Properties頁簽中顯示當(dāng)前對(duì)象的屬性及屬性值。

          8) 這時(shí)Object Spy對(duì)話框的Properties頁簽中顯示Run-time對(duì)象的所有屬性,在此查看對(duì)象的class,以及它的屬性及屬性值,并將它與第2步中記下的內(nèi)容進(jìn)行比較。 

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

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

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

          如果是,則參考1.6

          如果否,則參考1.7 

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

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

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

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

          >>>重新錄制對(duì)象,比較新舊對(duì)象的父對(duì)象。

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

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

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

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

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

          >>>修復(fù)存在問題的父對(duì)象的描述。方法見1.4

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

          舉例:1.8.1 

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

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

          1.7 解決單個(gè)對(duì)象的描述問題(Solving Individual Test Object Description Problems

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

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

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

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

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

          >>>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.

          >>>如果在錄制過程中對(duì)象是唯一的,但現(xiàn)在程序中出現(xiàn)了兩個(gè)或多個(gè)描述相同的對(duì)象,但是它們?cè)陧撁妫ɑ虼翱冢┲械奈恢貌幌嗤瑒t應(yīng)在Object PropertiesObject Repository窗口中,向?qū)ο竺枋鲋刑砑右粋€(gè)ordinal identifierindexlocation)。

           

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

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

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

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

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

          3) 點(diǎn)擊Record按鈕,或選擇Automation>Record

          4) 點(diǎn)擊(或操作)頁面或窗口中的目標(biāo)對(duì)象。

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

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

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

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

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

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

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

          舉例:參見1.8.1

          1.8.1 舉例

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

          MyCompanyBrowser

              MyCompanyPage

                  Main(Frame)

                       Poster(image)

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

          MyCompanyBrowser

              MyCompanyPage

                   Poster(image)

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

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

              修復(fù)這個(gè)問題,可以在腳本步驟中將舊的對(duì)象替換為新的對(duì)象。

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

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

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

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

              假設(shè)在運(yùn)行下面腳本時(shí),你遇到了“Cannot identify Object”錯(cuò)誤信息(但是可以確定對(duì)象倉庫中Link對(duì)象的描述與當(dāng)前程序中對(duì)象的描述是完全一致的):

          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

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

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

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

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

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

          請(qǐng)確定是只有個(gè)別對(duì)象存在此問題,還是此類對(duì)象的所有對(duì)象(或部分對(duì)象)存在此問題。

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

          如果是,參考2.1

          如果否,參考2.2 

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

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

           

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

          查看當(dāng)前對(duì)象的描述,并償試在程序中找到其它具有相同描述的對(duì)象并查看它們的描述。

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

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

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

          識(shí)別對(duì)象時(shí),會(huì)先識(shí)別它的父對(duì)象是否正確。如果遇到“Parent not found”的錯(cuò)誤信息,請(qǐng)償試以下解決方法:

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

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

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

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

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

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

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

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

          5. 不能識(shí)別itemCannot identify item

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

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

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

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

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

          在列表或樹對(duì)象中,可能有多個(gè)名字相同的item

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

          7. 運(yùn)行失敗(Test run failed

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

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

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

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

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

          posted on 2008-02-15 14:13 Cinderella 閱讀(1925) 評(píng)論(0)  編輯  收藏 所屬分類: 功能測(cè)試他山之玉
           
          Copyright © Cinderella Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 阿瓦提县| 广饶县| 新源县| 侯马市| 云梦县| 钟山县| 神木县| 垣曲县| 抚宁县| 三明市| 博客| 新和县| 宜兰县| 大城县| 新巴尔虎左旗| 富民县| 道真| 乌兰浩特市| 方山县| 左权县| 武邑县| 伊宁县| 安乡县| 太湖县| 宿松县| 丘北县| 平塘县| 抚顺市| 洛隆县| 安丘市| 高碑店市| 潍坊市| 涞水县| 璧山县| 静宁县| 灌南县| 新津县| 敦煌市| 车致| 临西县| 应用必备|