QTP實(shí)用函數(包括WEBTABLE等)
自動(dòng)化測試 2009-11-17 15:57 閱讀16 評論0 字號: 大大 中中 小小 DTParameter對象指的是運行時(shí)DataTable Sheet中的列對象。
注意:所有應用于DTParameter對象的方法僅適用于run-time DataTable對象。所有對run-time DataTable對象的改變只影響測試結果,不影響design-time Data Table。
1. Property
Name
描述
返回run-time Data Table的列名。
語(yǔ)法
DTParameter.Name
示例
下面的例子使用“Name”方法返回run-time Data Table中新創(chuàng )建的列的名稱(chēng),并將列名寫(xiě)入Report。
Dim paramname
paramname = DataTable.LocalSheet.AddParameter("Food", "pizza").Name
Reporter.ReportEvent 1, "The New Parameter name is", paramname
RawValue
描述
獲取當前行指定列所對應的單元格的原始數據。原始數據是尚未計算處理過(guò)的數據,如單元格中的公式內容等。
語(yǔ)法
DTParameter.RawValue
本語(yǔ)法與DataTable.RawValueParameterID[,SheetID]用途是一樣的,但是使用方法不同。
示例
下面的例子使用RawValue屬性來(lái)獲取run-time Data Table的“ActionA”表“Date”列的當前行所對應的單元格中的公式。本例中的返回值應該是“=Now()“。
FormulaVal=DataTable.GetSheet("ActionA").GetParameter("Date").RawValue
Value
描述
這個(gè)屬性是列對象的默認屬性。獲取或設置列的當前行所對應的單元格的數據。
注意:這個(gè)方法返回的數據是計算后的數據。假如單元格中包括公式,則這個(gè)方法返回True或False。
語(yǔ)法
獲取單元格數據:
DTParameter.Value or DTParameter
設置單元格數據:
DTParameter.Value=newvalueor DTParameter=newvalue
示例
下面的例子使用Value來(lái)設置Sheet“ActionA”的“Destination”列的當前行所對應的單元格的數據。
DataTable.GetSheet("ActionA").GetParameter("Destination").Value="New York"
注意:可以省略本語(yǔ)句中的“Value”,因為Value是DTParameter的默認屬性。
ValueByRow
描述
獲取指定列指定行所對應的單元格的數據。
語(yǔ)法
DTParameter.ValueByRow(RowNum)
Argument Type Descrīption
RowNum Number 指定行號。行號從1開(kāi)始。
示例
下面的例子使用“ValueByRow”來(lái)獲得表“ActionA”的“Destination”列的第4行數據。
DataTable.GetSheet("ActionA").GetParameter("Destination").ValueByRow(4)
1.GetCellData函數
作用:獲取單元格的值
例: rowCount = Browser("xxx ").Page("xxx ").Frame("xxx").WebTable("xxx").RowCount
For counter = 1 To rowCount
text = Browser("xxx").Page("xxx").Frame("xxx").WebTable("xxx").GetCellData(counter,1)
If (text = "xxx") Then
counter = counter - 1
selectNO = "#" & counter
Browser("xxx").Page("xxx").Frame("xxx").WebRadioGroup("xxx").Select selectNO
Exit For
End If
Next
2.把值插入datatable里
例: datatable.setcurrentrow(i)
datatable.value("name","Global")="name"
datatable.value("passwd","Global")="passwd"
3.用代碼來(lái)啟動(dòng)瀏覽器
Browser1 = "IE"
StartURL = "www.51testing.com"
IF Browser1 = "IE" THEN
set IE = CreateObject("InternetExplorer.Application")
IE.Visible = true
IE.Navigate StartURL
END IF
4.ExecuteFile函數
作用:ExecuteFile 可以直接執行vbs文件,而不需要將其導入resource中
ExecuteFile FileName
說(shuō)明:where FileName is the absolute or relative path of your VBscrīpt file.
例:ExecuteFile("F:"test.vbs")
5.Strcomp函數
作用:比較文本
例:dim strtext1,strtext2,str ,str1,comp1
strtext1 = "xxx"
strtext2 = "xxx"
str = VbWindow("xxx").VbWindow("xxx").VbLabe1("xxx").GetTOProperty("text")
str1= VbWindow("xxx").VbWindow("xxx").VbLabel("xxx").GetTOProperty("text")
comp1=strcomp(strtext1,str,0)
If comp=0 Then
msgbox “這兩個(gè)串相等”
else
msgbox str
End If
6.CaptureBitmap
作用:捕獲屏幕
7. GetROProperty
作用:取對象屬性值
例:VbWindow("xxx").VbWindow("xxx").VbWindow("xxx").ActiveX("xxx").GetROProperty("TextMatrix(1,0)")
8.ExitAction - 退出當前操作,無(wú)論其循環(huán)屬性如何。
ExitActionIteration - 退出操作的當前循環(huán)。
ExitRun - 退出測試,無(wú)論其循環(huán)屬性如何。
ExitGlobalIteration - 退出當前全局循環(huán)。
9.如何使用Excel對象處理數據?
Dim xl
打開(kāi)excel文件
Function OpenExcelFile(strFilePath)
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open strFilePath
End Function
獲得指定單元格數據
Function GetCellData(strSheet,rwIndex,colIndex)
GetCellData = xl.WorkSheets(strSheet).Cells(rwIndex,colIndex)
End Function
填充單元格數據
Function PutCellData(strSheet,rwIndex,colIndex,varData)
xl.WorkSheets(strSheet).Cells(rwIndex,colIndex) = varData
End Function
保存并推出
Function SaveAndQuit()
xl.Activeworkbook.save
xl.Quit
Set xl = nothing
End Function
10.連接sql數據庫
例im res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="rovider=SQLOLEDB.1assword=111111ersist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142" ?。н@句話(huà)是連接數據庫的數據源,要做修改
Cmd.CommandType = 1
sql="selec t * from 表 where name=username"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
11 檢查頁(yè)面是否存在 對象exist可以檢查某一個(gè)頁(yè)面是否存在。 代碼: if Browser("…").Page(“…").Exist then ‘在運行結果中顯示的報告, “micPass”的狀態(tài)是通過(guò), micFail是不通過(guò) reporter.ReportEvent micPass ,“頁(yè)面存在“,”通過(guò)“ else reporter.ReportEvent micFail ,"頁(yè)面不存在“,"不通過(guò)" end if
12 防止程序中斷的方法 在回放腳本的時(shí)候,有時(shí)因為錯誤導致運行的腳本中斷,不能自動(dòng)運行。為了能達到真正無(wú)人職守的狀態(tài)可以在腳本的最前面加上如下的代碼: On error resume next ‘遇到錯誤返回到腳本的下一行繼續執行。 On error goto 0 ‘錯誤處理的控制權,平時(shí)是由QTP控制的(這個(gè)叫默認的),當有on error resume next 時(shí),是交給on error處理,當on error goto 0時(shí),就換給QTP
13 同步點(diǎn)的設定 等待某一對象出現后繼續執行,為了防止qtp找不到對象而設定同步點(diǎn)。有2種方法:1種是用wait加等待的時(shí)間,如wait 5(qtp等待5秒鐘后繼續執行)。另一種方法是等待要執行對象的出現,如果出現就繼續執行,否則一直等待,代碼如下: y=......waitproperty("visible",true,10000) If y=true then ‘執行下一條語(yǔ)句 else ’對象不出現就一直等待,直到過(guò)了10000秒后程序找不到對象報錯 End if
14 截屏 在優(yōu)化腳本時(shí),如果想查看某一頁(yè)面在執行后的頁(yè)面效果,可以采取截屏的辦法截取當前的操作頁(yè)面并保存到本地。代碼: desktop. capturebitmap “c:"***.bmp“,ture ’在腳本中想要查看的一行插入,運行后圖片保存到設置的路徑下
15 導入execl文件并參數化數據方法 Qtp自帶了datatable表,可以把要參數化的數據寫(xiě)在里面,但這樣寫(xiě)腳本和數據不能分離,后期不好維護腳本?,F在采用從外部導入execl文件的方法導入數據。代碼如下: datatable.ImportSheet “D:"..."data.xls”,“sheet1”,“global“ ‘第一個(gè)參數是要導入文件的路徑,第二個(gè)是execl的第一個(gè)表格,第三個(gè)參數是在execl的全局范圍內查找 另外datatable對象還有很多操作,比如:獲取表中字段的行數,插入表數據,刪除數據等,下面是獲取表中數據的代碼:datatable("A","dtglobalsheet)
16 為描述性編程自動(dòng)創(chuàng )建注釋 當希望在每一個(gè)新建action時(shí)都增加一些頭部說(shuō)明,比如作者、創(chuàng )建日期、說(shuō)明等信息,那么用action template 來(lái)實(shí)現最簡(jiǎn)單快捷。 方法:用記事本等文本編輯器,輸入如下類(lèi)似的內容: 'Company:東方般若 'Date: Date 然后將文件保存為ActionTemplate.mst,并存放到QTP安裝目錄下的dat目錄。
17 導入vbs文件 想要實(shí)現腳本的函數化,并更好的維護它,可以把一些公用的函數寫(xiě)到vbs里面,用qtp來(lái)調用它。 實(shí)現調用vbs的方法有2種: 1.函數executefile加vbs文件的路徑 executefile “c:"..."funcation.vbs” 2.設置QTP test/settings/resources/+函數目錄
18 時(shí)間差函數 統計兩個(gè)日期時(shí)間段之間的間隔,還有多少小時(shí) Dim timediff timediff=datediff(“H”,now,“2008-8-8” ) Print timediff | |