-
网上收集的QTP小技巧
2008-10-20 12:33:47
目录
6. 使用 Extern.Declare 和 Extern.<已声明的方法> 方法更改记事本窗口的标题。... 5
12. 用QTP编程自动获得网页中的javascrīpt代码和完整的html代码... 12
1. 测试登陆是否正确
Reporter.ReportEvent micDone, "Login", "开始登陆操作"
Dialog("Login").Activate
Dialog("Login").Check CheckPoint("Login")
'RunAction "Action_help", oneIteration
Dialog("Login").WinEdit("Agent Name:").Set DataTable("UserID", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
If Dialog("Login").Dialog("Flight Reservations").Exist Then
Dialog("Login").Dialog("Flight Reservations").Activate
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Reporter.ReportEvent micDone, "Login", "登陆失败"
Dialog("Login").Activate
Dialog("Login").Close
else
Reporter.ReportEvent micDone, "Login", "完成登陆操作"
If Window("Flight Reservation").Exist Then
Window("Flight Reservation").Activate
Window("Flight Reservation").Close
Reporter.ReportEvent micDone, "Login", "退出"
End If
End If
脚本应该是没什么问题
但是如果你要测试“登录”功能
这个用例仅能测正确的用户名和正确的密码是否能够登录
逻辑上还缺少登录错误的情况:用户名不存在,密码错误
另外日志登录成功失败都是done状态,文字区分用例的结束状态不明显
要有针对性的设计用例,比如:
用户名 密码 预期结果
正确 正确 登录成功
不存在 无所谓 用户名不存在
正确 错误 密码错误
这样来设计就不会有遗漏了,最好是datatable三行数据,预期结果也放入
日志里成功用micPass,失败用micFail
NS250X测试登录窗口是否存在例子
wait 5
If Browser("Browser").Dialog("Connect to 192.168.5.183").Exist Then
Browser("Browser").Dialog("Connect to 192.168.5.183").WinEdit("User name:").Set "admin"
Browser("Browser").Dialog("Connect to 192.168.5.183").WinEdit("User name:").Type micTab
Browser("Browser").Dialog("Connect to 192.168.5.183").WinEdit("Password:").SetSecure "48d89a4e62f25dbfea0fa154853e"
Browser("Browser").Dialog("Connect to 192.168.5.183").WinButton("OK").Click
Reporter.ReportEvent micDone, "Login", "登陆成功"
else
Reporter.ReportEvent micDone, "Login", "登陆失败"
end if
2. QTP调用Win API
Extern.Declare micLong, "WinExec", "kernel32.dll", "WinExec", micString,micLong
Extern.WinExec "d:\1.exe", 1
3. QTP在excel中写入内容
filename="D:\xyb\xueyb\xueyb.xls"
' create the Excel object
Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.Workbooks.Add
Set NewSheet = ExcelObj.Sheets.Item(1)
NewSheet.Name = "Page Information"
row = 1
NewSheet.Cells(1,1) = "name"
NewSheet.Cells(1,2) = "xueyb"
NewSheet.Columns("A:A").ColumnWidth = 20
NewSheet.Columns("A:A").Font.Bold = True
NewSheet.Columns("B:B").ColumnWidth = 60
NewSheet.Columns("B:B").HorizontalAlignment = -4108 ' xlCenter
' save the Excel file
ExcelObj.ActiveWorkbook.SaveAs filename
ExcelObj.Quit
Set ExcelObj = Nothing
4. 读取 Excel表格数据
Option explicit
Dim srcData,srcDoc,i,j
set srcData = CreateObject("Excel.Application")
srcData.Visible = true
set srcDoc = srcData.Worksheets("Sheet1").Activate
Dim myarray(7,4),temp
Dim str
For i=2 to 7
For j=1 to 4
myarray(i,j)= srcDoc.Worksheets("Sheet1").Cells(i,j).value
Select Case j
Case "1"
转贴:手工编写QTP测试脚本
2008-05-11 20:26:52
手工编写QTP测试脚本
在上一篇《管理QTP测试脚本的对象仓库》中,我们讨论了如何建立一个结
构化的,易于维护的对象仓库系统。我们这样做不仅仅是为了维护方便,更
重要的一点,当我们有了一套结构清楚的对象仓库以后,我们就可以轻松的
手工编写QTP脚本了。
这里可能有人会问,QTP的录制功能不是很强大么,为什么还要自己手写脚
本,这样是不是更麻烦。我先说一下我对手写测试脚本的感受,供大家参考
。首先,如果我们整理好对象仓库,再录制脚本,QTP就会又自动生成一批
新的对象,命名很乱,再修改替换太费事;其次,录制脚本的过程如果出现
问题,再重来,很麻烦;最后,也是最重要的,手写脚本时思路非常清楚,
而且写完再运行,感觉非常好,呵呵。
与编写脚本相比,脚本的维护工作同样很重要,而且维护脚本一般都是直接
修改脚本,并不会去重新录制,所以开始的时候就用手写的方式,维护起来
就会更轻松。
编写QTP脚本其实是比较简单、快速的。我们首先创建一个Test,然后把所
有相关对象仓库的tsr文件和vbs文件添加到这个Test里面,下面就可以开始
写了。写脚本大致会遇到这么几种情况:
1、调用vbs函数
2、调用其他Test
3、打开指定的URL
4、操作页面Page上的控件
5、添加CheckPoint
6、其他逻辑运算
我们分别讲一下。调用vbs函数比较简单,直接Call [函数名]。如果要调用
其他的Test,那么首先点击Call to Existing Test,然后在QC中选择一个
可以复用的Test,例如登录。如果登录的Test有参数,那么可以这样写:
RunAction “Action1 [login]”, oneIteration , “张三”
下面的脚本要操作对象仓库了。我们先写出“Browser(”,这时就会发现,对
象仓库里面的Browser对象都列了出来,然后我们选择需要的那个B对象就好
。我们先从打开指定URL的脚本开始讲,打开指定的URL使用的机会比较多,
特别是在Test的开始。一般我们这样写
Browser(”登录”).Navigate “指定的URL”
这里的“登录”是一个Browser对象,一般我们要选业务上符合的B对象。写完
这句以后要再写:
Browser(”登录”).Page(”登录首页”).Sync
这句的意思是等待“登录首页”这个Page加载完毕,注意不要用Wait几秒这种
方式来等待页面加载结束。
操作Page的对象是比较简单的,由于控件的类型太多,比如下拉菜单
WebList、文本输入框WebEdit、按钮WebButton,这里就不一一说明了,大
家看下面的一些例子吧:
Browser(”购买直充”).Page(”购买直充”).WebList(”游戏区”).Select 1
Browser(”购买直充”).Page(”购买直充”).WebEdit(”PlayerName”).Set
“abc”
Browser(”购买直充”).Page(”购买直充”).WebEdit(”
PlayerNameAgain”).Set “abc”
Browser(”购买直充”).Page(”购买直充”).WebEdit(”CheckCode”).Set
“8888″
Browser(”购买直充”).Page(”购买直充”).Image(”Submit”).Click
如果遇到问题,不知道怎么写,可以先用录制的方式,生成一些脚本,然后
仿照脚本写就可以了。另外在Page下面有可能会有Frame对象,这个没关系
,就像这样写即可:
Browser(”我的直充”).Page(”我的直充”).Frame(”直充入口”).Image(”立即
直充”).Click
添加CheckPoint要稍微复杂一些,比如说我们要检查Page上的一个
WebElement的显示字符是否正确,那么首选要把这个WebElement完整的写在
Test里面,这一句后面需要删除:
Browser(”购买直充”).Page(”购买直充”).WebElement(”购买结果”).Click
然后右击这一行脚本,选择Insert Standard CheckPoint,在弹出的CP属性
窗口,设置CP的细节。确认后脚本就会自动生成一行:
Browser(”购买直充”).Page(”购买直充”).WebElement(”购买结果”).Check
CheckPoint(”购买结果”)
最后再把上面那一行删除就可以了。
其他的逻辑运算,例如循环、判断,请参考vbs脚本语法,这里不说了。
总之,手动编写QTP脚本有很多好处,我在尝试了录制和手写两种方式之后
,最终选择了手写的方式,大家不妨也试试,特别是对编码有兴趣的同学。
地址:http://www.51testing.com/?55427/action_viewspace_itemid_77665.html
映射驱动器和拷贝文件夹的VBS
2007-12-19 13:29:18
映射驱动器:
Set WshNetwork = CreateObject("Wscrīpt.Network")
WshNetwork.MapNetworkDrive "z:","\\10.0.0.208\1","1","1"
删除驱动器:
Dim WshNetwork
Set WshNetwork = CreateObject("Wscrīpt.Network")
WshNetwork.RemoveNetworkDrive "Z:", "true","true"
拷贝文件夹:
Const ōverWriteFiles = True
Set ōbjFSO = CreateObject("scrīpting.FileSystemObject")
objFSO.CopyFolder "C:\pcnet" , "Z:\" ,OverWriteFiles
删除文件夹
Set ōbjFSO = CreateObject("scrīpting.FileSystemObject")
objFSO.DeleteFolder("Z:\pcnet")
我的栏目
标题搜索
我的存档
数据统计
- 访问量: 48381
- 日志数: 52
- 文件数: 1
- 建立时间: 2007-11-11
- 更新时间: 2013-05-09