您的位置:首页 > 编程语言 > Qt开发

一位高人的QTP学习笔记(转)

2009-05-11 11:10 453 查看
1、连接数据库查询例子,无参数化

//查询收文操作,通过数据库查询记录数是否正确

//1、输出记录数值,例如78条 2、获取输出的记录数值 3、连接数据库,查询记录数

4、输出记录数值和从数据库中查询记录数值,相比较,相等则成功,不等则失败

Browser("湛江信息化测试登录").Page("湛江东兴石油企业有限公司办公自动化系统").Frame("mainFrame").Output CheckPoint("78")

Dim mm

'mm=DataTable.GlobalSheet.GetParameter("mainFrameOutput_Text_out").Value

//注释,获取datatable值与DataTable("mainFrameOutput_Text_out", dtGlobalSheet)一致

mm=DataTable("mainFrameOutput_Text_out", dtGlobalSheet)

MsgBox mm

Dim res,cmd,sql

Set res=createobject("adodb.recordset")

Set cmd=createobject("adodb.command")

Cmd.activec

Cmd.CommandType = 1

sql="select count(*) from oa_receivebumf where BUMFNAMElike '%收文测试%'"

'sql="select count(*) from oa_receivebumf where BUMFNAME='"&nn&"'"

//注释,sql语句,等于时sql语句

// sql="select count(*) from oa_receivebumf where BUMFNAME like '%nn%'" //like时sql语句

Cmd.CommandText = sql

Set res = Cmd.Execute()

//msgbox res("name")

MsgBox res(0)

If Cstr(res(0)) = Cstr(mm)Then

Reporter.ReportEvent micPass, "test", "查询成功"

else

Reporter.ReportEvent micfail, "test", "查询失败"

End If

Set res = nothing

Set cmd.ActiveConnection = nothing

Set Cmd= nothing

2、登记用户,查看是否登记成功

//登记用户,查询用户是否存在在数据库中

1、参数化2、取参数化值 3、查询语句中,赋值给查询条件

4、从数据库中查询出用户名,与参数化中值做比较

脚本如下:

Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").WebEdit("addressVO.name").Set DataTable("p_Text", dtGlobalSheet)

Dim xname

xname=DataTable("p_Text", dtGlobalSheet)

MsgBox xname

Dim res,cmd,sql

Set res=createobject("adodb.recordset")

Set cmd=createobject("adodb.command")

Cmd.activec

Cmd.CommandType = 1

sql="select name from address_list t where name ='"&xname&"'"

Cmd.CommandText = sql

Set res = Cmd.Execute()

'msgbox res("name")

MsgBox res(0)

Set res = nothing

Set cmd.ActiveConnection = nothing

Set Cmd= nothing

第二部分

1、Datatable方法GetRowCount

DataTable.GetSheet("Action1").GetRowCount //获取总行数

使用如:

CountNum=DataTable.GetSheet("Action1").GetRowCount

2、Datatable方法SetNextRow

DataTable.GetSheet("Action1").SetNextRow //取得下一行

datatable.setcurrentrow(n) //取得某一行

3、Datatable方法getcurrentrow //获得当前行数

例如:datatable.getcurrentrow

4、获取datatable值

4.1 DataTable("p_Text", dtLocalSheet) //取得datatable中参数名称为:p_Text的值

4.2 DataTable.GlobalSheet.GetParameter("p_Text").Value //获取参数值方法和DataTable("p_Text", dtLocalSheet)一样

例如:xname为变量,dim xname

xname=DataTable("p_Text", dtLocalSheet)

xname=DataTable.GlobalSheet.GetParameter("p_Text").Value

5、datatable.value("num")只在global形式下的一种省略形式;完整形式是:

datatable.value("num",dtlocalsheet)

-----向某一列的单元格赋值:

datatable.value("column_name",dtlocalsheet)="nanjing"

6、字符转换Cstr

dim mm

Cstr(mm)

7、获取对象属性名称用法:

GetRoProperty----从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值)

例如:获取对象库中index属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是

      QTP为识别该对象创立的描述属性;

GetToproperty----从对象库中描述对象的属性,静态值

GetToProperties----获取用于标识对象的属性集;对于这个集合,有count等属性方法

8、如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证

if browser("web_name").dialog("dialog_name").exist(1) then'如果不出现=false

error_message=browser("web_name").dialog("diaglog_name").static("用户密码错误!".getRoproperty("text")

   if error_message<>(datatable.value("error_info"))then

msgbox(error_message)

end if

browser("web_name").dialog("diaglog_name").close

end if

这里总结了两点技巧:

  一是:对于dialog中,虽然提示信息对象名称是"用户密码错误",但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性

二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理

9、数据库检查点模块:

sub database_check

set con=createobject("adodb.connection")

con.open "Description=IBM_ODBC;DRIVER=SQL Server;SERVER=IBM;UID=sa;"&_

"PWD=123456;APP=Quick Test Pro;WSID=IBM;DATABASE=IBM_table"

'access方式:con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\test.mdb"

'Orocle方式:con.open "DRIVER={Oracle in OraHome92};SERVER=CESHI;UID=CND_TEST;PWD=CND;DBQ=CESHI;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;"

set record=createobject("adodb.recordset")

sql="select*from ibm_one_table"

record.open sql,con

DO

if(record("ibm_table_column")="kai")then'//查找表格中有多少kai

num=num+1;

end if

record.movenext

loop until record.eof=true

record.close

set record=nothing

con.close

set con=nothing

end sub

10、"is+*"类型function

isarray'是否是数组

isconnected'判断QTP是否连接到TD

isdate'是否是合法的日期类型

isempty'判断是否初始化

isNull'判断是否为空值

isNumeric'判断是否是数字型

isobject'判断是否一个功能对象

isready'判断设备是否准备就绪

isRootFolder'是否是根目录

11、for方法1,参数化时选择:dtLocalSheet

Dim CountNum

CountNum=DataTable.GetSheet("Action1").GetRowCount

For i=0 to CountNum-1

----xunhuanti------

DataTable.GetSheet("Action1").SetNextRow //使用SetNextRow方法

Next

12、for方法2,参数化时选择:dtLocalSheet

dim countNum

countNum = DataTable.GetSheet("Action1").GetRowCount

For i=1 to countNum

DataTable.GetSheet("Action1").SetCurrentRow(i) //使用SetCurrentRow(i)方法

―――ddd―――

next

13、while方法1,参数化时选择:dtLocalSheet

Dim CountNum,i

i=1

CountNum=DataTable.GetSheet("Action1").GetRowCount

While i<=CountNum

------xuhuanti---

DataTable.GetSheet("Action1").SetNextRow

i = i+1

Wend

14、while方法2,参数化时选择:dtLocalSheet

Dim CountNum,i

i=1

CountNum=DataTable.GetSheet("Action1").GetRowCount

While i<=CountNum

DataTable.GetSheet("Action1").SetCurrentRow(i)

----xuhuanti---

i = i+1

Wend

第三部分

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) '

转自:http://www.51testing.com/?uid-138711-action-viewspace-itemid-126459
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: