另外一篇别人写的关于QTP25个技巧写的也相当不错,文章地址:
http://www.diybl.com/course/3_program/rg/2008629/129265.html
以下内容为本人总结。
1.在脚本运行过程中屏蔽鼠标键盘输入
SystemUtil.BlockInput ‘开始处
这里是你的脚本
SystemUtil.UnblockInput ’结尾处
---------------------------------------
补充关闭进程的方法:Systemutil.closeprocessbyname "GreenBrowser.exe"
2.检查页面对象是否可用
yanzheng=Browser("电子政务").Page("::::行政审批系统::::").Frame("10_3").WebButton("验证").GetTOProperty("disabled")
用GetTOProperty("disabled")获得对象disabled 的属性值,如果为1,则不可用,为0 则可用
3.WebTable 的index属性
今天才发现原来,WebTable原来还有index这个属性,设置了index属性后问题得以解决。不知道咱们搞的,公司的那个系统在找WebTable时,增加对个对属性去匹配,搞了好久才发现原来是自己需要的WebTable有多个,添加index属性后,问题得以解决。
4.WebTable 的RowCount重新获值
在第一次获得RowCount值后,比如要执行删除操作,这时要重新获取表格的属性值(用set ...),这样RowCount才能变化,否则还是之前(第一次)的值。
5.qtp识别的mandatory和assistive属性
qtp识别属性有mandatory和assistive,如果是mandatory 属性变了就识别不到,assistive属性变了就不一定
6.qtp执行页面刷新
两种方式都是将以被保存的Action调用过来,但是copy Action是将原本Action中的所有属性,及其参数值调用过来,并且可以在其上随意的更改,而且这些更改并不影响源Action,而call existing Action虽然也是将源Action的所有属性及其参数值都调用过来,但是你不能更改其中的任何步骤和参数值,如果一定要更改,需要重新打开源Action,在源Action上进行更改,所作的改动将自动体现在调用的Action上。
12.QTP中计算脚本执行时间方法
如果要计算一个action或者要计算一段脚本执行的时间,这里的解决方法是:添加事物开始Services.StartTransaction "trans_test"和 Services.EndTransaction "trans_test",运行完成后,在result中就可以看到该事务的执行时间。如图:
13.设置可重用检查点(个人感觉有点创意)
方法一:
将检查点全用描述性编程定义成function函数,然后每次都调用这些function。
方法二:
(1)录制可重用检查点,将QTP record and run setting设为录制当前页,开始录制,不录制步骤,直接在录制过程中添加检查点,将这个只有检查点的Action设为可重用。(2)调用可重用检查点,在第一步录制好的脚本中调用这个可重用检查点,首先选中需要添加检查点的步骤,然后选择insert—call existing Action 选择after current step(3)检查点添加到步骤之后,通过这种发放这个检查点可以被多次使用。
14.关于Reporter.filter用法
Reporter.filter=2 reporter.ReportEvent micPass,"测试通过02","pass" reporter.ReportEvent micPass,"测试通过02","pass" reporter.ReportEvent micPass,"测试通过02","pass" reporter.ReportEvent micFail,"测试通过02","pass" |
Browser("系统登录").Page("***信息管理系统").Frame("main").WebEdit("ylzh").FireEvent("onfocus") set WshShell =CreateObject("WScript.Shell") WshShell.SendKeys "{ENTER}" |
Desktop对象允许访问桌面上的顶级对象.运用childobjects方法可以返回此对象中的所有对象列表:以下代码实现了,从桌面顶级对象中查找name=“新浪首页”,然后将该browser的图像抓取出来存到特定的文件夹下.
Set des=description.Create() set dobj=desktop.ChildObjects(des) For i=0 to dobj.count-1 If dobj(i).Getroproperty("name")="新浪首页" then dobj(i).CaptureBitmap"D:\Software testing\QTP\temp\"&i&".bmp",true dobj(i).close end if Next |
18.参数化Link的一种方法
Linkvar=DataTable("linktext",dtGlobalSheet) Browser("163网易免费邮--中文邮箱第一品牌").Page("163网易免费邮--中文邮箱第一品牌").LinK("text:="&Linkvar).click |
Datatable中的数据为:
linktext |
126免费邮 |
Yeah.net |
VIP |
188 |
贺卡 |
帮助 |
19.将日期写入日期控件文本框的方法
Browser("电子政务").Page("::::行政审批系统::::").Frame("9_3").webedit("日期控件文本框名字").Object.value="2009-04-06" |
20.关于 在线文本编辑器 QTP不能写入文字的方法
因为QTP将 在线文本编辑器 识别成了一个 WebElement,这块用到object.document.write"你想要写的内容" 方法.
其实 object.document.write"" 这个方法很牛! 大家在后边就会发现.
21.QTP脚本不能录制的解决方法
问题起因:
在安装QTP后,或者禁用IE浏览器里的一些ActiveX控件后,正常录制QTP事,不能产生相应的录制脚本,脚本内容为空。
解决方法:
根据实践,我发现QTP在IE中录制脚本是依靠一个叫BHOManager Class的动态链接库来完成的。当这个控件没有被加载,或者被禁用时,就会出现上述症状。于是,解决方法就很简单了,重新加载,或启用这个控件,一切就OK啦。
具体步骤:
打开IE,在菜单中选择[工具]/[Internet选项]进入Internet配置界面。选择[程序]/[管理加载项],查看目前加载的ActiveX的情况。
当看到存在BHOManager Class并且其状态是“禁用”时,点击“启用”开启这个功能,并保存后退出即可解决问题。
当在管理加载项里找不到BHOManger Class这个加载项时,如果你安装了QTP,那么在C:\WINDOWS\system32下会存在一个叫BHOManager.dll的动态链接库,或者可以直接在计算机里搜索BHOManager.dll,然后查看其路径。加载这个dll,加载方法为:点击[开始]/[运行],输入cmd,然后定位到dll所在目录,键入regsvr32 BHOManager.dll命令,即可注册此dll。问题解决。
22.qtp关闭IE进程方法
SystemUtil.CloseProcessByName "iexplore.exe"
23.qtp测试web 超级链接的方法
方法一:用 CheckProperty("url","")