kingsunnyv 发表于 2011-10-13 15:31:41

求助:QTP创建Object为可变对像时如何解决

各位大侠,大家好,小北初学QTP,在录制脚本的时候,遇到一个非常棘手的问题,需要有经验的大虾们,帮帮忙

任务目的:使用HDTunePro.exe测试硬盘性能,需要使用QTP录制自动化测试的脚本
任务问题:HDTunePro.exe有一个温度检测功能,温度显示在一个Static的框中,在录制脚本的过程中,QTP会自动创建一个当前温度的Object(如“46℃”),所以我回放脚本的时候,如果当前温度与录制脚本时的温度值不同,回放就会失败
HDTunePro软件:
HDTunePro软件下载地址:http://mydown.yesky.com/soft/utilitie/test/132/440132.shtml
脚本:
录制后的脚本代码如下:SystemUtil.Run "F:\TestIO","open"
Window("TestIO").WinListView("SysListView32").Activate "HDTunePro.exe"
'Dim title
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").Maximize
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinTab("46℃").Select "文件基准"   
'set title = left(Dialog("HD Tune 专业版 v3.00 - 硬盘工具").GetVisibleText(1131,38,1209,50),2)
'MsgBoxTimeOuttitle,"",1
'Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinTab(title & "℃").Select "文件基准"
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinComboBox("文件长度").Select "512 MB"
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinButton("开始").Click
Wait 5
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinButton("停止").Click
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinButton("退出").Click跪求哪位英雄帮助解决一下这个问题?

kingsunnyv 发表于 2011-10-13 15:41:12

有些注释没有删掉,看时直接忽略吧

JUICY525 发表于 2011-10-13 16:42:02

直接在对象库中把该对象显示的那个温度值去掉,不行的话,直接删掉这个属性值再加一个可以唯一识别的属性试试

efficient 发表于 2011-10-13 17:03:36

如果这个温度不是测试的对象, 可以注释掉, 如果需要测这个 object,可以将温度换为其他不变的属性~~ 比如 name 啊这些

kingsunnyv 发表于 2011-10-13 17:30:39

我试过,包括直接将HDTunePro最大化后,直接使用GetVisibleText获取坐标,但是QTP只认这个温度的标签
我用spy++将HDTunePro的属性截了个图,其它的控件Caption都是空的

JUICY525 发表于 2011-10-13 18:02:34

就是这个标签,它应该有一个text的属性,属性值就是温度,把它删掉,再加一个属性,比如window id

softCore 发表于 2011-10-13 18:50:58

用描述性编程去写这句,或者参数化这个温度值,参数的值用regular expression。

kingsunnyv 发表于 2011-10-13 19:08:40

用描述性编程去写这句,或者参数化这个温度值,参数的值用regular expression。
softCore 发表于 2011-10-13 18:50 http://bbs.51testing.com/images/common/back.gif

这个......
不太懂啊,求指教

kingsunnyv 发表于 2011-10-13 19:10:55

就是这个标签,它应该有一个text的属性,属性值就是温度,把它删掉,再加一个属性,比如window id
JUICY525 发表于 2011-10-13 18:02 http://bbs.51testing.com/images/common/back.gif

这个Caption应该就是它的text属性了,这个HDTunePro软件是从网上下载的,我没找到也没法改它的属性,很郁闷

softCore 发表于 2011-10-13 20:28:57

回复 8# kingsunnyv

attachments/swfupload/1110132028a1d4dee22a4e5579.png

softCore 发表于 2011-10-13 20:29:38

按上面那个去做,就不会遇到不同的温度不识别的问题了。

kingsunnyv 发表于 2011-10-17 09:21:32

用正则表达式也试过了,还没不行,看来只能换一个硬盘测试工具了

kingsunnyv 发表于 2011-10-17 10:35:15

本帖最后由 kingsunnyv 于 2011-10-17 10:37 编辑

按上面那个去做,就不会遇到不同的温度不识别的问题了。
softCore 发表于 2011-10-13 20:29 http://bbs.51testing.com/images/common/back.gif


谢谢SoftCore大佬,己经用正则表达式搞定了,表达式的值用[\d][\d]或[\d]{2}

正则表达式威武,正则表达式荡漾

云层 发表于 2011-10-17 11:46:13

看了一下推荐你用这个更简单的方式来解决,修改关于wintable的识别方式

在我的win2003中,该控件的windows id是不变的12320,所以你修改一下就行了
描述性的写法是

Set newtable=description.Create()
newtable("window id").value=12320
newtable("nativeclass").value=SysTabControl3
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").Activate
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinTab(newtable).Select "信息"
Dialog("HD Tune 专业版 v3.00 - 硬盘工具").WinTab(newtable).Select "健康"

kingsunnyv 发表于 2011-10-17 18:01:52

看了一下推荐你用这个更简单的方式来解决,修改关于wintable的识别方式

在我的win2003中,该控件的windo ...
云层 发表于 2011-10-17 11:46 http://bbs.51testing.com/images/common/back.gif


    :)果然好使,受教了!!!
看来得提升一下工具的版本了

SexyCat_1113 发表于 2011-10-27 21:51:55

描述性编程受益匪浅,非常有用~
页: [1]
查看完整版本: 求助:QTP创建Object为可变对像时如何解决