On error resume next On error goto handle |
15 数组的应用:
name="array(1,2,""aa","bb") name(2)="aa" |
16 正则表达式应用模板
进行日期YYYY-MM-DD的格式检查 :
Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' Create variable. Set regEx = New RegExp ' Create a regular expression. regEx.Pattern = patrn ' Set pattern. regEx.IgnoreCase = True ' Set case insensitivity. regEx.Global = True ' Set global applicability. Set Matches = regEx.Execute(strng) ' Execute search. For Each Match in Matches ' Iterate Matches collection. RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function date_pattern="^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$" result_message=RegExpTest(date_pattern, inputbox("请你输入要检查的时间:"))'用其它正则表达式更改此处 Select case result_message Case "" msgbox("你输入的日期格式与标准不匹配") case else MsgBox(result_message) end select |
17 返回一个字符串在另一字符串中的位置
instr(string1,string2) |
18 有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题;
举例说明1:
比如:你录制一个选择磁盘中的文件动作
会录制为:
.winlistview(" ").drap 46,99 .winlistview(" ").draponitem "she.mp3" |
下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she;
举例说明2:
有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:
“web对话框",而在2003上是”网页对话框"
19
"is+*"类型function isarray'是否是数组 isconnected'判断QTP是否连接到TD isdate'是否是合法的日期类型 isempty'判断是否初始化 isNull'判断是否为空值 isNumeric'判断是否是数字型 isobject'判断是否一个功能对象 isready'判断设备是否准备就绪 isRootFolder'是否是根目录 |
例如:在Action1中,有如下代码:
out_str="This is out_string" RunAction "Action2",oneIteration,out_str 在Acton2中,在其step->Action Properties中的,input参数栏,加入out_str后, msgbox(parameter("out_str")),就能正确显示参数了 |
21 Wscrīpt.Shell的一些应用
set WshShell ="CreateObject(""Wscrīpt.Shell") WshShell.SendKeys "{ENTER}" '模拟键盘进行操作 WshShell.AppActivate "Calculator" '启动应用程序 |
22 获取对象属性名称用法:
GetRoProperty----从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值)例如:获取对象库中index属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是QTP为识别该对象创立的描述属性;
GetToproperty----从对象库中描述对象的属性,静态值
GetToProperties----获取用于标识对象的属性集;对于这个集合,有count等属性方法
23 FireEvent的使用可以对一个对象进行更复杂的操作
如:FireEvent("onfocus") '使一个控件获取焦点
FireEvent("ondblclick") '实现双击/也可以在事件设定中针对该对象事件响应
24 模板的应用
-----新建一个文本,输入一些新建Action时常包含的信息,然后保存为ActionTemplate.MST文件,
并复制到QTP/dat目录下;这样每次新建action都会包含固定的信息了;
例如:
'-------------------脚本说明---------------
'产品版本: __Build( )
'测试员:
'编写日期:
'测试功能:
'脚本类型:
'被测试对象初始状态:
'进展程度:
'基本思路:
'主要功能函数:
'历史修改:
'没解决的问题:
'--------------------脚本内容-------------
25 在对象库中,两个对象有时不能通过更改属性或命名来达到两个对象完全一致的替换;
在web-mod项目中,我在对象库里添加了一个自动含有index标识属性的对象,然后每次通过SetToproperty来改变
index值,对对象进行数据驱动,使其操作另一个对象,但脚本始终操作原先index属性值的对象;后来,把该对象
删除掉,重新添加一个不自动含有index标识属性的该类对象,然后,手工添加,index标识属性,后来脚本能正常工作了,可见两次的对象属性完全一致,但形成方式不一样,导致的结果往往也不一样;
26 childobject的应用
childobject可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;
返回的对象集合的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" next |