利用QTP調用外部VBS方法讀取指定Excel數據的方法

      51測試論壇,已經註冊有一段時間,一直想寫點什麼,耐於時間限制,一直沒寫什麼個人的一些小方法,今天剛好有時間,機不可失!!!

        最近剛剛有在忙一個自動化的項目,本想利用selenium進行自動化腳本的編寫,怎奈產品屬於彈出框一類的東西,無法進行元素定位,就用了QTP進行自動化腳本的元素定位,腳本編寫。並對腳本進行調試。爲了實現數據和方法分離,便於後期維護和管理,需要用到Excel與腳本進行數據交互,原打算用數據庫實現的,可惜小編能力有限(數據庫沒研究好,只是一些基本的操作),沒能去做,在此就用了Excel進行數據的存取。

        前期規劃,Excel只取兩列作爲數據存取列,一列用於數據的表示,作爲想要獲取的數據的數據引導,在方法中可以調用數據標識列中的名稱進行想要獲取數據的唯一引導。

        具體代碼實現,可見下方:

'輸入:
'    sFileName:Excel  文件
'    sSheetName: 表單名稱
'    lookupstr:尋找的數據
'返回:
'    包含Excel 數據的數組
Function ReadFile(sFileName,sSheetName)
 Dim oExcelapp
 Dim oExcel
 Dim oSheet
' Dim oRange
' Dim arrRange
 On Error resume next
  '創建EXCEL 應用程序對象
  Set oExcelapp=CreateObject("Excel.Application")
  oExcelapp.Visible = True
  If err.number <>0 Then
   msgbox "未能初始化Excel"&vbCrLf&_
          "請確保Excel已安裝",  vbcritical
   Exit function
  End If
 On error goto 0
 On Error resume next
  '打開Excel文件
  set oExcel=oExcelapp.Workbooks.Open(sFileName)
  oExcel.Worksheets(sSheetName).Activate
  If err.number <>0 Then
   msgbox "未能加載Excel文件"&vbCrLf&_
          "請確保Excel文件路徑正確或格式正確",  vbcritical
   Exit function
  End If
  On error goto 0
  '獲取表的使用範圍
  'Set oSheet=oExcel.Worksheets(sSheetName).UsedRange
  Set oSheet=oExcel.Worksheets(sSheetName).UsedRange
  Set oRange=oSheet.Range("A1:Z200")
  arrRange=oRange.value
  oExcelapp.Workbooks.Close
  Window("text:=Microsoft Excel").Close
  ReadFile=arrRange
  
  '無用語句
  'Set oSheet=oExcel.Worksheets(sSheetName)
  'For i=1 to 100
   'If  oSheet.cell(i,1).value= lookupstr Then
    'ReadFile=oSheet.cell(i,2).value
    'Exit function
   'End If
  'Next
  '關閉工作薄
  'oExcelapp.Workbooks.Item(1).Close
  '退出Excel
  'oExcelapp.Quit
  'Set oExcelapp=nothing
End Function
'指定參數取用
'輸入:
'    ObjName:測試對象名稱
' 返回:測試對象名稱對應的字符串
Function GetTestObject(objName)
 Dim objArray
 objArray=ReadFile("D:\new.xls","sheet1")
 For i=1 to UBound(objArray,1)
   If   objArray(i,1)=objName Then
    GetTestObject=objArray(i,2)
    Exit function
   End If
 Next
End Function

以上代碼,細心的朋友可能會發現,代碼存在一點瑕疵,就是每次調用函數GetTestObject都會對Excel進行讀取,影響系統速度,可以將方法進行拆分,實現代碼優化!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章