51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5760|回复: 19
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-6-1 13:15:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用QTP录制了一个用软件打开图纸简单的脚本,其中有一个弹出框,反复弹出,每次都要单击“取消”按钮。
由于每次打开一幅图纸,这个弹出框重复出现的次数不同,所以要迭代的话,还要有判断条件。
我试着用参数化方式,发现不能参数化。因为是个对话框,不是文件之类的数据。
是不是要用脚本?如if。。else?
但是我对脚本编程不熟悉,会简单的c。
我想在专家视图里面编辑,不知道如何操作。请各位指教。
如图:我想把重复的步骤迭代,不可以参数化
file:///D:/我的文档/My%20Pictures/未命名.bmp

[ 本帖最后由 gily19821116 于 2009-6-1 13:17 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-6-1 13:24:13 | 只看该作者
用一个while...wend循环即可,在循环里判断确定提示框是否出现,如果出现则执行点击操作,否则等待一秒;
还应该设置一个循环终止的条件,让脚本判断某个对象是否出现,如果出现则认为点击完了确定按钮,循环中止
关键在于while循环里的处理
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-6-1 13:30:46 | 只看该作者
重复的步骤可以提取出来做个SUB 来调用,调用可以通过多种循环语句实现,如果需要判定,就需要确定判定条件是什么.看不到图...是个红叉
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-6-1 13:52:36 | 只看该作者

回复 1# 的帖子

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

使用道具 举报

该用户从未签到

5#
发表于 2009-6-1 14:01:04 | 只看该作者
2楼 是正解 哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2009-6-1 14:54:50 | 只看该作者

回复2楼

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

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

请大侠们指教啊
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-6-1 15:09:25 | 只看该作者
你的代码两个问题,第一个问题是你没有判断那个取消按钮是否出现,只有在按钮出现后我们才应该执行点击操作,不然就容易造成脚本因为延迟找不到对象而失败;第二个问题你没有设置脚本循环的中止条件,也就是说,在什么情况下脚本不再持续点击取消按钮。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-6-2 13:00:49 | 只看该作者
可以判断dialog是否存在
用exist来判断就行了.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 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)"
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-6-2 17:30:28 | 只看该作者
原帖由 gily19821116 于 2009-6-2 12:51 发表
Dim i
i=0
While (i=Window("ZWCAD 2009 专业版").Dialog("nativeclass:=#32770").WinButton("text:=取消").GetTOProperties ())
Window("ZWCAD 2009 专业版").Dialog("nativeclass:=#32770").WinButton("取消" ...

GetTOProperties 方法没有跟属性名作为参数.
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 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 编辑 ]
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2015-9-21 13:50
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    13#
    发表于 2009-6-2 21:35:47 | 只看该作者
    在可以预见提示框出现的时机的时候,楼主可以参考12楼的方法。

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

    使用道具 举报

    该用户从未签到

    14#
    发表于 2009-6-3 11:00:41 | 只看该作者
    已知异常类型,而不确定异常出现的时间和次数,很明显用场景恢复最方便咯
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 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文件之类的文本文件导入?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2009-6-3 12:12:48 | 只看该作者
    定义一个数组,把要进行参数化的值先存在数组里,然后写一个for循环就可以了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 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 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2009-6-4 11:32:48 | 只看该作者

    如何添加图片?

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

    使用道具 举报

    该用户从未签到

    19#
    发表于 2009-6-4 11:43:46 | 只看该作者
    原帖由 gily19821116 于 2009-6-4 11:26 发表
    DataStr= Environment("TestDir")&"\data.xls"
    DataTable.AddSheet("TestData")
    datatable.ImportSheet DataStr,"Sheet1","TestData"
    此句中
    datatable.ImportSheet DataStr,"Sheet1","TestData"
    在dubug里面提 ...

    DEBUG信息里提示了,找不到指定的工作表名称,你看看excel里有没有"Sheet1"这个工作表吧.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2009-6-4 11:48:12 | 只看该作者

    我有sheet1

    我有sheet1,但是我不会在51testing上传图片,所以你看不见.怎么上传图片啊?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 15:47 , Processed in 0.069157 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表