gily19821116 发表于 2009-6-1 13:15:46

如何用QTP对一个重复操作做迭代处理??

我用QTP录制了一个用软件打开图纸简单的脚本,其中有一个弹出框,反复弹出,每次都要单击“取消”按钮。
由于每次打开一幅图纸,这个弹出框重复出现的次数不同,所以要迭代的话,还要有判断条件。
我试着用参数化方式,发现不能参数化。因为是个对话框,不是文件之类的数据。
是不是要用脚本?如if。。else?
但是我对脚本编程不熟悉,会简单的c。
我想在专家视图里面编辑,不知道如何操作。请各位指教。
如图:我想把重复的步骤迭代,不可以参数化
file:///D:/我的文档/My%20Pictures/未命名.bmp

[ 本帖最后由 gily19821116 于 2009-6-1 13:17 编辑 ]

dreamever 发表于 2009-6-1 13:24:13

用一个while...wend循环即可,在循环里判断确定提示框是否出现,如果出现则执行点击操作,否则等待一秒;
还应该设置一个循环终止的条件,让脚本判断某个对象是否出现,如果出现则认为点击完了确定按钮,循环中止
关键在于while循环里的处理

blizzardlyk 发表于 2009-6-1 13:30:46

重复的步骤可以提取出来做个SUB 来调用,调用可以通过多种循环语句实现,如果需要判定,就需要确定判定条件是什么.看不到图...是个红叉

hk_ella 发表于 2009-6-1 13:52:36

回复 1# 的帖子

虽然看不到你的图,我不过我想说不管什么样的编程语言,编程的思想是万物归宗的,是相同的,也是很重要的
楼主有空的话可以稍微学习一下数据结构和软件工程之类的书籍

52042722 发表于 2009-6-1 14:01:04

2楼 是正解 哈哈

gily19821116 发表于 2009-6-1 14:54:50

回复2楼

我不知道判断条件那里如何写。
是要这样吗?
要迭代的语句:Window("ZWCAD 2009 专业版").Dialog("为文字样式指定字体: STANDARD").WinButton("取消").Click
迭代:
while    Window("ZWCAD 2009 专业版").Dialog("为文字样式指定字体: *")
      WinButton("取消").Click
wond。。。。。。。。。

还是要设置变量,赋值给变量???

请大侠们指教啊

dreamever 发表于 2009-6-1 15:09:25

你的代码两个问题,第一个问题是你没有判断那个取消按钮是否出现,只有在按钮出现后我们才应该执行点击操作,不然就容易造成脚本因为延迟找不到对象而失败;第二个问题你没有设置脚本循环的中止条件,也就是说,在什么情况下脚本不再持续点击取消按钮。

gily19821116 发表于 2009-6-2 12:51:26

我这句话哪里错了?为什么总提示无效的参数个数或参数值??

Dim i
i=0
While (i=Window("ZWCAD 2009 专业版").Dialog("nativeclass:=#32770").WinButton("text:=取消").GetTOProperties ())
Window("ZWCAD 2009 专业版").Dialog("nativeclass:=#32770").WinButton("取消").Click
wend

zhou840401 发表于 2009-6-2 13:00:49

可以判断dialog是否存在
用exist来判断就行了.

gily19821116 发表于 2009-6-2 15:59:55

我的这句话哪里错了?为什么说识别不到wincombobox控件?

Window("regexpwndclass:=ZWCADApplicationWindow ").Dialog("nativeclass:=#32770","text:=图形另存为").WinComboBox("nativeclass:=Combobox","attached text:=保存类型(&T):").Select "AutoCAD 2007 Drawing (dwg)"

dreamever 发表于 2009-6-2 17:30:28

原帖由 gily19821116 于 2009-6-2 12:51 发表 http://bbs.51testing.com/images/common/back.gif
Dim i
i=0
While (i=Window("ZWCAD 2009 专业版").Dialog("nativeclass:=#32770").WinButton("text:=取消").GetTOProperties ())
Window("ZWCAD 2009 专业版").Dialog("nativeclass:=#32770").WinButton("取消" ...
GetTOProperties 方法没有跟属性名作为参数.

saryzhang 发表于 2009-6-2 17:45:56

if   Window("ZWCAD 2009 专业版").Dialog("为文字样式指定字体: *") exist Then
      Window("ZWCAD 2009 专业版").Dialog("为文字样式指定字体: *").WinButton("取消").Click
end if
不知道这样可不可以。

[ 本帖最后由 saryzhang 于 2009-6-2 17:47 编辑 ]

fei.ge 发表于 2009-6-2 21:35:47

在可以预见提示框出现的时机的时候,楼主可以参考12楼的方法。

如果随即出现的提示框,楼主是否可以考虑场景恢复……

hsjzfling 发表于 2009-6-3 11:00:41

已知异常类型,而不确定异常出现的时间和次数,很明显用场景恢复最方便咯

gily19821116 发表于 2009-6-3 12:07:35

怎么在set处设置参数化?如何导入xls文件里面的数据?

Window("regexpwndclass:=ZWCADApplicationWindow").Dialog("text:=打开图","window id:=0").WinEdit("nativeclass:=Edit","window id:=1148").Set "f:\测试文件下载\dwg2\12-pm22.dwg"

set这个地方想要参数化,改怎么办?不能从keview里面参数化了。如何定义,可以把xls文件之类的文本文件导入?

dreamever 发表于 2009-6-3 12:12:48

定义一个数组,把要进行参数化的值先存在数组里,然后写一个for循环就可以了.

gily19821116 发表于 2009-6-4 11:26:35

用xls参数化,为什么总提示没有找到sheet1?

DataStr= Environment("TestDir")&"\data.xls"
DataTable.AddSheet("TestData")
datatable.ImportSheet DataStr,"Sheet1","TestData"
此句中
datatable.ImportSheet DataStr,"Sheet1","TestData"
在dubug里面提示:The DataTable.ImportSheet operation failed. The specified sheet does not exist
用run运行,提示:A general error occurred while importing sheet TestData from file E:\qtptest\复件 saveas\data.xls to sheet Sheet1.
Line (5): "datatable.ImportSheet DataStr,"Sheet1","TestData"".

我的xls表格设计http://bbs.51testing.com/post.php?action=reply&fid=69&tid=151053&extra=
D:\我的文档\My Pictures\看看.gif

[ 本帖最后由 gily19821116 于 2009-6-4 11:46 编辑 ]

gily19821116 发表于 2009-6-4 11:32:48

如何添加图片?

我在图片链接里面输入地址c:\我的文档\mypictures\*.gif >提交,不能显示图片

dreamever 发表于 2009-6-4 11:43:46

原帖由 gily19821116 于 2009-6-4 11:26 发表 http://bbs.51testing.com/images/common/back.gif
DataStr= Environment("TestDir")&"\data.xls"
DataTable.AddSheet("TestData")
datatable.ImportSheet DataStr,"Sheet1","TestData"
此句中
datatable.ImportSheet DataStr,"Sheet1","TestData"
在dubug里面提 ...
DEBUG信息里提示了,找不到指定的工作表名称,你看看excel里有没有"Sheet1"这个工作表吧.

gily19821116 发表于 2009-6-4 11:48:12

我有sheet1

我有sheet1,但是我不会在51testing上传图片,所以你看不见.怎么上传图片啊?
页: [1]
查看完整版本: 如何用QTP对一个重复操作做迭代处理??