一.Windows对象的应用.
3. 利用RunAnalog方法运行低级录制过程
5. CloseDescendentProcesses Method.
6. CloseProcessByHwnd Method
7. CloseProcessById Method
8. 对于密码的加密技术
10. Methods2: CreateXMLFromFile
11. 如何批量删除QTP的测试结果文件
14. 文本文件当作日志文件,用于记录信息(文本文件的写入)
三、 Web测试的常用技术
问题:如果一个div中有两个一样的LINK如何去取得.代码如下
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 |
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 |
功能: 关闭由 QuickTest 打开的所有进程。
实例:
在本例中:假定在运行程序之初,Record and Run 对话框自动打开了某个窗口,然后通过 Run语句打开了一个 NotePad 窗口,
那么该 CloseDscendentProcessed方法的返回值就就该是 2,因此 Message对话框显示的信息应该是”2“。
Sub CloseDescendentProcesses_Example()
SystemUtil.Run "Notepad.exe"
MsgBox SystemUtil.CloseDescendentProcesses
End Sub |
功能:根据窗口的句柄找到相应的进程,并关闭该进程。
在本例中,首先通过 GetroProperty 方法获取 NotePad 窗口的句柄,然后使用CloseProcessByHwnd 方法关闭 Notepad 程
序。
Sub CloseProcessByHwnd_Example()
hWnd = Window("Notepad").GetROProperty("hwnd")
SystemUtil.CloseProcessByHwnd (hWnd)
End Sub |
功能:根据进程的 Process ID(PID)关闭进程。
实例:
下面的例子通过 GetRoProperty 方法获取 Notepad 窗口的PID 值,然后使用CloseProcessById方法关闭 Notepad 程序。
Sub CloseProcessById_Example()
PID = Window("Notepad").GetROProperty("process id")
SystemUtil.CloseProcessById (PID)
End Sub |
问题: 我们在录制登录代码时,我可以看到下面的代码.
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:
Description:创建一个xml文件.
Example:
Set XMLObj = XMLUtil.CreateXMLFromFile("C:\XML\BookStore.xml") |
问题:我在一个贴子上看到有人认为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 |
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 |
f) Web的Webelement
15. 精确定位到某一个元素
如果用平时的方法那么一定不能唯一定位到你想要的对象上面去.
但是我们可以使用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 的字符串相匹配。