51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4032|回复: 15
打印 上一主题 下一主题

[原创] 关于QTP的问题,应如何解决?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-3-15 13:41:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Dim i '定义行号
Dim duqushiji'定义一个读取实际提示信息的变量
Dim duquyuqi'定义一个读取预期提示信息的变量
For i=1 to datatable.GetSheet("Action1").getrowcount
Browser("江苏先联信息系统有限公司").Page("江苏先联信息系统有限公司").Link("玉林测试环境").Click
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37").WebEdit("doctor.user_name").Set DataTable("yh", dtLocalSheet)
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37_3").Output CheckPoint("先联电子病历系统 V1.37")
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37").WebEdit("doctor.user_password").Click 0
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37").WebEdit("doctor.user_password").SetSecure DataTable("mm", dtLocalSheet)
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37").WebElement("进入").Click
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37_3").Output CheckPoint("先联电子病历系统 V1.37_3")
duqushiji=datatable("shijishuchuzhi",dtlocalsheet)
duquyuqi=datatable("yuqizhi",dtlocalsheet)
if duqushiji<>duquyuqi Then
reporter.ReportEvent1,"先联电子病历系统 V1.37","预期值为:"+duquyuqi+",实际值为:"+duqushiji
End If
datatable.GetSheet("Action1").setnextrow
Next
'以下是已经登录系统的页面
Browser("先联电子病历系统 V1.37").Page("先联EMR").Frame("topFrame").Image("退出").Click
Browser("先联电子病历系统 V1.37").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37_2").Sync
Browser("先联电子病历系统 V1.37").Close
Browser("江苏先联信息系统有限公司").Page("江苏先联信息系统有限公司").Sync
Browser("江苏先联信息系统有限公司").Close
这是一个对登录系统的测试流程,代码在运行时在会提示reporter.ReportEvent1,对象不支持此属性或方法,请问这是什么原因?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2011-3-15 13:42:13 | 只看该作者
这个问题应如何解决呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-3-15 13:42:37 | 只看该作者
我是初学QTP,希望各位高手帮帮忙
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2011-3-15 14:26:12 | 只看该作者
Reporter并没有reportevent1的方法

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2011-3-15 15:28:44 | 只看该作者
回复 4# 风雪夜归人


    看书上说,1代表的是错误
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2011-3-15 16:14:31 | 只看该作者
    回复 5# 804845430


    LZ所写的Reportevent与1之间少了个空格吧, 1代表Fail, LZ要细心点哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-3-15 17:23:15 | 只看该作者
    回复 5# 804845430

    不解释
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2011-3-16 14:05:22 | 只看该作者
    回复  804845430


    LZ所写的Reportevent与1之间少了个空格吧, 1代表Fail, LZ要细心点哈
    shingo0109 发表于 2011-3-15 16:14


    谢谢你,问题解决了 呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2011-3-16 14:14:40 | 只看该作者
    回复 6# shingo0109


        你好,我还有个问题不明白,就是我设计了一个登录系统的测试功能,刚开始在录制流程的时候使用正确的用户名和密码进入并退出的,当我在参数化时,将空用户名和空密码放在了第一行,并编写了上面的脚本,当回放提示“请输入用户名”时,还在点击进入按钮,就会弹出Object Error,这个问题要怎么解决呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    10#
    发表于 2011-3-16 15:16:35 | 只看该作者
    回复 9# 804845430


    LZ要么在for循环里面加个if判断, 如果取到的用户名DataTable("yh", dtLocalSheet)或者取到的密码DataTable("mm", dtLocalSheet)为空的话, 就退出for循环
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    11#
    发表于 2011-3-16 15:20:17 | 只看该作者
    或者根据错误提示信息来判断,如果提示信息“请输入用户名”存在的话, 就退出for循环, 然后继续下一行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2011-3-16 21:20:52 | 只看该作者
    或者根据错误提示信息来判断,如果提示信息“请输入用户名”存在的话, 就退出for循环, 然后继续下一行
    shingo0109 发表于 2011-3-16 15:20



        但是这个登录测试点的设计考虑很多种,比如帐号和密码都为空或者其一为空,或者一个正确一个错误,或者两个都错误;这么多的测试点都要去进行判断退出for循环吗?有简单点的方法吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-2-4 09:49
  • 签到天数: 145 天

    连续签到: 1 天

    [LV.7]测试师长

    13#
    发表于 2011-3-17 10:05:50 | 只看该作者
    lz你好,不知道第二个问题你解决没有。我说下我的想法。
    录制正确输入的情况,是没有“请输入用户名”窗口弹出的,所以再用这个脚本跑“错误”的情况当然是不通的。所以我们说录制脚本是第一步,增强脚本是第二步。
    可以用if判断,我理解你说的情况是当输入二者皆为空时,无需点击“进入”按钮,系统也会弹出“请输入用户名”。如果是这种情况,再输入用户名和密码后,用if检测有无错误窗口弹出(先不点击“进入”)。如果有,点击错误窗口的“确定”,反之,再点进入。
    With Browser("先联电子病历系统 V1.37").Page("先联电子病历系统 V1.37")
    .WebEdit("doctor.user_name").Set DataTable("yh", dtLocalSheet)
    .Output CheckPoint("先联电子病历系统 V1.37")
    .WebEdit("doctor.user_password").Click 0
    .WebEdit("doctor.user_password").SetSecure DataTable("mm", dtLocalSheet)
    if .webtable("错误窗口").exist then  '伪代码, 错误窗口包括各种组合情况的提示信息
      .webbutton("确定").click
    else
       .WebElement("进入").Click
    end if
    end with
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    14#
    发表于 2011-3-17 10:51:22 | 只看该作者
    回复 12# 804845430


    由于用户名错误或者密码错误肯定要根据系统的提示信息来判断的, 不然无法知晓输入是否错误,这些if判断没法简化了。要么把判断用户名和密码不为空的情况设为先前条件,我简单写了下, LZ根据实际情况修改:
    if 用户名="' or 密码="" Then
        Reporter.ReportEvent micFail, "检查用户名或密码是否为空", "用户名或密码为空"
        Exit For
    else
        .WebEdit("doctor.user_name").Set 用户名
       .WebEdit("doctor.user_password").SetSecure 密码
       .WebElement("进入").Click      
       if .WebElement("innertext:=用户名不存在").Exist(0) Then
            Reporter.ReportEvent micFail, "检查用户名是否正确", "用户名不存在"
        Elseif .WebElement("innertext:=密码错误").Exist(0) Then
            Reporter.ReportEvent micFail, "检查密码是否正确", "密码错误"
        Else
               '进入之后进行后面的操作
       End If
    End If
    如果错误提示信息是pop-up的情况, 还需添加点击的操作
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2011-3-19 10:59:59 | 只看该作者
    回复 13# shanfeng1419


        谢谢你的回答
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2011-3-19 11:00:37 | 只看该作者
    回复  804845430


    由于用户名错误或者密码错误肯定要根据系统的提示信息来判断的, 不然无法知晓输入是 ...
    shingo0109 发表于 2011-3-17 10:51



        好难懂,我目前还是个初学者,呜呜
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-25 02:34 , Processed in 0.085059 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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