QTP函数
上一篇 /
下一篇 2011-08-02 16:10:08
DTParameter对象指的是运行时DataTable Sheet中的列对象。
注意:所有应用于DTParameter对象的方法仅适用于run-time DataTable对象。所有对run-time DataTable对象的改变只影响测试结果,不影响design-time Data Table。
1. Property
Name
描述
返回run-time Data Table的列名。
语法
DTParameter.Name
示例
下面的例子使用“Name”方法返回run-time Data Table中新创建的列的名称,并将列名写入Report。
Dim paramname
paramname = DataTable.LocalSheet.AddParameter("Food", "pizza").Name
Reporter.ReportEvent 1, "The New Parameter name is", paramname
RawValue
描述
获取当前行指定列所对应的单元格的原始数据。原始数据是尚未计算处理过的数据,如单元格中的公式内容等。
语法
DTParameter.RawValue
本语法与DataTable.RawValueParameterID[,SheetID]用途是一样的,但是使用方法不同。
示例
下面的例子使用RawValue属性来获取run-time Data Table的“ActionA”表“Date”列的当前行所对应的单元格中的公式。本例中的返回值应该是“=Now()“。
FormulaVal=DataTable.GetSheet("ActionA").GetParameter("Date").RawValue
Value
描述
这个属性是列对象的默认属性。获取或设置列的当前行所对应的单元格的数据。
注意:这个方法返回的数据是计算后的数据。假如单元格中包括公式,则这个方法返回True或False。
语法
获取单元格数据:
DTParameter.Value or DTParameter
设置单元格数据:
DTParameter.Value=newvalueor DTParameter=newvalue
示例
下面的例子使用Value来设置Sheet“ActionA”的“Destination”列的当前行所对应的单元格的数据。
DataTable.GetSheet("ActionA").GetParameter("Destination").Value="New York"
注意:可以省略本语句中的“Value”,因为Value是DTParameter的默认属性。
ValueByRow
描述
获取指定列指定行所对应的单元格的数据。
语法
DTParameter.ValueByRow(RowNum)
Argument
| Type
| Descrīption
|
RowNum
| Number
| 指定行号。行号从1开始。
|
示例
下面的例子使用“ValueByRow”来获得表“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.用代码来启动浏览器
- 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
说明: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 “这两个串相等”
- else
- msgbox str
- End If
复制代码
6.CaptureBitmap
作用:捕获屏幕
7. GetROProperty
作用:取对象属性值
例:VbWindow("xxx").VbWindow("xxx").VbWindow("xxx").ActiveX("xxx").GetROProperty("TextMatrix(1,0)")
8.ExitAction - 退出当前操作,无论其循环属性如何。
ExitActionIteration - 退出操作的当前循环。
ExitRun - 退出测试,无论其循环属性如何。
ExitGlobalIteration - 退出当前全局循环。
9.如何使用Excel对象处理数据?
- Dim xl
- 打开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数据库
例:- Dim res,cmd,sql
- Set Res=createobject("adodb.recordset")
- Set Cmd=createobject("adodb.command")
- Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142" '这句话是连接数据库的数据源,要做修改
- 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 检查页面是否存在
对象exist可以检查某一个页面是否存在。
代码:
- if Browser("…").Page(“…").Exist then
- ‘在运行结果中显示的报告, “micPass”的状态是通过, micFail是不通过
- reporter.ReportEvent micPass ,“页面存在“,”通过“
- else
- reporter.ReportEvent micFail ,"页面不存在“,"不通过"
- end if
复制代码
12 防止程序中断的方法
在回放脚本的时候,有时因为错误导致运行的脚本中断,不能自动运行。为了能达到真正无人职守的状态可以在脚本的最前面加上如下的代码:
On error resume next ‘遇到错误返回到脚本的下一行继续执行。
On error goto 0 ‘错误处理的控制权,平时是由QTP控制的(这个叫默认的),当有on error resume next 时,是交给on error处理,当on error goto 0时,就换给QTP
13 同步点的设定
等待某一对象出现后继续执行,为了防止qtp找不到对象而设定同步点。有2种方法:1种是用wait加等待的时间,如wait 5(qtp等待5秒钟后继续执行)。另一种方法是等待要执行对象的出现,如果出现就继续执行,否则一直等待,代码如下:
y=......waitproperty("visible",true,10000)
If y=true then
‘执行下一条语句
else
’对象不出现就一直等待,直到过了10000秒后程序找不到对象报错
End if
14 截屏
在优化脚本时,如果想查看某一页面在执行后的页面效果,可以采取截屏的办法截取当前的操作页面并保存到本地。代码:
desktop. capturebitmap “c:"***.bmp“,ture ’在脚本中想要查看的一行插入,运行后图片保存到设置的路径下
15 导入execl文件并参数化数据方法
Qtp自带了datatable表,可以把要参数化的数据写在里面,但这样写脚本和数据不能分离,后期不好维护脚本。现在采用从外部导入execl文件的方法导入数据。代码如下:
datatable.ImportSheet “D:"..."data.xls”,“sheet1”,“global“
‘第一个参数是要导入文件的路径,第二个是execl的第一个表格,第三个参数是在execl的全局范围内查找
另外datatable对象还有很多操作,比如:获取表中字段的行数,插入表数据,删除数据等,下面是获取表中数据的代码:datatable("A","dtglobalsheet)
16 为描述性编程自动创建注释
当希望在每一个新建action时都增加一些头部说明,比如作者、创建日期、说明等信息,那么用action template 来实现最简单快捷。 方法:用记事本等文本编辑器,输入如下类似的内容: 'Company:东方般若 'Date: Date 然后将文件保存为ActionTemplate.mst,并存放到QTP安装目录下的dat目录。
17 导入vbs文件
想要实现脚本的函数化,并更好的维护它,可以把一些公用的函数写到vbs里面,用qtp来调用它。
实现调用vbs的方法有2种:
1.函数executefile加vbs文件的路径
executefile “c:"..."funcation.vbs”
2.设置QTP test/settings/resources/+函数目录
18 时间差函数
统计两个日期时间段之间的间隔,还有多少小时
Dim timediff
timediff=datediff(“H”,now,“2008-8-8” )
Print timediff
19 获取web下拉框中数据的行数和数据值
1.获取行数:首先将webtable添加到对象库中,查看对象库里有该webtable的属性后
count=Browser("…").Page("Page").Frame("…").WebTable("...").RowCount
Msgbox count ‘查看行数
2.获取数据值,
for i=1 to count
value=Browser("…").Page("Page").Frame("…").WebTable("...").getcelldata(i,1)
msgbox value
next
获取到列表中的数值后,qtp的对象库中没有这个WebElement的对象,一般采用描述性编程的方法获取对象,比如:用getcelldata获取的表中数据的innertext属性是“普通岗”,那么就可以用如下代码:
for i=1 to count
value=Browser("…").Page("Page").Frame("…").WebTable("...").getcelldata(i,1)
Browser(“…”).Page(
收藏
举报
TAG: