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

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