QTP调用外部api
"tqT9|;H"@"n|$O"^0'例1:运行一个exe文件
Extern.WinExec "d:\1.exe ", 1
'例2:Beep
'它让我的机器在办公室里狂响不止!
Extern.Declare micLong, "Beep", "kernel32.dll", "Beep", micLong
Extern.Beep 500
QTP获取对话框中的信息51Testing软件测试网5AM.O:xU1d8X8@E\
如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证
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)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理
51Testing软件测试网/l3S_qtfxc#o~ GH1Y
QTP获取对象属性名称用法:
zK*N.|3cq.RnfY0GetRoProperty----从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值)
例如:获取对象库中index属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是
QTP为识别该对象创立的描述属性;
3s)P-p,]2p_i0B0Q0GetToproperty----从对象库中描述对象的属性,静态值
GetToProperties----获取用于标识对象的属性集;对于这个集合,有count等属性方法
QTP在执行过程中往excel中写入值
DataTable.GlobalSheet.AddParameter "Name", "wangyidonglu"
*J2y'M Z|x/x0取datatable特定行的数据可以这样使用
DataTable.GetSheet("Action1").GetParameter("test").ValueByRow(1)
@Vl1D;S Tsz0QTP在excel中写入内容51Testing软件测试网
YH3Ktpw]
filename="D:\xyb\xueyb\xueyb.xls"51Testing软件测试网+]-}Ac\K7D
' create the Excel object51Testing软件测试网V-wi$\5~C8K{f
Set ExcelObj = CreateObject("Excel.Application")
d*?:t7p? VF0ExcelObj.Workbooks.Add51Testing软件测试网ZTOW"~*@z`)N
Set NewSheet = ExcelObj.Sheets.Item(1)
4T3M_Jm,tgf0NewSheet.Name = "Page Information"51Testing软件测试网;uf:l*G_B I
row = 151Testing软件测试网0y4aAX$a
NewSheet.Cells(1,1) = "name"
~Yz Dj/YV0NewSheet.Cells(1,2) = "xueyb"51Testing软件测试网
R|
`v2W[yD
NewSheet.Columns("A:A").ColumnWidth = 2051Testing软件测试网7bC?']Br;d)fTo
NewSheet.Columns("A:A").Font.Bold = True
:x,\x^L,xK5la0NewSheet.Columns("B:B").ColumnWidth = 6051Testing软件测试网;D0ed9YT5NL(|
NewSheet.Columns("B:B").HorizontalAlignment = -4108 ' xlCenter
K.PdHOl Lez0' save the Excel file51Testing软件测试网Q`#_|fh
[,@
ExcelObj.ActiveWorkbook.SaveAs filename51Testing软件测试网m8AM(xC,fzdc)~
ExcelObj.Quit
Mf^ H:Al|lld0Yw0Set ExcelObj = Nothing51Testing软件测试网Tu6e d
D
QTP等待某个对象出现方法51Testing软件测试网g@4TH!Y
TN yM
Window("Flight Reservation").Static("Static").WaitProperty("visible",true,10000)51Testing软件测试网\/F+i2hUw$S@
例:
RLv ~"HX7R0SystemUtil.Run "E:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","E:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"51Testing软件测试网ciG
d.ahH!ZrvN
Dialog("Login").Click 177,4751Testing软件测试网SE~ZK8T
miha
Dialog("Login").WinEdit("Agent Name:").Set "mercury"51Testing软件测试网e8ONx$J)lT7c-_
Dialog("Login").WinEdit("Password:").SetSecure "4886c0abed388164f4f9c00404eef82ad60997ea"
Q3zL3Rvb5m0Dialog("Login").WinButton("OK").Click
4y8fy;ODuE-D0If Window("Flight Reservation").Static("Static").WaitProperty("visible",true,10000) ==true Then51Testing软件测试网p3nd9Z(nt
msgbox("flight4A登录成功!")
-@\'Sib%f0 else
1EKW7a-s,Y+{_ z0 msgbox("flight4A登录失败!")
'aI2N%P%sG][D0End If
H3E6h&qo
y&s0
6Vg:e}
q$GD0QTP childobject的应用
uQDuK#RR5I.E[_p0childobject可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;
返回的对象集合的count方法可以返回对象个数,这就可以通过下标对单个对象进行操作;在出现index标识对象时
可以进行运用
如:Set m_WinCheck=Descrīption.Create()
m_WinCheck("nativeclass").Value="Button"
set All_WinCheck=Window("").Dialog("").Childobject(m_WinCheck)
n=All_WinCheck.Count()
for i=0 to n-1
All_WinCheck(i).Set "ON"51Testing软件测试网!TU)Y P)kz(eX
next
/qY G Sz!|0QTP Action之间的参数传递
/?l aJ,Gp%v3K,j0例如:在Action1中,有如下代码:
out_str="This is out_string"
RunAction "Action2",oneIteration,out_str
在Acton2中,在其step->Action Properties中的,input参数栏,加入out_str后,
msgbox(parameter("out_str")),就能正确显示参数了
QTP自动截图51Testing软件测试网IMkhs
1. 选择菜单栏Tools->Option项,再选择Run选项卡,在Run窗体中选中“Save still image captures to results,且它右边的下拉框中选择“For errors”
51Testing软件测试网q&@P HH
2. 用CaptureBitmap("D:\1.bmp")
#p!CqkI4D0Browser("XX").Page("XX").CaptureBitmap("D:\1.bmp")
c ~E%hC.\0在QTP中判断一个网页是否已经被开启
Dim descBrowser51Testing软件测试网{!d0q
nw]w
Set descBrowser = Descrīption.Create()51Testing软件测试网+c }2K)wqQ
descBrowser("openurl").value = "http://www.google.cn/"51Testing软件测试网1t+q
S{3k*h
Set child =desktop.ChildObjects(descBrowser)
|Xs@X[0msgbox child.count()51Testing软件测试网+n;m#nN!d.m:S\X
If child.count()=0 Then51Testing软件测试网4r`7M$H3OUHY
print "该网页没有被开启\"
,I.Y)NG([SZ)]K)k&@;U2V{0Else
BE(IkA Pq0 For i =1 to child.count()51Testing软件测试网1@ VDz;O)eYe1`8[
child(i-1).close51Testing软件测试网)?j"X
Q6dc
Next51Testing软件测试网9sS3].?QxV
End If
])O#Zi3x
`o#f Z0