QTP使用总结2(转帖)
15、Do while方法Dim i,RowCount '定义两个变量
i=0
RowCount=DataTable.GetSheet("Action1").GetRowCount '设置RowCount等于Action1中的行数。
msgbox RowCount
Do while i<rowcount
i=i+1 '第一次进入循环,执行这句后,i=1
'DataTable.GetSheet("Action1").SetCurrentRow(i) 这句话被我注释掉了,正确的写法应该是下面这样,分开写。
datatable.getsheet("Action1")
datatable.setcurrentrow(i)
----xunhuanti----
loop
16、取对象属性(Property)值
Dim usname
usname =Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").WebEdit("addressVO.name").GetRoProperty("Value") '获取对象属性(Property)值,如Property为Value
MsgBox usname
17、取得要删除的id,并删除
'url在查看该新增记录的信息页面对象中取得,所以录制的时候,登记,查看(修改),删除
Dim strUserid,id,strId
id=Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_4").GetROProperty("url") '在url这个属性值中存在我需要删除记录的ID信息
strId=Mid (id,instr(60,id,"=")+1) '这一步是把需要的id值取了出来,例如:strId=Mid (id,instr(1,id,"=")+1)
strUserid =strId 'strUserid是我要删除的记录前的复选框属性值当中的ID信息
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebCheckBox("value:="&strUserid).Set "ON" 这样就把想删除的记录选中了。
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebButton("删除").Click '这样就删除掉啦,呵呵
17.2通过数据库取得id值,并赋值进行删除
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").WebEdit("addressVO.name").Set DataTable("p_Text", dtGlobalSheet)
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").WebEdit("addressVO.address").Set DataTable("p_Text1", dtGlobalSheet)
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").WebEdit("addressVO.unitTel").Set DataTable("p_Text2", dtGlobalSheet)
Dim xname,address,unitTel
xname=DataTable("p_Text", dtGlobalSheet) '从datatable中取值
address=DataTable("p_Text1", dtGlobalSheet)
unitTel=DataTable("p_Text2", dtGlobalSheet)
Dim res,cmd,sql
Set res=createobject("adodb.recordset")
Set cmd=createobject("adodb.command")
Cmd.activec./images/smilies/default/titter.gif" border=0 smilieid="9">WD=ZJLH;DBQ=HKORACLE;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=Me;CSR=F;FWC=F;FBS=60000;TLO=O;"
Cmd.CommandType = 1
'sql="select addressid from address_list t where name ='"&xname&"'"
'sql="select addressid from address_list t where name ='"&xname&"'
sql="select addressid from address_list t where name ='"&xname&"' and address='"&address&"' and unitTel='"&unitTel&"'"
Cmd.CommandText = sql
Set res = Cmd.Execute()
MsgBox res(0) '打印res(0)
DataTable("addressid", dtGlobalSheet)=Cstr(res(0)) '输出值到datatable中
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebCheckBox("value:="&res(0)).Set "ON"
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
18、赋值语句有:
1:Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebCheckBox("value:="&strUserid).Set"ON"
2:Browser("湛江信息化测试登录").Page("湛江东兴石油企业有限公司办公自动化系统").Frame("mainFrame").WebCheckBox("value:="&res(0)).Set"ON"
3:Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebCheckBox("IDS").SetTOProperty"value",Cstr(res(0))'Cstr为转换成小数方法
4:Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebCheckBox("IDS").SetTOProperty"value",strUserid
19、取字符串方法:
1:instr方法
InStr(string1, string2[, compare])
这个函数需要的的参数是起始位置、主体字符串、要查找的字符串;Compare是可选参数。指定字符串比较。此compare参数是可以省略的,也可以是 0, 1或 2。
指定0(缺省)做二进制比较。指定1做不区分大小写的文本比较。例如我们要查找在字符串“abcdefg”中是否存在“cd”并返回其位置,则使用下面的语句就可以实现:
pos=InStr(1,"abcdefg","cd") 则pos会返回3表示查找到并且位置为第三个字符开始。这就是“查找”的实现,而“查找下一个”功能的实现就是把当前位置作为起始位置继续查找。
或者:id=87444=ddddd
instr(1,id,"="),从位置为第一个字符起,查找=字符
2:mid方法
Mid(string, start[, length])
如:MyVar =Mid("VB Script. is fun!", 4, 6) 'MyVar contains "Script".从第4位字符开始,后面6位字符
例如:MyVar2=Mid("VB Script. is fun",4) 'MyVar contains "Script. is fun!"
'从第4位字符开始,后面的字符
3:Right方法
Right(string, length)
例子:
Dim AnyString, MyStr
AnyString = "Hello World" ' Define string.
MyStr = Right(AnyString, 1) ' Returns "d".
MyStr = Right(AnyString, 6) ' Returns " World".
MyStr = Right(AnyString, 20) ' Returns "Hello World".
20、datatable方法
1:AddSheet方法
DataTable.AddSheet(SheetName)
如:Variable=DataTable.AddSheet ("MySheet").AddParameter("Time", "8:00")
在global中,添加sheet,并在sheet添加列和列值
2:DeleteSheet方法
DataTable.DeleteSheet SheetID
例如:DataTable.DeleteSheet "MySheet"
3:Export方法
DataTable.Export(FileName)
例如:DataTable.Export ("C:\flights.xls")
4:ExportSheet方法
DataTable.ExportSheet(FileName, DTSheet) 'DTSheet 为sheet的index
例如:DataTable.ExportSheet "C:\name.xls" ,1
5:GetCurrentRow
DataTable.GetCurrentRow
例子:row = DataTable.GetCurrentRow
Reporter.ReportEvent 1, "Row Number", row
6:GetRowCount
DataTable.GetRowCount
例子:
rowcount = DataTable.GetSheet("MySheet").GetRowCount
Reporter.ReportEvent 2, "There are " &rowcount, "rows in the data sheet."
7:GlobalSheet Property方法
DataTable.GlobalSheet
例如:DataTable.GlobalSheet.AddParameter "Time", "5:45"
8:Import方法
DataTable.Import(FileName)
例子:DataTable.Import ("C:\flights.xls")
9:ImportSheet方法
DataTable.ImportSheet(FileName, SheetSource, SheetDest)
例子:
DataTable.ImportSheet "C:\name.xls" ,1 ,"name"
'从name.xls导入sheet,index为1,sheet名称为:name
10:LocalSheet Property 方法
DataTable.LocalSheet
例子:DataTable.LocalSheet.AddParameter("Time", "5:45")
11:SetCurrentRow方法
DataTable.SetCurrentRow(RowNumber)
例子:DataTable.SetCurrentRow (2)
例子2:DataTable.SetCurrentRow (i)
12:SetNextRow方法
DataTable.SetNextRow
例子:
DataTable.SetNextRow
13:Value Property方法
1:DataTable.Value(ParameterID [, SheetID]) 或者 DataTable(ParameterID [, SheetID])
2:DataTable.Value(ParameterID [, SheetID])=NewValue
或者 DataTable(ParameterID [, SheetID]) =NewValue
例子1:DataTable.Value ("Destination", "ActionA")="New York"
例子2:DataTable("addressid", dtGlobalSheet)=Cstr(res(0))
'Cstr(res(0))为一变量,addressid为sheet一列名称
14:取datatable中某一行值
datatable.getsheet(“global”).getparameter("列名").valuebyrow(i)
如果想取第一行,就将i变为1
21、ReportEvent Method 方法
Reporter.ReportEvent EventStatus, ReportStepName, Details [, in]
'EventStatus状态:pass:0,失败:1,done:2,警告:3,
状态:0 or micPass,1 or micFail,2 or micDone,3 or micWarning:
ReportStepName为Name of the intended step in the report (object name)
例子1:
Reporter.ReportEvent micFail, "Custom Step", "The user-defined step failed."
例子2:
row = DataTable.GetCurrentRow
Reporter.ReportEvent 1, "Row Number", row
row为一变量
22、reusable action参数的传递方法1
注:action1和action2都是reusable action,在action3中调用action1和action2
1:action1中参数化,datatable参数名称为:p_Text,Global类型的
2:action2中,编写代码如下:
Dim name1
name1=DataTable.value("p_Text","Global")
Browser("测试登录").Page("办公自动化系统_2").Frame("mainFrame").Link("收文名称001").SetTOProperty "text",name1
//text为对象的属性
3:在action3中,直接调用action1和action2就可以。多个reusable也类似这么做。
23、action 参数传递方法2(没有验证过)
不知道你是不是想把Action2的一些值传递给Action3。
Action Param 既可以作输入也可以作输出,所以他们之间的参数传递是很简单的。
在Action1里面只要实现如下代码就可以了:
RunAction "Action2", oneIteration, InputParamToAction2, OutputParamFromAction2
RunAction "Action3", oneIteration, OutputParamFromAction2
上面的变量OutputParamFromAction2就同时作为Action2的输出和Action3的输入。
24、action 参数传递方法3(没有验证过)
Action级别的参数调用:
1: 设置参数
Action Properters >> Action Parameter
增加input的参数和output的参数
2: Action 1 的脚本:
parameter("output")="Action1 Output"
msgbox("Action1 Input:"¶meter("input"))
msgbox("Action1 Output:"¶meter("output"))
3:Action 2 的脚本:
RunAction"Action1",oneIteration,"Action2Input",action2
msgbox("OutputinAction2:"&action2)
我们不难发现在QTP的Action之间关系
作为被调用Action1,都是使用parameter("参数名")来使用的。
作为调用Action1的Action2而言,input参数是可以往被调用Action1的操作输入的参数。Output的参数是从被调用的Action1返回的值。
页:
[1]