QTP的基础代码-自动化测试
更新时间:2022-05-31 09:15:35 作者:多测师 浏览:128
1.生产随机数列
第一种方法
randomize'更新反回的数据
funcation rand(k,n)
n="int((k-1)*rnd+1) rand=n
end funcation
第二种方法
n="randomnumber.value(1,255)
2.当运行到表中的某一行,自动导出表中的所有数据
row=datatable.getcurrentrow
if row="5" then
datatable.export("d:\data.xml")
end if
3.参数化密码
webedit("txtpass").setsecure"sdsdf...."
如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set
4.如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证
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)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理
5.datatable.value("num")只在global形式下的一种省略形式;完整形式是:
datatable.value("num",dtlocalsheet)
-----向某一列的单元格赋值:
datatable.value("column_name",dtlocalsheet)="nanjing"
-----取得某一行具体值:
datatable.setcurrentrow(n)
msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)
或者kk=datatable.Rawvalue("column_name","action1")
----在run-time时,动态添加表格与数据
kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name;
6.wintreeview一些操作
选择一个条目:wintreeview.select(item)'根是0
根的名称:wintreeview.getitem(0)
7.数据库检查点模块:
sub database_check
set con="createobject(""adodb.connection")
con.open "Descrīption="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;BA
M=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
8.换行符
vbcr----chr(13)回车符// vblf----chr(10)换行符
vbcrlf----chr(13)+chr(10)结合//type(chr(13)就相当于按了一上键盘上的enter
9.Run from step有两种方式:
在Keyword View模式会从本步骤运行到所有action结束
在expert view模式仅会将本action运行结束
10.由于对象属性原因,无法识别对象
-----对于对象属性是变化的,可以参数化/或者用正则表达式
-----报匹配多个对象错误,可以spy查看对象,添加一个该对象另一个唯一标识属性
-----有时可以删除对象的变化的属性来解决识别问题
------对于多个完全相同的对象,可以采用添加index,location,createtime等特殊属性来识别
(index:按照程序源码,绘制对象的先后标识对象,所以与其它相同对象是相互依赖,当其它对象发生
变化后,原先的所有对象index属性要发生变化,开始是0;如index:="0; location:根据对象的位置进行确定,从上到下,从左到右;
CreateTime:按照对象被浏览器打开的先后标识对象)
------另外换一种思维方式,采取等效的方法;比如用键盘代替鼠标或用操作系统本身特性去解决问题
11.对系统文件的操作
-------从系统的文件中获取信息及删除文件
get_file_infor("c:\she.mpg")
function get_file_infor(url)
dim fso,f
set fso="createobject(""scrīpting.filesystemobject")
set f="fso.getfile(url)"
f.name:f.size:f.type:f.datacreated'///获取文件信息
fso.deletefile(url)'/////删除文件
end function
--------获取文件夹里所有文件信息
get_folder_infor("c:\kai")
function get_folder_infor(folder)
dim fso,f,f1,n
set fso="createobject(""scrīpting,filesystemobject")
set f="fso.getfolder(folder) set fc="f.files for each f1 in fc
select case f1.name
case"kai.mpg","she.mpg","dd.mp3"'//检查文件夹里是否含有这些文件
end select
next
end function
12.等待某个对象出现方法
y="......waitproperty(""visible",true,10000)
以上内容为大家介绍了自动化测试中的QTP的基础代码,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/