QTP中使用自定義vbs類(lèi)
發(fā)現(xiàn)直接在resource中加載含有calss的vbs文件,QTP無(wú)法識(shí)別類(lèi),導(dǎo)致腳本中無(wú)法new類(lèi)對(duì)象。
解決辦法有四種:
1、直接在action腳本中定義類(lèi),然后action中任何地方都可以實(shí)例化類(lèi)
2、用executefile引入類(lèi)定義文件,然后action中任何地方都可以實(shí)例化類(lèi)
3、在function lib中定義類(lèi),并實(shí)例化類(lèi),然后再action中直接使用類(lèi)實(shí)例
4、在function lib中定義類(lèi),并定義一個(gè)實(shí)例化類(lèi)的函數(shù),然后再action中調(diào)用該函數(shù)對(duì)類(lèi)進(jìn)行實(shí)例化
補(bǔ)充:第四種實(shí)現(xiàn)方法如下:
把vbs文件加載到Resources中后,我用以下方法繞過(guò)QTP不識(shí)別導(dǎo)入的vbs文件中的類(lèi)的問(wèn)題。
在放置class(類(lèi))的vbs文件中,放置以下函數(shù):
------------------------------------------------------------------------------------------------------------------ ' '* 功能:由于QTP不識(shí)別導(dǎo)入的VBS文件中的類(lèi),因此定義此函數(shù)來(lái)返回相應(yīng)的對(duì)象 '* 輸入?yún)?shù):className :要建立對(duì)象的類(lèi)名 '* 返回值:返回類(lèi)對(duì)象 '* 編寫(xiě)人: chenyb '* 編寫(xiě)日期:2008-10-16 '* 其他說(shuō)明:以下只是方法,根據(jù)需要再擴(kuò)展 ' Public Function newClass(className) Dim strSentence,obj strSentence = strSentence & "set obj = New " & className '創(chuàng)建對(duì)象 Execute strSentence '執(zhí)行字符串語(yǔ)句 Set newClass = obj '返回對(duì)象 End Function |
參考QTP下vbs偽類(lèi)構(gòu)造器的設(shè)計(jì):
有一段時(shí)間沒(méi)上博客了,不過(guò)博客還是不能拖呢,每每在我快要放棄的時(shí)候總會(huì)有許多網(wǎng)友在告訴我該更新了,我們等著你的講座,雖然講座寫(xiě)到后來(lái)已經(jīng)有些疲倦,但有了你們的支持,我還會(huì)一直繼續(xù),講座還會(huì)一直繼續(xù)。
進(jìn)入正題,今天要講的內(nèi)容與VBS類(lèi)關(guān)聯(lián)比較密切,在看本次講座之前建議大家首先熟悉一下類(lèi)的組成, 這樣對(duì)于學(xué)習(xí)本次講座內(nèi)容會(huì)比較輕松。如果平時(shí)在自動(dòng)化測(cè)試過(guò)程中經(jīng)常使用類(lèi)的朋友應(yīng)該會(huì)清楚,在Resources中引用帶有類(lèi)的vbs函數(shù)庫(kù)之后,是不可以直接在QTP腳本編輯器中直接進(jìn)行類(lèi)的初始化的。具體我們來(lái)看下例子。
1.首先我們編寫(xiě)一個(gè)vbs函數(shù)庫(kù),腳本如下:
Class ExcelClass Sub t1() MsgBox "t1" End Sub Sub t2() MsgBox "t2" End Sub End Class |

3.我們知道創(chuàng)建一個(gè)類(lèi)的實(shí)例方法是通過(guò)以下方式來(lái)進(jìn)行的
Set 實(shí)例名 = New 類(lèi)名
此時(shí)如果直接在QTP中進(jìn)行創(chuàng)建類(lèi)的話(huà)會(huì)直接報(bào)錯(cuò):
Set eom = new ExcelClass
eom.t1
4.那么對(duì)于以上這種情況,我們一般所采用的方式是在函數(shù)庫(kù)中建立一個(gè)函數(shù),讓此函數(shù)返回這個(gè)類(lèi)的實(shí)例化。
Class ExcelClass Sub t1() MsgBox "t1" End Sub Sub t2() MsgBox "t2" End Sub End Class '定義ExcelClass的無(wú)參構(gòu)造 Function NewExcelClass Set NewExcelClass = new ExcelClass End Function |
5. 接著在QTP腳本編輯區(qū)中直接把這個(gè)函數(shù)返回就可以使用了
Set eom = NewExcelClass eom.t1 |
思考:
是否可以按照如圖所示的方式把New ExcelClass作為函數(shù)名進(jìn)行編寫(xiě)呢,這樣我們就可以直接在QTP腳本區(qū)中進(jìn)行new一個(gè)類(lèi)出來(lái),是不是更加直觀呢,這一塊我們會(huì)留到下一講進(jìn)行講解。
總結(jié):
這一講內(nèi)容比較基礎(chǔ),主要還是為了照顧一些新人,下一講我們會(huì)繼續(xù)深入講解類(lèi)構(gòu)造器,主要會(huì)涉及到帶參構(gòu)造器的設(shè)計(jì)模式,請(qǐng)大家期待。
posted on 2014-01-20 10:10 順其自然EVO 閱讀(449) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): qtp