51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 13160|回复: 35
打印 上一主题 下一主题

[求助] QTP虚拟对象的设置

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-8-28 17:07:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位XDJM们好。
想问大家2个问题。
问题1:
我现在测试的网页上有个FLASH对象,
想把它设置成虚拟对象,不知道怎么就是无法选择这个区域。


问题2:
怎么在qtp的代码中,写if -end  等语句,
用来测试当某个测试成功时,执行哪些程序,
失败时又要执行哪些程序.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2006-8-28 17:17:52 | 只看该作者

    我来回答第二个问题

    一个典型的判断结构是:
       If *** Then
        *******
      Else
       **********
      End If

    打开 QTP后,你按下F1, 搜索If 就可以看到关于判断的帮助了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2006-8-30 17:31:23 | 只看该作者
    这个我是知道的.
    但是我根据检测点来进行判断时,有时输入参数的时候.哪个检测点检测不到数据.
    例如:如果我是要检测一个错误的出现.但当我输入的参数本身是正确的话,那样检测
    点是检测不到预期结果的.这是程序就运行不下去了.虽然我写过if(a=false) then  .....
    但是,程序只执行到检测点就不再执行下去了,直接报运行时出错.

    想咨询下各位.这种情况下.应该怎么写代码让程序继续下去.
    先谢过!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2006-8-30 17:55:55 | 只看该作者
    on error resume next
    或者on error goto  ... 等
    具体查看QTP帮助文件
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2006-8-30 17:59:29 | 只看该作者
    回楼主,根据你的描述,我猜测可以用 下面的函数满足你的要求:
      Reporter.ReportEvent EventStatus, ReportStepName, Details [, in]

    Reporter.ReportEvent的具体用法 以在QTP的帮助里面有相信的说明。我另外给你举一个例子,这是我根据测试的需要用Reporter.ReportEvent写的一个函数:

       Sub HtmlCompare(runHtml, expectedHtml)

           Index = Instr(runHtml,expectedHtml)
             If  Index = "0" Then
                     Reporter.ReportEvent  micFail," HTML compared","Trouble"
              Else
                   Reporter.ReportEvent  micPass," HTML compared","OK"
           End If
                   
      End Sub

      这样你可以控制 测试结果什么时候 是Pass(如果实际的运行结果与预期结果相同),什么时候是 Fail(如果实际的运行结果与预期结果不同)。

    [ 本帖最后由 walker1020 于 2006-8-30 18:16 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2006-8-31 16:26:03 | 只看该作者
    怎么没有哪位同志对于我的第一个问题给出任何建议呢?
    难到大家都没有碰到过.
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2006-8-31 16:35:51 | 只看该作者
    原帖由 kittychen20 于 2006-8-31 16:26 发表
    怎么没有哪位同志对于我的第一个问题给出任何建议呢?
    难到大家都没有碰到过.


    请阅读下面的帖子: http://bbs.51testing.com/thread-42574-1-1.html
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2006-8-31 18:32:19 | 只看该作者
    原帖由 walker1020 于 2006-8-31 16:35 发表


    请阅读下面的帖子: http://bbs.51testing.com/thread-42574-1-1.html


    我现在是想用设置虚拟对象的这个办法,但是用鼠标怎么也选不中那个flash所在一大快区域.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2006-8-31 18:47:17 | 只看该作者
    原帖由 walker1020 于 2006-8-30 17:59 发表
    回楼主,根据你的描述,我猜测可以用 下面的函数满足你的要求:
      Reporter.ReportEvent EventStatus, ReportStepName, Details

    Reporter.ReportEvent的具体用法 以在QTP的帮助里面有相信的说明。我另外给你 ...


    斑竹可能理解错了我的意思.现在我不是要看是正确还是错误.而是希望能够继续运行下去.

    我的代码如下:



    Browser("办理").Page("照办理").WebEdit("zjhm").Set "12215222"
    Browser("办理").Page("办理").WebEdit("zjyxqYear").Set "2006"
    Browser("办理").Page("办理").WebEdit("zjyxqMonth").Set "12"
    Browser("办理").Page("办理").WebEdit("zjyxqDay").Set "02"
    Browser("办理").Page("办理").WebEdit("sfzhm").Set DataTable("sfzhm", dtGlobalSheet)
    Browser("办理").Page("办理").WebEdit("lxdh").Set "1212525236"
    Browser("办理").Page("办理").WebEdit("bgjzxm").Set "PO"
    Browser("办理").Page("办理").WebButton("提   交").Click
    a=Browser("办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Check(CheckPoint("您已经申请了此业务"))
    on error resume next
    if(a=false)  then
          Browser("办理_2").Page("办理").WebButton("确   认").Click
          Browser("办理_2").Page("系统").Sync
          Browser("办理_2").Close
          Browser("办理").Page("办理_2").Sync
    else
          Browser("办理").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
          Browser("办理").Page("办理").WebButton("放   弃").Click
          Browser("办理").Close
    end if

    我的目的是检测 Browser("办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Check(CheckPoint("您已经申请了此业务")),,是否会出现,

    现在的状况是,如过检测到了就顺利的执行下去.但是如果没有检测到,就报如下错误, 程序光标就定位在a=Browser("护照办理").Dialog......语句前面.
    本来想把图片贴上的,好象没有办法贴,那我就描述一下,

    RUNNER ERROR
       can not find the "您已经申请了此业务,业务编号是8000000484" object's parents

    "Microsoft Internet Explorer"(class dialog)  verify that parent properties match an object
    currently display in ypur application

    目前程序就是弹出这样一个对话框后,程序就停止了运行

    [ 本帖最后由 kittychen20 于 2006-9-1 16:55 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2006-8-31 18:49:09 | 只看该作者
    原帖由 yangkinki 于 2006-8-30 17:55 发表
    on error resume next
    或者on error goto  ... 等
    具体查看QTP帮助文件



    我用过这个语句,但不知道是用得不对,还是怎么拉,就是过不去
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2006-8-31 19:45:18 | 只看该作者
    根据你的描述和错误信息,你把

    1. a=Browser("护照办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Check(CheckPoint("您已经申请了此业务"))
    2. on error resume next
    3. if(a=false)  then
    4.       Browser("护照办理_2").Page("护照办理").WebButton("确   认").Click
    5.       Browser("护照办理_2").Page("上海出入境电子政务平台系统").Sync
    6.       Browser("护照办理_2").Close
    7.       Browser("护照办理").Page("护照办理_2").Sync
    8. else
    9.       Browser("护照办理").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    10.       Browser("护照办理").Page("护照办理").WebButton("放   弃").Click
    11.       Browser("护照办理").Close
    12. end if
    复制代码


    改为下面的代码试试:

    1. a= Browser("护照办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Exist
    2. If (a)   then
    3.        Browser("护照办理_2").Page("护照办理").WebButton("确   认").Click
    4.        Browser("护照办理_2").Page("上海出入境电子政务平台系统").Sync
    5.        Browser("护照办理_2").Close
    6.        Browser("护照办理").Page("护照办理_2").Sync
    7. Else
    8.       Browser("护照办理").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    9.       Browser("护照办理").Page("护照办理").WebButton("放   弃").Click
    10.       Browser("护照办理").Close
    11. End if
    复制代码

    [ 本帖最后由 walker1020 于 2006-8-31 19:47 编辑 ]
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2006-8-31 19:51:28 | 只看该作者

    说明

    Browser("护照办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Check(CheckPoint("您已经申请了此业务")) 是 QTP 增加 check point 自动生成的代码,它会把检查的结果 (Pass or Fail) 直接发送到 Test Report 里的。它检查的结果你是无法控制的,你也不能把这作为判断条件的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2006-9-1 16:52:20 | 只看该作者
    原帖由 walker1020 于 2006-8-31 19:51 发表
    Browser("护照办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Check(CheckPoint("您已经申请了此业务")) 是 QTP 增 ...



    呵呵.我看QTP的帮助是, 检测点返回是true 和 false,
    是可以根据他的返回值来判断做其他的操作的.
    不知道是不是理解有误.

    对于上面的问题已经解决,在此谢谢walker1020的大力支持.

    另外想问下:就是一个B/s的测试,页面上那么多的输入项,
    如果每个输入项都得检测输入的值正确与否,做这样的测试
    应该是一个怎样的思路呢?

    目前我是把每个输入框的检测单独录制下来,作为一个单独的action,再作些必要的代码修改,
    然后.依次调用这些ACTION,想问下,各位用了这么久有没有什么其他好的方式可以向我推荐.
    自己先谢谢了
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2006-9-1 17:41:48 | 只看该作者

    回复 kittychen20

    你在 #13 提到的问题要设计到测试用例。我以QTP做登陆测试为例来回答你吧。

    假如输入的用户名和密码有七种情况,就是测试计划中有这7个测试用例:

       1, 用户名和密码都是正确输入;
       2, 用户名和密码都为空
       3, 有用户名,无密码;
       4, 无用户名,有密码
       5, 正确用户名,不正确密码;
       6, 不正确的用户名,正确密码;
       7,  用户名包含非法字符;
       8,  密码中包含非法字符。

    当然,你还可以举出别的测试用例来。如果用QTP 进行测试,那么可以有两种处理方法:

    1, 对于每个测试用例,你输入测试用例中的数据,然后录制一个Action;然后修改 每个 Action的属性,让它成为 Reusable Action; 最后 写一个大的脚本, 它调用这 7个 Action。 以后 你只运行 这个大的脚本就可以了。
      这种方法的优点是思路清晰、简单,方便添加检查点;优点是简单,缺点是 太烦了,可能有许多重复操作。

    2, 对一个测试用例录制一个Action 后, 对这个Action 中用到的用户名和密码进行参数化。这样 这7个测试用例中的数据都被用到了。 这需要你写判断语句来处理 用户名和密码是非正常输入时的情况。需要注意的是 你要把 用户名和密码是非正常输入时出现 的错误信息要在对象库里面。这种方法的优点: 代码少,利于以后的维护;缺点是:实现此思路有一定的难度,需要你对QTP有深入的了解。

      具体操作 还是你自己去完成吧。

    [ 本帖最后由 walker1020 于 2006-9-13 10:53 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2006-9-1 17:48:08 | 只看该作者
    原帖由 walker1020 于 2006-8-31 19:51 发表
    Browser("护照办理").Dialog("Microsoft Internet Explorer").Static("您已经申请了此业务,业务编号是8000000484").Check(CheckPoint("您已经申请了此业务")) 是 QTP 增 ...

    qtp 中的检查点是可以作为判断条件的,walker1020 可以试一下!
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    16#
    发表于 2006-9-1 18:06:31 | 只看该作者
    原帖由 QA_BAY 于 2006-9-1 17:48 发表

    qtp 中的检查点是可以作为判断条件的,walker1020 可以试一下!


    谢谢! 我回去试试!
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    17#
    发表于 2006-9-1 18:38:32 | 只看该作者
    原帖由 QA_BAY 于 2006-9-1 17:48 发表

    qtp 中的检查点是可以作为判断条件的,walker1020 可以试一下!


    报告斑竹,俺已经试验了, 的确就像你说的那样,是可以 QTP 中的检查点是可以作为判断条件的。
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    18#
    发表于 2006-9-1 18:40:36 | 只看该作者

    To kittychen20

    我说的“qtp 中的检查点是不可以作为判断条件的” 是错误的。 本斑竹在此作深刻检讨,罚自己回去把 QTP Manual 看三遍。 呵呵!

    [ 本帖最后由 walker1020 于 2006-9-1 19:56 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
     楼主| 发表于 2006-9-2 09:43:09 | 只看该作者
    原帖由 walker1020 于 2006-9-1 18:40 发表
    我说的“qtp 中的检查点是不可以作为判断条件的” 是错误的。 本斑竹在此作深刻检讨,罚自己回去把 QTP Manual 看三遍。 呵呵!



    呵呵.人非圣贤,熟能无过,
    既然可以做为检测点的话,我又想请问你了,为什么当要检测的内容没有出现的时候,
    程序无法执行下去呢?  
    是我的设置上有问题,还是有其他的办法可以解决.

    另外对于那个exist的语句,当不存在的时候,好象执行得比较慢.速度不如存在的时候快.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    20#
    发表于 2006-9-2 11:54:55 | 只看该作者
    那要看你的条件是如何设置的了,
    if 检测成功 then
         ...
         else
         ...
    end if

    另外对于那个exist的语句,当不存在的时候,好象执行得比较慢.速度不如存在的时候快.
    这个是运行的问题,与存在不存在时运行的脚本有关系,如果脚本正确,那是正常的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-21 18:25 , Processed in 0.087248 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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