qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          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
            2.在QTP的File --> Settings --> Resources中引用此函數(shù)庫(kù)


            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

          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 沙坪坝区| 阿鲁科尔沁旗| 儋州市| 漯河市| 遵化市| 呈贡县| 桂平市| 奈曼旗| 阿城市| 浠水县| 潮安县| 平南县| 高唐县| 昭觉县| 英德市| 河东区| 北辰区| 开化县| 吴堡县| 彝良县| 仙桃市| 阳城县| 本溪| 东莞市| 延庆县| 庆阳市| 普安县| 辉县市| 油尖旺区| 吴川市| 温州市| 衡山县| 贺州市| 庆云县| 曲麻莱县| 凯里市| 甘泉县| 岳阳市| 宝丰县| 辽阳县| 安庆市|