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如果不指定也会使用上图中的设置。
3. 利用Dom和RegExp检索
这种方法利用Dom的createTextRange方法获得页面文本,再结合正则表达式进行检索,判断页面是否有预期的结果。
正则表达式可以参考QTP安装目录help下的VBScript56.CHM文档。
4. 利用Dom本身的查找
Dom的createTextRange也提供了查找的相应方法。如下代码。
以上代码是登陆163邮箱后检索页面是否有“草稿箱”文本并选中文本。
5. 利用readyState判断页面当前所处状态
利用页面的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可以自动生成代码,在此不再贴出示例。
以下是几种常用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 |
这种方法利用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 |
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 |
5. 利用readyState判断页面当前所处状态
利用页面的readyState属性判断当前页面所处状态。
SystemUtil.Run "iexplore.exe", "http://www.sina.com.cn/" msgbox Browser("新浪首页").Page("新浪首页").Object.readyState |
可以通过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可以自动生成代码,在此不再贴出示例。
相关文章推荐
- PHP ajax 异步执行不等待执行结果的处理方法
- PHP ajax 异步执行不等待执行结果的处理方法
- 【原创】工控机安装Ubuntu系统,直接断电然后再上电时,系统停留在启动项位置等待选择的处理方法
- oracle 常见等待事件及处理方法
- oracle 常见等待事件及处理方法
- 在controller中返回ajax处理后结果,页面显示xmlObjectDocument的解决方法
- wait等待事件及其处理方法
- 框架之Struts2 处理结果类型、struts.xml标签属性及验证输入的方式
- 定位排查工作流的计算结果数据量不符合预期的方法
- Hibernate-多表关联查询结果的处理方法
- ORACLE-SQL:排序防止NULL影响排序结果的处理方法
- 【ORA-02049】超时分布式事务处理等待锁 解决方法
- java学习脚印:xml中空白文本结点(whitespace TextNode)处理及验证方法
- Meter 上传apk文件后,何时,如何调用服务器的解析方法 与结果处理
- Selenium等待元素的处理方法
- .net调用别人的http页面,返回结果,url中有中文的处理,get和post两种方法
- 模态窗口阻塞程序等待后台处理结果
- 浅析RxJava处理复杂表单验证问题的方法
- c# 调用外包程序 等待处理完成结果
- java中等待一些线程执行完之后,再去执行别的方法(后者需要使用前者返回的结果)