51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: lijinshui
打印 上一主题 下一主题

[原创] 征集QTP的问题

[复制链接]

该用户从未签到

21#
发表于 2009-4-23 11:14:45 | 只看该作者

求助

QTP里使用循环


我在测试一个.net开发的软件
一个页面有30多个文本编辑框,我想在第一个编辑框输入1,第二个编辑框输入2,依次类推,qtp捕捉到得脚本如下
SwfWindow("报表系统").SwfEdit("NumberBox").Set "1"
SwfWindow("报表系统").SwfEdit("NumberBox_2").Set "2"
SwfWindow("报表系统").SwfEdit("NumberBox_3").Set "3"
我想用循环语句怎么写,我用描述性语言,写qtp每次都会提示下一个编辑框在对象仓库里没有
请问大侠谁能指教一下 !
帮我写一下该怎么写循环语句以及使用描述性编程语言,以下是我的截图 只有swfname path 右面的值NumberBox:f2变化,第一个文本框为NumberBox:f1
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2009-4-23 11:18:03 | 只看该作者
原帖由 walker1020 于 2009-4-22 12:23 发表
对于第三个参数Arguments,如何得到出错的那行脚本的所有参数? 如果有3个参数,通过判断,我知道第二个参数出错了,那么我需要改变这个参数的值,然后赋给它正确的值,脚本继续运行。这样的语句中脚本里面如何实现? ...


HI,很高兴今天早上看到你这个问题。我早上自己瞧了下。如果你需要了解的话可以这样做:
1,定义场景
设置的结果是任何错误。

2,测试对象与编写:(这个句子很明显有2个错误,1是HTML tag不是唯一的INPUT,因为有多个输入框。 2,set方法的错误)
browser("日志 - 51Testing软件测试网-中国软件测试人的精神").Page("日志 - 51Testing软件测试网-中国软件测试人的精神").WebEdit("html tag:=input").Set "123","123"

3,函数:
public function aa(Obj,Met,Arg,Res)
        msgbox typename(obj)        '显示对象
        msgbox met                  '显示这个方法
         For Each element In Arg   
         msgbox element             '罗列出所有的参数
         Next
         Arg(1)=null                '设置参数
        msgbox Res                 '显示结果

end function

4,场景引入设置:
1),在setting里面设置是每一步
2),在场景设置的是反复运行当前行(这个主要是为了一会应证我们的方法是否可行。)

5,开始运行,结果:
HTML edit
set
123
123
-2147352562


HTML edit
set
123
123
-2147352562
.....


6,结果分析:
1)在这里我们可以看到得是我们不能在场景里面自己设置参数(反复第2次的场景出错还是“123”,而没有实现我们的set null)
2)最后一个的ERR 是针对QTP自己的错误编码查询出来得。不过我们也同样没办法通过设置ERR.NUMBER来实现显示我们要显示的ERR descript
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2009-4-23 11:26:00 | 只看该作者
原帖由 cwglovecj 于 2009-4-23 11:14 发表
QTP里使用循环


我在测试一个.net开发的软件
一个页面有30多个文本编辑框,我想在第一个编辑框输入1,第二个编辑框输入2,依次类推,qtp捕捉到得脚本如下
SwfWindow("报表系统").SwfEdit("NumberBox").Set "1" ...



for i=0 to 30
   SwfWindow("报表系统").SwfEdit("name:=NumberBox.*"&i,"index:=0").Set i
next
回复 支持 反对

使用道具 举报

该用户从未签到

24#
 楼主| 发表于 2009-4-23 12:24:27 | 只看该作者

回复 23# 的帖子

object manage里面没有登录后面的纪录所以 用循环来处理好象有问题吧
我觉得还是用描述性好一些
回复 支持 反对

使用道具 举报

该用户从未签到

25#
 楼主| 发表于 2009-4-23 12:27:05 | 只看该作者
对了,我还有个想法就是
QTP能否实现多线程,这样就太好了
大家有没有好的办法
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2009-4-23 12:32:08 | 只看该作者
原帖由 lijinshui 于 2009-4-23 12:27 发表
对了,我还有个想法就是
QTP能否实现多线程,这样就太好了
大家有没有好的办法



可以变相支持。::yxiao:::
回复 支持 反对

使用道具 举报

该用户从未签到

27#
 楼主| 发表于 2009-4-23 12:38:45 | 只看该作者

回复 26# 的帖子

太好了,最好给个简单的列子 ,耽误您几分钟,造福千万家,呵呵 辛苦了
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2009-4-23 14:44:46 | 只看该作者
原帖由 假装不在 于 2009-4-23 12:32 发表



可以变相支持。::yxiao:::

举例说一下
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    29#
    发表于 2009-4-23 17:27:19 | 只看该作者
    本帖最后由 walker1020 于 2011-5-11 11:37 编辑

    非常感谢 假装不在 在22# 的回复。 我理解你的意思,你是希望通过Arg(1)=null 后,让QTP运行 Set "123" 而不再运行原来的Set "123","123" 。 这个还需要进一步的尝试和研究。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    30#
    发表于 2009-4-23 17:28:47 | 只看该作者

    To 假装不在

    非常感谢你提到的For Each element In Arg    方法,我可以这样先得到所有参数的值,然后根据需要对参数重新赋值。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2009-4-23 17:31:34 | 只看该作者
    原帖由 walker1020 于 2009-4-23 17:28 发表
    非常感谢你提到的For Each element In Arg    方法,我可以这样先得到所有参数的值,然后根据需要对参数重新赋值。


    其实早上我本来想用 .length属性然后做个for循环的,不过后来发现缺少对象。再typename才知道要用这个。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    32#
    发表于 2009-4-23 17:32:58 | 只看该作者
    对于最后一个结论,由于你设置了Recovery Scenario,本来出现的错误信息就不会出现了,所以通过ERR.NUMBER得到的是空值, Err.Description 也是空值。 我曾经这样尝试过。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    33#
    发表于 2009-4-23 17:36:01 | 只看该作者
    原帖由 假装不在 于 2009-4-23 17:31 发表


    其实早上我本来想用 .length属性然后做个for循环的,不过后来发现缺少对象。再typename才知道要用这个。


    提示一下,得到字符串的长度使用 Len函数, 不是 Length 函数
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2009-4-23 17:36:47 | 只看该作者
    ::yxiao:::
    对了,我突然想到一个方法可以做到。

    public function aa(Obj,Met,Arg,Res)
    if res=   then     '这里需要确定错误的类型是否是缺少对象或者方法参数不对等等类型再去对应操作
            select case met      '方法有set,click等等
            case :set
            object .set Arg(0)   '这里只是简单介绍这个如何重定义方法的参数而已。类似思想。
         .....
         .....
        ......
             end select
    end function


    自然,这个场景恢复需要设置成运行下一步。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2009-4-23 17:39:25 | 只看该作者
    原帖由 walker1020 于 2009-4-23 17:36 发表


    提示一下,得到字符串的长度使用 Len函数, 不是 Length 函数


    哈哈,我前面有个点哦,是属性(原来没这个属性)。不过用LEN也是提示缺少对象。因为类型不匹配。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
     楼主| 发表于 2009-4-25 12:40:58 | 只看该作者

    回复 4# 的帖子

    有人说关于监控异常QTP用Recovery Scenario来解决的,但感觉不是很好用。
    反应有点延迟。当窗口跳出来以后,QTP的程序仍然在继续执行,
    不知道大家的感觉咋样,如何处理得
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2009-4-26 10:59:00 | 只看该作者
    1个实例中,分了多个Action(如:action1、action2、action3),其中Action2有多个参数,单独执行此Action2时,为什么只能执行1次?怎么能执行多次、又能按其设定的参数值执行?

    谢谢解答
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2009-4-27 21:41:45 | 只看该作者
    就是 想要知道环境变量与一般的变量有什么不同~~定义它是要干啥的哦~~
    谢谢楼主~~困惑了~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
     楼主| 发表于 2009-4-28 08:48:58 | 只看该作者

    回复 37# 的帖子

    如果单纯想测试action2的话,可以在main action里面做个循环 来调用action2 不就可以了   for i = 0 to n
                             RunAction action2
                      Next
    不知道对不对,可以试试看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
     楼主| 发表于 2009-4-28 08:53:50 | 只看该作者

    回复 38# 的帖子

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 03:15 , Processed in 0.077067 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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