软件测试工具QTP经验总结
Mercury QuickTest 企业级自动化测试工具! 目前已经被惠普收购,正式名字为HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 10.0. HP QuickTest Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念已简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。
1、拆分语句split
例:取得当前日期后拆分
riqi=date()
my=split(riqi,"-")
riqi=my(1)&"月"&my(2)&"日"
datatable("riqi",DtGlobalSheet)=riqi
本地表:DataTable("a", dtLocalSheet)
riqi= year(date)& "-" & Right("0"& month(date),2) & "-"&Right("0"& Day(Date),2)
2、取得表格中某行某列的值GetCellData
例:飞机票取票价
shuA=Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebTable("New York to Zurich").GetCellData(3,3)
3、取距某年某月某日的天数datediff
例:计算距2008-08-08奥运天数
datediff("d",now,"2008-8-8")
4、描述性编程text:=
例:取得某页面上某文字的链接
Browser("").Page("").Link("text:=娱乐").Click
或
neirong="娱乐"
Browser("").Page("").Link("text:="&neirong).Click
5、网页中HTML编辑器的录制
功能:验证126邮箱的发信功能正确
操作步骤:
a.录制脚本,动作包括整个发信的过程。
b.修改脚本,在输入信件主题代码后加wait 10语句
c.回放脚本,观察在邮件正文中输入的内容,回放时QTP是否写入
d.重新修改脚本,保证回放时QTP在邮件正文中写入内容
英文解决方案:
Browser("网易126免费邮--你的专业电子邮局").Page("网易电子邮箱 - xueqinzhaoqing@126.co").Frame("indexFrame").WebEdit("subject").Click
wait 1
Setting.WebPackage( "ReplayType")=2 '配置使用浏览器事件或鼠标运行鼠标操作的'方式.1 - 使用浏览器事件运行鼠标操作,2 - 使用鼠标运行鼠标操作。
Set ōbj=createobject("wscrīpt.shell")
obj.sendkeys "{TAB}"
wait 2
obj.sendkeys "abc1111"
wait 1
Setting.WebPackage( "ReplayType")=1
中文解决方案
strCopy = "软件测试."
Set ōbjIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData.SetData "text", strCopy
objIE.Quit
wait 1
Setting.WebPackage( "ReplayType")=2
Set ōbj=createobject("wscrīpt.shell")
obj.sendkeys "{TAB}"
wait 2
obj.sendkeys "^v"
wait 1
Setting.WebPackage( "ReplayType")=1
6.使用Multi Test Manager添加文件时可以直接往里拖的哦。
7.函数:新建记事本,改名为public.vbs例:
function ZHIRSS
ZHIRSS="RSS行业资讯分类维护"
end function
使用语句executefile "d:\zhaopin\case\denglu.vbs"或设置QTP test/settings/resources/+函数目录
8.设置动作循环:右击/actiong call properties/run on all rows
9.设置动作允许被调用:右击/action properties/general/reusable action打勾
10.QTP与MTM连接:Tools/option/run/allow other mercury products to run...
11.插入已存在的动作1)insert/call to copy of action...复制可修改
2)insert/call to existing of action...复制不可修改
12.QTP报告自动跳出设置:Options>Run>View results when run session ends
13.判断表格是否存在:
If Browser("数商3.0后台管理系统").Page("Page").Frame("main_5").WebTable("标题").Exist then
reporter.ReportEvent 0,"pass","系统显示了所有的资讯列表!"
else
reporter.ReportEvent 1,"fail","系统没有显示资讯列表!"
end if
14.获取表格行数:Browser("数商3.0后台管理系统").Page("Page").Frame("main_5").WebTable("标题").RowCount
15.注释脚本存在位置:qtp/dat/ActionTemplate.mst
16取本地文件名称Function ShowFileList(folderspec)
Dim fso, f, f1, fc, s
Set fso = CreateObject("scrīpting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
s = s & f1.name
s = s & " "
Next
ShowFileList = s
End Function
wenjian=ShowFileList("D:\下载\本地下载1\")
17.取本地文件删除:del= DeleFile("D:\下载\本地下载1\")
Function DeleFile(folderspec)
Dim fso, f, f1, fc, s
Set fso = CreateObject("scrīpting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
f1.delete
Next
End Function
18.sousuo2=Browser("Browser").Page("Page_4").Check (CheckPoint("2007-11-08 14:21"))
If (sousuo2)eqv(true) Then
reporter.ReportEvent 0,"",""
else
reporter.ReportEvent 1,"",""
End If
19.取参数化数据的行数,只在某几行进执行某些语句
row=datatable.GetSheet(3).getcurrentrow
If row = 3 Or row = 4 Then
20.单选框置灰zhihui=Browser("下载中心--新增下载文件").Page("下载中心--新增下载文件_4").WebRadioGroup("downloadType").GetROProperty("disabled")
If zhihui=1 Then
End If
29.取树结构
Set Desc=descrīption.create
Desc("micclass").value="WebTable"
Set List=Browser("Browser").Page("Page").Frame("main").ChildObjects(Desc)
yuqi=List(0).GetROProperty("innertext")
msgbox yuqi
yuqi=split(yuqi," ")
msgbox yuqi(1)
30.关闭所有IE
SystemUtil.CloseProcessByName("iexplore.exe")
31.创建action template.
当希望在每一个新建action时都增加一些头部说明,比如作者、创建日期、说明等,用action template
来实现最简单快捷。
方法:用记事本等文本编辑器,输入如下类似的内容:
'Company: xxxx
'Author: xxx
'Product: xxx
'Date: xx
然后将文件保存为ActionTemplate.mst,并存放到QTP安装目录下的dat目录。
32.启动IE的语句:SystemUtil.Run "iexplore.exe", "http://www.***.com"
关闭IE或其他程序的语句:SystemUtil.CloseProcessByName "app.exe"
or SystemUtil.CloseProcessByWndTitle "Some Title"
33.获取图片的名称
ObjectName = Browser(…).Page(…).Image("Find").GetProperty("Name")
34.检查某个对象是否存在,如果存在弹出对话框说明对象存在。
If Browser("Browser").Page("Page").Applet("login.html").JavaEdit("username").Exist Then
MsgBox("The object exists.")
End if
35.同步点
Browser("数商3.0制作平台").Dialog("Microsoft Internet Explorer").WaitProperty "visible", True, 120000
设置test/test settings/object synchronizationg timeout 一致
36.视图框显示为乱码时:调整原页面编码,在QTP/tools/change active screen
37.添加附件:
Browser("**").Page("**").WebFile("filePath").Click
Browser("**").Dialog("**").WinEdit("文件名(N):").Set "D:\**.jpg"
Browser("下载中心--新增下载文件").Dialog("选择文件").WinButton("打开(O)").Click
添加相应的对象
38.在图片上右击添加:tools/web event recording configuration/custom settings
webedit/event/add/onblur,onchange,onfocus,onpropertychan,onsubmit
webdlement/event/add/onclick,onmousedown,onmouseup/listen always
39.数据执行保护
方法一、右击我的电脑/高级/性能/设置/数据执行保护/为除下列选定程序之外的所有程序和服务启用DEP/添加被保护的程序。
方法二、C:/BOOT.INT修改noexecute=alwaysoff
40.在图片上右击添加:tools/web event recording configuration/custom settings
webedit/event/add/onblur,onchange,onfocus,onpropertychan,onsubmit
webdlement/event/add/onclick,onmousedown,onmouseup/listen always
41.去掉前后空格
If trim(mingcheng)=trim(yuqi) Then
42.分类树问题解决
Set Desc=descrīption.create
Desc("micclass").value="WebTable"
Set List=Browser("Browser").Page("Page").Frame("main").ChildObjects(Desc)
yuqi=List(0).GetROProperty("innertext")
msgbox yuqi
yuqi=split(yuqi," ")
msgbox yuqi(1)
43.引用自定义环境变量
Environment.LoadFromFile "D:\询价\case\环境\huiyuan.xml"
44. 环境变量有2种,一种是QTP的内置变量,一种是用户自定义的变量。内置变量是可以直接就可以用,自定义环境变量需要在菜单中选择“文件”——> “设置”——>“环境”,在变量类型中选择“用户自定义”,然后进行添加,可以对添加的变量全部导出,导出的文件为.xml格式的文档。既然可以导 出,那么必然可以导入.xml文件,你可以在该对话框中的选中“从外部文件导入”,然后添加其文件路径即可。(当然这些操作都可以直接使用脚本来实现, 如:Environment.LoadFromFile(“FileName”))
例如:在桌面建立一个Var.xml,如下
-<Environment> //以这个开始的内部都是定义环境变量,直到以</Environment>结束
- <Variable> // 变量定义起始标识
<Name>aa</Name> // 变量名称
<Value>11</Value> // 变量值
</Variable> // 变量定义结束标识
- <Variable>
<Name>bb</Name>
<Value>22</Value>
</Variable>
- <Variable>
<Name>cc</Name>
<Value>33</Value>
</Variable>
</Environment>
然后导入本测试的环境变量文件中,在专家视图里编写下面的脚本代码:
Dim aParam3
aParam3=Environment.Value(“aa”) // 调用环境变量
msgbox aParam3
运行测试,会输出”11”
45.在HTML编辑器中写入数据
用低水平录制写入编辑器过程,增加编辑部器前的对象,加入click事件,再用TAB
例如:
Browser("广告管理").Page("广告管理").WebEdit("descrīption").Click
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Type mictab
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Type "aaa"
46.Browser("creationtime:=1").close
两个页面title相同无法识别时使用描述必编辑
Browser("creationtime:=1").page(title:=****).WebEdit("name:=***").Set "***"
或Browser("creationtime:=1").page(index:=1).WebEdit("index:=0").Set "***"
47.场景恢复:
当某些提示框会在不定期时有提示时,如果自动点击确定或某些按钮
1、tools/recovery scenaril manager,制作相应的提示框和要点击的按钮,并保存
2、test/settings/recovery,添加刚保存的.qrs
48.输入验证码,先提示一个输入框,在输入框内输入验证码,点击[确定],把输入的验证码框
Dim a
a = InputBox("输入名字")
49.对象库中对象名称不分为_2,_3...设置:tool/options/web/page/fram options/
crate a new page test object for为different test object descrīptons
crest a new frame test object for为different test object descrīptions
50.验证测试输入框输入的最大允许字数功能的正确
QTP脚本代码中编写
Set aa=Browser("Browser").Page("Page").Frame("main").WebEdit("PayTypeName")
if konglen(aa,20) eqv true then
reporter.ReportEvent 0,"添加支付方式,支付方式输入框允许输入的最大字符功能正确",""
else
reporter.ReportEvent 1,"添加支付方式,支付方式输入框允许输入的最大字符功能错误",""
end if
此函数的功能为:验证测试输入框输入的最大允许字数功能的正确,函数可写在public.vbs中
Function konglen(duixiang,guifanshu)
duixiang.Click
wait 1
Setting.WebPackage( "ReplayType")=2
Set ōbj=createobject("wscrīpt.shell")
i=0
ōld="a"
xin="b"
while old<>xin
ōld=duixiang.GetROProperty("value")
i=i+1
wait 0,20
obj.sendkeys "1"
wait 0,20
xin=duixiang.GetROProperty("value")
wend
'msgbox i
If i-1=guifanshu Then
konglen=true
else
konglen=false
End If
Setting.WebPackage( "ReplayType")=1
End Function
51.超时设置:Setting("DefaultTimeout") =1000000
52.共享对象库:Set App = CreateObject("QuickTest.Application")
App.Test.Settings.Resources.ObjectRepositoryPath = "path"
53.取颜色 browser("b").page("p").Object.currentStyle“:.color
54.显示行号设置:Tools- --> Editor Options...-->General-->Show line number,
55.不同数据库检查点手动SQL写法
QTP插入数据库检查点,手动指定SQL语句的写法。
一、SQL Server格式(本地无需安装SQL Server)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER=SQL Server;SERVER=数据库IP地址;UID=用户名;PWD=密码;APP=Microsoft Office 2003;WSID=本地主机名;DATABASE=数据库名
实例:
DRIVER=SQL Server;SERVER=10.160.11.10;UID=sa;PWD=sa;APP=Microsoft Office 2003;WSID=RJHLJUN;DATABASE=dcwork
2.本地已创建数据源的方式
DSN=数据源名称;UID=用户名;PWD=密码;APP=Microsoft Office 2003;WSID=数据库的主机名;DATABASE=数据库名
实例:
DSN=LocalServer;UID=sa;PWD=sa;APP=Microsoft Office 2003;WSID=RJDCWORKTEST;DATABASE=dcwork
3.SQL语句实例(从数据库表HR_LANGUAGE_TYPE中,查询字段语言名称LANGUAGE_NAME,条件语言名称=中文,按语言名称升序排序结果)
source(SQL语句):
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME FROM dcwork.dbo.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文') ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME
二、DB2格式:(本地至少安装DB2 Run-Time Client Lite)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={IBM DB2 ODBC DRIVER};UID=用户名;PWD=密码;MODE=SHARE;DBALIAS=数据库名;
实例:
DRIVER={IBM DB2 ODBC DRIVER};UID=db2admin;PWD=db2admin;MODE=SHARE;DBALIAS=DCWORK;
2.本地已创建数据源的方式
DSN=数据源名称;UID=用户名;PWD=密码;MODE=SHARE;DBALIAS=DCWORK;
实例:
DSN=DWCORKDB2;UID=db2admin;PWD=db2admin;MODE=SHARE;DBALIAS=DCWORK;
3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME FROM DB2ADMIN.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文') ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME
三、Oracle格式:(本地需要安装Oracle ODBC DRIVER)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={Oracle in OraHome92};SERVER=数据库服务名;UID=用户名;PWD=密码;DBQ=数据库名;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;
实例:
DRIVER={Oracle in OraHome92};SERVER=DCWORK;UID=DCWORK;PWD=DCWORK;DBQ=DCWORK;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;
2.本地已创建数据源的方式
DSN =数据源名称;UID=用户名;PWD=密码;DBQ=数据库名;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL= 10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;
实例:
DSN=dcworkoracle;UID=DCWORK;DBQ=DCWORK;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;
3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME FROM DCWORK.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文') ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME
四, mysql
Set Conn = CreateObject("ADODB.Connection" )
str="DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.168.1.100;DATABASE=wp_blog;user id=zzz ; password=123456"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )
sql = "select * from `wp_blog`.`blg_webcategory` limit 0, 5000;"
Rs.open sql,conn,1,3
If (not Rs.eof) then
Rs.MoveFirst
MsgBox Rs(0)
MsgBox Rs(1)
MsgBox Rs(2)
MsgBox Rs(3)
end if
Rs.close
Set Rs = Nothing
Conn.close
Set Conn = Nothing
五. access
Set Conn = CreateObject("ADODB.Connection" )
str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/db1.mdb"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )
56.*.xml
Environment.LoadFromFile "D:\新建文件夹\a.xml"
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set Environment("HuiYuanB")
57、类似时间控件,不能手到输入的文本档
1)手工添加对象,
2).object.value="2008-4-12"
文章来源于领测软件测试网 https://www.ltesting.net/