QTP的一些总结

2010-04-20  吕施娟 

一.Windows对象的应用.
a)      Desktop对象.
可以访问桌面顶层的对象。
Desktop对象包括CaptureBitmap、ChildObjects、RunAnalog方法。
1.         使用CaptureBitmap方法来截屏
例1:Desktop. CaptureBitmap "C:\TestCaptureBitmap.bmp",true
 True:表时如果目录下的图片存在,是否覆盖。
例2:Desktop. CaptureBitmap "C:\TestCaptureBitmap.bmp",ture(通过)
Desktop. CaptureBitmap "C:\TestCaptureBitmap.bmp",false(失败) 
2.         Childobjects方法来查看页面所子对象。
提出问题:现在要点击下图 2面上的一个link连接.Edit的连接.
如果我们使用一般的描述性编程.如下.
Browser(“name:=xxxx”,”title:=xxxxx”).page(“title:=xxxxx”).Frame(“name:=xxxxx”).link(“name:=Edit”).click.如果使用此方法来描述.那么执行到此步骤进.系统分提出下面图 3的错误.
那么我们可以使用Chidobjects方法来实现.把图 2 中Edit对象放一个集合去使用.代码如下.

Dim foodmenudesc,foodmenudescexit 
Set foodmenudescexit=description.Create
                     foodmenudescexit("name").value="Edit"
                     foodmenudescexit("text").value="Edit"
                     foodmenudescexit("outerhtml").value="<A onclick='setUpdateFoodMenu.*"
       Set foodmenudesc=Browser("name:=Wpos system F023","title:=Wpos system F015").Page("title:=Wpos system F023").Frame("name:=content").ChildObjects(foodmenudescexit)
                     i=foodmenudesc.count
                     foodmenudesc(Randomnuber(0,(i-1)).click  .’随机取点击一个link

 
3.         利用RunAnalog方法运行低级录制过程
QTP支持建制鼠标和键盘操作的低级过程.这种录制模式叫”AnalogRecording”。
Desktop对象的RunAnalog方法可以运行录制下来的Analog脚本。如。下面脚本运行名为”Track1”的Analog脚本:

‘激活窗口
Window(“Flight Reservation”).Activate
‘选择菜单
Window(“Flight Reservation”).WinMenu(“Menu”).select “File;Fax Order….”
‘运行名为 “Track1”的Analog脚本
Desktop.RunAnlog “Track1”

b)     SystemUtil对象的使用
在脚本运行过程中,可使用该对象控制应用程序或进程
4.         BlockInput Method
功能:禁止键盘或鼠标操作
问题:当我们再做测试的时候,不想让因为人为的因素,比如键盘输入或者点错鼠标导致测试结果不正确。那么我们就可以把某一段程序的键盘或鼠标禁用。
实例:

Sub BlockInput_Example()
 
SystemUtil.BlockInput   ‘禁用输入
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("userName").Set
"mercury"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury
Tours").WebEdit("password").SetSecure "4082986e39ea469e70dbf8c5a29429fe138c6efc"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Image("Sign-In").Click 2,
2
SystemUtil.UnblockInput ‘释放输入
 
End Sub

5.         CloseDescendentProcesses Method.
功能: 关闭由 QuickTest 打开的所有进程。
实例:

在本例中:假定在运行程序之初,Record and Run 对话框自动打开了某个窗口,然后通过 Run语句打开了一个 NotePad 窗口,
那么该 CloseDscendentProcessed方法的返回值就就该是 2,因此 Message对话框显示的信息应该是”2“。
 
Sub CloseDescendentProcesses_Example()
 
SystemUtil.Run "Notepad.exe"
MsgBox SystemUtil.CloseDescendentProcesses
 
End Sub
 

6.         CloseProcessByHwnd Method
功能:根据窗口的句柄找到相应的进程,并关闭该进程。

在本例中,首先通过 GetroProperty 方法获取 NotePad 窗口的句柄,然后使用CloseProcessByHwnd 方法关闭 Notepad 程
序。
Sub CloseProcessByHwnd_Example()
 
hWnd = Window("Notepad").GetROProperty("hwnd")
SystemUtil.CloseProcessByHwnd (hWnd)
 
End Sub

7.         CloseProcessById Method
功能:根据进程的 Process ID(PID)关闭进程。

实例:

下面的例子通过 GetRoProperty 方法获取 Notepad 窗口的PID 值,然后使用CloseProcessById方法关闭 Notepad 程序。
Sub CloseProcessById_Example()
 
PID = Window("Notepad").GetROProperty("process id")
SystemUtil.CloseProcessById (PID)
End Sub

8.         对于密码的加密技术
问题: 我们在录制登录代码时,我可以看到下面的代码.
Browser("dfgd").Dialog("pass").WinEdit("pwd").SetSecure “4a7681e24202043ee968d3f9”
那么你可以看到pwd是加密的了.这样可以提高代码的安全.那么密码如何通过我们普通的密码.例如123.然后变成加密码的密码呢?
解决方法:

pwd = "123"
e_pwd = Crypt.Encrypt(pwd)
‘e_pwd就是加密以后的密码了.
 

这个地方我们使用了Crypt对象的encrypt的一个加密码的方法
二、        文件的操作
c)      XMLUtil Object
该对象用于访问和返回的XML对象
9.         Methods1: CreateXML
Description:创建并返回一个xml对象

Example:

Set XMLObj = XMLUtil.CreateXML()
XMLObj.LoadFile("C:\XML\BookStore.xml")
 

10.     Methods2: CreateXMLFromFile
Description:创建一个xml文件.
Example:

Set XMLObj = XMLUtil.CreateXMLFromFile("C:\XML\BookStore.xml")

11.     如何批量删除QTP的测试结果文件
问题:我在一个贴子上看到有人认为QTP不能自动删除测试结果是一个缺点.今天来看了一个帮助系统.可以解决这个问题.供大这参考.
QTP提供了一个删除测试结果的一个工具. Start > Programs > QuickTest Professional > Tools > Test Results Deletion Tool(QTP9.0)
工具的界面如下图4
图 4
在Test or Foldet选择你放测试脚本的目录.然后选Include test results found in subfolders个单选框.点击refresh按钮.会自动检索所有的测试结果文件.然后点Delete删除.就可以删除测试结果文件了..如果使用TD管理测试代码.一样可以使用.connect连接服务器.这儿不再说.如果想知道更加详细的功能.请点击HELP.以及发邮件给我..jadeyu712@126.com
d)     Excel对象
12.   Excel文件的读取
问题:从数据库中把数据读取到某一个Excel表.
解决方法:

Set excelObj = createobject("Excel.Application") '创建一个excel对象
 excelObj.workbooks.open("C:\test.xls")
 Set sheetNew = excelobj.sheets.item(1)'' 设置将数据放在 EXCEL 中的那一页上 ( 索引从1开始 )
       Const strconn = "Provider=sqloledb;Server=192.168.11.116;Database=WPOSPlatformProduct;Uid=sa;Pwd=0"
       Set  conn=createobject("Adodb.Connection")
       Set res=createobject("Adodb.recordset")
       sql2000 = "SELECT * FROM t_CakeFilling"
       conn.open strconn
      
       'res.Open sql, conn
       res.Open sql2000, conn   'sql2000为查询语句
 
       res.MoveFirst()
      
       Dim i
       Dim j
       j=1
       Do while not res.eof
              For i=0 to res.Fields.count-1
            sheetNew.cells(j,(i+1)).value=res.fields(i).value
              Next
              j=j+1
              res.movenext()
       Loop
       res.close
       conn.close
       Set res=nothing
       Set  conn=nothing
    excelObj.activeworkbook.saveas "C:\data.xls" ' 保存数据
       excelObj.quit ' 关闭对象
       set excelObj = nothing ' 清空对象

e)      文本文件操作
13.   文本文件当成数据文件,通过对文本文件的读写操作,来实现数据驱动.
文本文件内的内容如下:
Manager,Corporation

Function writeorderno()
       Dim fso, myfile,username,passwd
       set   fso=CreateObject("scripting.FileSystemObject")
       set myfile=fso.openTextFile("C:\test.txt",1,false)
       p=split(myfile.readline,",")
       msgbox  p(0)
       msgbox p(1)
       myfile.close
end Function

14.     文本文件当作日志文件,用于记录信息(文本文件的写入)

writeorderno("我是张玉")
Function writeorderno(orderno)
Dim fso, myfile
Set fso=CreateObject("scripting.FileSystemObject")
Set myfile=fso.openTextFile("C:\test.txt",8,false)
myfile.writeline orderno
myfile.close
End Function

三、        Web测试的常用技术
f)        Web的Webelement
15.   精确定位到某一个元素

   
    baidu
    51tesing
    51tesing
问题:如果一个div中有两个一样的LINK如何去取得.代码如下

如果用平时的方法那么一定不能唯一定位到你想要的对象上面去.
但是我们可以使用webelemnet方法就可以定位到第二个51teing.代码如下

browser("Untitled Page").Page("Untitled Page").webelement("html id:=div1").link("index:=1").Click

但是此处和描述性编程的使用方法不一样.
四、        正则表达
g)     QTP中正则表达式的应用
16.     基本介绍
正则表达式的一般形式:
/zhangyu/
“/”定界符.
Zhangyu, 目标对象中进行匹配的模式(字符).
较为常用的元字符有"+","?","*"
例:/love+/:表示:lov后面的"e"字每可以出现一个或多个字母"e"的字符串相匹配
例:/zhang*/:表示所有姓张的人.
例:/Wil?/:表示可以与目标对象中的 “ Win ” , 或者 “ Wilson ” , 等在字母 i 后面连续出,现零个或一个字母 l 的字符串相匹配。

665°/6521 人阅读/13 条评论 发表评论

李锋  2010-04-21

沙发! 顶!


谢丽  2010-04-21

顶!阁下对QTP的应用很深呀,我目前还是用的录制,惭愧呀!


王艺  2010-04-21

我上午刚把QTP装好...学习一下,搬个板凳去


李康  2010-04-21

收藏了,以后用得着。


吕施娟  2010-04-21

谢丽: 顶!阁下对QTP的应用很深呀,我目前还是用的录制,惭愧呀!
我也是刚入门而已,现在的工作就是qtp的自动化,不研究没法工作喽


程婷  2010-04-21

李康: 收藏了,以后用得着。
怎么收藏?


刘光宇  2010-04-21

李锋: 沙发! 顶!


雷雨  2010-04-21

学习~


李康  2010-04-21

程婷: 怎么收藏?
日志的右下角有个分享,就是收藏。呵呵


夏庆京  2010-04-21

顶,大家都用qtp啊。正版?


张平  2010-04-27

挺好~


龙甲燕  2010-11-21

不错,请允许我拿走了!!


吕施娟  2010-11-23

龙甲燕: 不错,请允许我拿走了!!
enjioy yourself,放在这里就是供大家分享的


登录 后发表评论