您的位置:首页 > 编程语言 > Qt开发

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

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

  以下是几种常用check方法。

  1. [b]QTP自带Sync方法[/b]

  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可以自动生成代码,在此不再贴出示例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: