51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3119|回复: 10
打印 上一主题 下一主题

[原创] QTP识别IE进度条

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-4-21 17:08:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有谁能够做到通过IE进度条判断, 达到和Sync方法一样的效果.
自动等待到进度条完成了才执行下一条命令(实际情况好象是这个对象在加载完成后就消失了, 用exis判断感觉不是很好)



[ 本帖最后由 lhd85 于 2009-4-22 10:38 编辑 ]

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2009-4-21 17:23:50 | 只看该作者
对于web,Sync是很方便的东西啊,为什么还要用别的代替

另外对于bs的可以用WaitProperty,比较方便
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-4-21 17:28:31 | 只看该作者
1. 我能用sync当然用, 问题是用不了呀
2. waitproperty用来等待某个对象出现还可以, 用来处理对象消失好象就不大灵光了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-4-21 17:34:54 | 只看该作者
是消失了还是隐藏了
没有做过类似的。。。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-4-21 17:36:58 | 只看该作者
好象进度条那个对象是消失了, 如果隐藏了就好办了, 通过waitproperty就能搞定了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-4-22 09:41:30 | 只看该作者
有时候IE进度条在含有框架的页面里面,已经加载完成的页面,进度条却还在跑,所以你这样判断可能会有问题。我写过一个函数,是通过判断进度条前面的提示字符来判断的,还没完善,看是否能满足你的需要。

Function IE_WaitUntilLoadFinish(sec_time)
'IE等待状态栏提示完成,直到超过指定时间
    loadFinish="no"
    For i=1 To sec_time   '等待指定时间
       ieHint=Browser("title:=XXXXXX").WinStatusBar("regexpwndclass:=msctls_statusbar32").GetRoproperty("regexpwndtitle")
       If RegExpTest("正在打开网页",ieHint)>0 Then
           wait(1)
           ElseIf ieHint="网页上有错误" Then
               
               ElseIf  ieHint="完毕" Then
                   loadFinish="yes"
                   Exit For
       End If
    Next  
    IE_WaitUntilLoadFinish=loadFinish
    If loadFinish="no" Then
       captureFileName=ErrorCapture("系统加载过慢")         'ErrorCapture是自定义的全屏捕捉函数
       Reporter.ReportEvent micFail,"系统加载过慢,详见截图"&captureFileName&"","错误"   
    End If
End Function

RegExpTest这个函数是我修改帮助里面的同名函数而来,代码如下

Function RegExpTest(patrn, strng)
'返回匹配要求的字符串数量
   Dim regEx, Match, Matches   ' Create variable.
   Set regEx = New RegExp   ' Create regular expression.
   regEx.Pattern = patrn   ' Set pattern.
   regEx.IgnoreCase = True   ' Set case insensitivity.
   regEx.Global = True   ' Set global applicability.
   Set Matches = regEx.Execute(strng)   ' Execute search.
   RegExpTest = Matches.Count
   
End Function
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-4-22 09:49:45 | 只看该作者
用IE的document.readystate属性来判断,当页面全部加载完成时,readystate值是4,如果已经加载完成的页面,进度条却还在跑,那么readystate值是3,我在自己的测试项目上测试通过了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-4-22 10:08:49 | 只看该作者
试试这个:
Set IE=CreateObject("InternetExplorer.Application")
With IE
  .Navigate(Link)
  .Visible = 1
  .Width   = 1200
  .Height  = 800
End With

While IE.busy
        WScript.Sleep 1000
Wend
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-4-22 11:12:28 | 只看该作者

回复 7# 的帖子

这个好,有空我也试试,不过要是网页有错误呢?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-4-22 13:09:01 | 只看该作者

一般是两个一起用:

Do Until Not ie.Busy And ie.ReadyState = 4/READYSTATE_COMPLETE

0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete

但即使这样,也会发生错误判断
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-4-22 16:40:37 | 只看该作者
mark
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-27 05:52 , Processed in 0.072069 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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