【zz】QTP一些宝贵的总结(下

上一篇 / 下一篇  2010-08-02 16:21:21 / 个人分类:QTP

第三部分

  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.activeconnection="DRIVER={Oracle in OraHome92};SERVER=HKORACLE;UID=USER22;PWD=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([start, ]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:"&parameter("input"))
msgbox("Action1 Output:"&parameter("output"))

  3:Action 2 的脚本:

RunAction"Action1",oneIteration,"Action2Input",action2
msgbox("OutputinAction2:"&action2)

  我们不难发现在QTP的Action之间关系

  作为被调用Action1,都是使用parameter("参数名")来使用的。

  作为调用Action1的Action2而言,input参数是可以往被调用Action1的操作输入的参数。Output的参数是从被调用的Action1返回的值。

 25、关于datatable和Sheet例子

datatable.AddSheet("husheet") 'datatable添加一个sheet
datatable.ImportSheet "c:\test.xls","testsheet","husheet" '从外部导入一EXCEl为test.xls
Dim i,RowCount '定义两个变量
i=0
RowCount=datatable.GetSheet("husheet").GetRowCount '设置RowCount等于51sheet中的行数。
msgbox RowCount
Do while i<rowcount
i=i+1 '第一次进入循环,执行这句后,i=1
'datatable.getsheet("51sheet").setcurrentrow(i) 这句话被我注释掉了,正确的写法应该是下面这样,分开写。
datatable.getsheet("husheet")
datatable.setcurrentrow(i)
'执行过上面两句后,CurrentRow是第一行。
tempData=DataTable.GetSheet("husheet").GetParameter("Name").Value
'现在,我们调用msgbox看看下面得到的是什么值?每次循环都能得到每行的值,下次循环得到的是第二行
msgbox "GetParameter-Name:"&tempData '这里弹出我们要看的值。
'下面我们用另外一种方法来得到。
msgbox "GetParameter-i:"&DataTable.GetSheet("husheet").GetParameter(1).Value '这里我用GetParameter(1)去得到sheet中第一列的值。
loop


TAG: QTP 自动化测试

一心如芷水的个人空间 引用 删除 一心如芷水   /   2010-11-16 21:02:23
我QTP装坏了,后来又装了好几次都打不开,怎么办啊?
 

评分:0

我来说两句

Open Toolbar