QTP验证达到预期结果而等待的处理方法

写脚本的时候,当系统发生页面跳转或是当前操作有返回结果需要等待的时候,需要对是否到达预期页面或预期结果是否返现进行验证,否则很容易出现脚本运行失败的情况。

  以下是几种常用check方法。

  1. QTP自带Sync方法

  SystemUtil.Run "iexplore.exe", "http://www.google.com"

  Browser("Google").Page("Google").Sync  

  2. WaitProperty 方法

  这个也是支持的一种方法,等待指定对象属性获得指定值或超出指定超时后再继续下一步。原型object.WaitProperty (PropertyName, PropertyValue, [lTimeOut]),帮助文档对各个参数有详细说明。TimeOut如果不指定也会使用上图中的设置。

  If Browser("百度一下,你就知道").Page("百度一下,你就知道").WaitProperty("title","百度一下,你就知道",1000) Then

    '后续操作

  End If

  3. 利用Dom和RegExp检索

  这种方法利用Dom的createTextRange方法获得页面文本,再结合正则表达式进行检索,判断页面是否有预期的结果。

set a=Browser("百度一下,你就知道").Page("百度一下,你就知道").Object.body.createTextRange()

c=Check (a,"知 道")

msgbox c
 

'检索函数

'Obj  检索的对象

'checkStr  检索的字符串

Public Function Check(ByRef Obj, ByRef checkStr)

              b=Obj.text

              Set regEx=new RegExp

              regEx.Pattern=checkStr   '设置需要查找的字符串

              regEx.IgnoreCase=true

              regEx.Global=true

              Check = regEx.Test(b)    '在页面的文本中检索预期值,返回布尔值

End Function

  正则表达式可以参考QTP安装目录help下的VBScript56.CHM文档。

     4. 利用Dom本身的查找

  Dom的createTextRange也提供了查找的相应方法。如下代码。

  set a=Browser("网易电子邮箱 - 极速3.0正式版").Page("网易电子邮箱 - 极速3.0正式版").Frame("index").Object.body.createTextRange

  msgbox Check (a,"草稿箱")

  Public Function Check(ByRef Obj, ByRef checkStr)

  found = Obj.findText(checkStr)

  Obj.select

  Check=found

  End Function

  以上代码是登陆163邮箱后检索页面是否有“草稿箱”文本并选中文本。

  5. 利用readyState判断页面当前所处状态

  利用页面的readyState属性判断当前页面所处状态。

  SystemUtil.Run "iexplore.exe", "http://www.sina.com.cn/"

  msgbox Browser("新浪首页").Page("新浪首页").Object.readyState

  上图是打开sina首页,正在打开的状态及QTP输出的readySta值。如果首页已完全打开返回的值应为Complete。

  可以通过readyState返回的状态值,判断进行后续操作。readyState的可能值如下(中英):

  There are five possible values for readyState:

  0 (Uninitialized): The object has been created but the open() method hasn’t been called.

  1 (Loading): The open() method has been called but the request hasn’t been sent.

  2 (Loaded): The request has been sent.

  3 (Interactive). A partial response has been received.

  4 (Complete): All data has been received and the connection has been closed.

  readyState有五种可能的值:

  0 (未初始化): (xml(标准化越来越近了)HttpRequest)对象已经创建,但还没有调用open()方法。

  1 (载入):已经调用open() 方法,但尚未发送请求。

  2 (载入完成): 请求已经发送完成。

  3 (交互):可以接收到部分响应数据。

  4 (完成):已经接收到了全部数据,并且连接已经关闭。

  6. 利用QTP自带的检查点

  这种方式就是在脚本中插入Checkpoint进行相应检查,包括文本、图片、对象属性等,在录制过程或是录制完毕选择Insert—Checkpoint按提示操作即可,QTP会自动生成代码。由于QTP可以自动生成代码,在此不再贴出示例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值