51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 12118|回复: 37
打印 上一主题 下一主题

[原创] QTP中使用 Exist 的问题

[复制链接]
  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-6-9 10:52:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    现在测一个Web程序,现在碰到一个很神奇的问题。sdlkfj4


        我上传一个文件,上传过程中有进度条。上传完成进度条就消失了。


    我就用QTP去判断,直要有进度条就继续等待:

    do Until 进度条.exist(1) = False
        wait(1)
    loop

    后来发现程序一直都在等待,上传完了还在等待。
    Debug才发现   进度条.exist(1) = True 一直都成立。


    原因:进度条和上面的文字只是一个动画,开始上传就为可见;上传完成即为不可见。但一直都是存在的!

    所以,QTP简直太“智能”了!sdlkfj5

       但我使用 进度条.object 方法 来调用它的 Visible 属性 居然也一直都为True。
       获取运行时属性也为True。


    不知是QTP自身的问题,还是我哪里思路有问题?sdlkfj8 sdlkfj8 sdlkfj8


       目前有办法可以解决:不去识别进度条,去识别上传列表。   
    (可以解决部分问题,但列表数据多之后脚本就不好写)

       能识别到进度条 是最好的解决办法, 如何去识别进度条呢?

    本帖子中包含更多资源

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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    38#
    发表于 2010-4-6 14:40:01 | 只看该作者
    我也遇到相同问题。先回复,再看看各位的回复。。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2007-8-18 21:19:39 | 只看该作者
    这种问题遇到是很正常的,但是遇到后,就没必要跟自己过不去,想办法绕过去!搞自动化要讲究效率!

    不是有文字“正在上传请稍等”嘛,判断这个文字是否存在和显示,应该就可以了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
    发表于 2007-8-18 18:15:49 | 只看该作者

    回复 #1 higkoo 的帖子

    好贴! 收藏
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    35#
     楼主| 发表于 2007-7-30 13:03:10 | 只看该作者
    原帖由 surlary 于 2007-7-30 10:33 发表
    用Browser("Browser").Page("age").Sync试过吗



    没有喔

    下次再测试这个项目的时候再试试……     sdlkfj3
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2007-7-30 10:33:34 | 只看该作者
    用Browser("Browser").Page("Page").Sync试过吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    33#
     楼主| 发表于 2007-7-28 11:13:38 | 只看该作者

    回复 #31 garyyes 的帖子

    这么简单我还用得着上来发贴吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2007-7-18 21:37:11 | 只看该作者

    回复 #1 higkoo 的帖子

    支持!!!!!!!!!!!!!!!!!!!!!!!!!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2007-7-17 00:59:30 | 只看该作者
    原帖由 higkoo 于 2007-6-9 10:52 发表
    现在测一个Web程序,现在碰到一个很神奇的问题。sdlkfj4


        我上传一个文件,上传过程中有进度条。上传完成进度条就消失了。


    我就用QTP去判断,直要有进度条就继续等待:

    do Until 进度条.exi ...


    很容易解决啊,只要改改代码就行:

    do Until 进度条.exist(1) = true and 进度条.getRoproperty("visible") = true
               wait(1)
    loop
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
    发表于 2007-7-16 14:29:13 | 只看该作者
    exist 很有用的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
    发表于 2007-6-15 13:45:42 | 只看该作者
    还是试试用SPY抓属性值比较下吧~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    28#
     楼主| 发表于 2007-6-11 16:08:45 | 只看该作者

    哈哈

    问题已解决:

    With .Window("-- 网页对话框")
            With .Page("age").Frame("myFrame")

                    .WebButton("上传").Click
                    m=.WebElement("WebTable").Object.all.process.style.display

                            Do until m="none" ' else m="block'"
                                    wait(1)
                                    m=""& .WebElement("WebTable").Object.all.process.style.display
                            Loop
            End With
    End With

    多谢 “henhenchen”兄的提示!  顺腾摸到瓜   sdlkfj3
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    27#
     楼主| 发表于 2007-6-11 15:08:23 | 只看该作者
    msgbox   .WebElement("WebTable").Object.getElementsByTagName("TD").style.display


    对象不支持此属性或方法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    26#
     楼主| 发表于 2007-6-11 15:00:21 | 只看该作者

    回复 #25 higkoo 的帖子

    document.all.process.style.display = 'block';//显示进度条


    <%@ include file="/process.jsp" %> // 加载进度条

    <div id='process' style="display:none">正在上传请稍等...<marquee direction="right"> //隐藏进度条
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    25#
     楼主| 发表于 2007-6-11 13:11:17 | 只看该作者

    很有启发

    原帖由 henhenchen 于 2007-6-11 12:39 发表
    Browser("Find Flights, Vacation").Page("Find Flights, Vacation").object.getElementById("returnDateRow").style.visibility



    很有启发,我决定,想办法找他们要源代码。

    [ 本帖最后由 higkoo 于 2007-6-11 13:16 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24#
    发表于 2007-6-11 12:39:16 | 只看该作者

    回复 #23 higkoo 的帖子

    被禁用了右键,看不到源代码. 是个大问题. 给你转个以前的贴子.希望有帮助

    http://bbs.51testing.com/thread-73344-1-1.html
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    23#
     楼主| 发表于 2007-6-11 12:16:33 | 只看该作者
    QUOTE:
    原帖由 gotolife 于 2007-6-10 22:28 发表

    把正常情况下,即该动画不可见的时候,在动画位置进行截图
    点击上传后,可以延迟1秒
    然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截 ...  

    现在的难点就是 不能确定 “若该位置的动画不可见时”, 不知它何时消失,

    如果我知道它消失了(文件上传完了),就可以直接进行下一步操作了。

    这个窗口是弹出式的,被禁用了右键,看不到源代码。sdlkfj7
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    22#
     楼主| 发表于 2007-6-11 12:13:43 | 只看该作者

    同步点也不行

    原帖由 gotolife 于 2007-6-10 22:28 发表

    把正常情况下,即该动画不可见的时候,在动画位置进行截图
    点击上传后,可以延迟1秒
    然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截 ...  


      这个图片是个动画,即使使用了wait(1),下次在wait(1)时,进度条的位置也不一定一样。

      和用图片检查点检查动画一样,


    原帖由 kursk 于 2007-6-11 11:23 发表



    同步点waitproprety 不能解决这个问题——如果网页元素的属性不发生改变

    但是我有点想不通,等待图片从不显示到显示,那么它的visable的属性一定发生了改变,LZ是不是应该询问开发工程师这段代码的问题 ...


    同步点结果和使用Wait做循环一样,唯一的好处就是有最长的时间限制,不会一直等下去。
    郁闷的就是visible为什么不变???

    开发工程师说 “只有一行代码,就是 点了上传就 可见,上传完成就 不可见。”
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    21#
     楼主| 发表于 2007-6-11 11:56:59 | 只看该作者

    其它属性我也试过了

    GetTOProperty
    属性名
    描述
    abs_x
    对象相对于屏幕的绝对 X 坐标(左侧)(以像素为单位)。
    abs_y
    对象相对于屏幕的绝对 Y 坐标(顶部)(以像素为单位)。
    class
    对象的类(className 属性)。
    height
    对象的高度(以像素为单位)。
    html id
    对象的 HTML 标识符。
    html tag
    对象的 HTML 标记。
    index
    QuickTest 分配给对象的顺序标识符,用于指明对象在代码中显示时相对于带有另外的相同描述的其他对象的顺序。此属性不能与 GetROProperty 一起使用。
    innerhtml
    对象的开始标记和结束标记之间包含的 HTML 代码。
    innertext
    包含在对象的开始标记和结束标记之间的文本。
    location
    QuickTest 分配给对象的顺序标识符,用于指明对象在窗口、帧或对话框中的显示位置。按照从上到下、从左到右的顺序来分配值。此属性不能与 GetROProperty 一起使用。
    outerhtml
    对象的 HTML 代码及其内容。仅在 Internet Explorer 中受支持。
    outertext
    对象的文本。仅在 Internet Explorer 中受支持。
    RepositoryName
    对象存储在对象库中时的名称。
    注意:此属性仅当在加载了 Siebel 加载项的 Siebel 测试自动化环境中工作时相关。
    SiebelObjType
    HTML 元素表示的对象类型。
    注意:此属性仅当在加载了 Siebel 加载项的 Siebel 测试自动化环境中工作时相关。
    UIName
    对象显示在用户界面中的名称。
    注意:此属性仅当在加载了 Siebel 加载项的 Siebel 测试自动化环境中工作时相关。
    visible
    指明此对象是否可见。
    注意:只有 True 和 False 是该属性的有效值。1 和 0 是无效值。
    width
    对象的宽度(以像素为单位)。
    x
    对象相对于帧的 X 坐标(左侧)(以像素为单位)。
    y
    对象相对于帧的 Y 坐标(顶部)(以像素为单位)。

    除了上面列出的属性,用其它属性,程序都报错“无效的过程调用或参数”。

       sdlkfj9  彻底被这个问题征服了……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    20#
     楼主| 发表于 2007-6-11 11:53:55 | 只看该作者

    被这个问题给征服了

    我尝试了用SPY,发现属性都是一样的。
    而且运行过程,我使用脚本记录它的属性:
    *********************************************************************************
    With .Page("Page").Frame("myFrame")
    x="html tag"
    y="html id"
    z="innertext"
    l="visible"
        a = .WebElement("WebTable").GetROProperty (""&x)
        b = .WebElement("WebTable").GetROProperty (""&y)
        c =  .WebElement("WebTable").GetROProperty (""&z)
        d =  .WebElement("WebTable").GetROProperty (""&l)
    '在点击“上传”按钮前,把控件的属性显示在报告里
    reporter.ReportEvent 0,"点击前", x&"="& a &chr(13)&y&"="& b & chr(13) &z &"="& c&chr(13)&l&"="& d
         .WebButton("上传").Click
       wait(1)
        a = .WebElement("WebTable").GetROProperty (""&x)
        b = .WebElement("WebTable").GetROProperty (""&y)
        c =  .WebElement("WebTable").GetROProperty (""&z)
        d =  .WebElement("WebTable").GetROProperty (""&l)
    '在点击“上传”按钮后,把控件的属性显示在报告里
    reporter.ReportEvent 0,"点击后", x&"="& a &chr(13)&y&"="& b & chr(13) &z &"="& c&chr(13)&l&"="& d  
    End With
    *********************************************************************************
    运行完成,查看报告:

    点击前 html tag=TD
    html id=
    innertext=正在上传请稍等...
    visible=True
    Passed 2007-6-11 - 11:27:35

    点击后 html tag=TD
    html id=
    innertext=正在上传请稍等...
    visible=True
    Passed 2007-6-11 - 11:27:40

    奇怪的是,点击前明明是看不见的,visible应该为false才对。偏偏为true,其它可识别的属性值完全一样。
    真是没办法了……

    [ 本帖最后由 higkoo 于 2007-6-11 13:03 编辑 ]
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 11:36 , Processed in 0.089167 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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