QTP 中的exist方法与do…loop的配合使用

技术流评论9,114 views阅读模式

使用QTP录制内容时经常会遇到如下问题:在前一个页面点击了‘提交’,需要到下一个页面查看提交后的结果,但是,有时由于系统反应迟缓或数据量太大的原因,导致在下一个页面尚未刷出之前,qtp就开始进行检查,这样,就会造成无法找到对象的错误,使程序意外终止。

其实,qtp内置了解决这种问题的一个语句‘exist’,用法如下:
Browser("Internet Explorer").Page("搜索引擎亲和度查询 (我要啦提供)").Link("SEO 数据").exist(3)

其中,括号里的3表示等待的时间,即三秒后查询名叫‘SEO数据’的连接是否存在,当然,这个方法要配合if then 一起使用才有效,如下:

if Browser("Internet Explorer").Page("搜索引擎亲和度查询 (我要啦提供)").Link("SEO 数据").exist(3) Then

Browser("Internet Explorer").Page("搜索引擎亲和度查询 (我要啦提供)").Link("SEO 数据").click

End if

说明:即等待三秒,查询连接是否存在,如果存在,则点击。

但是,这样仍然有一个问题,即exist里面的参数,如果我系统反应很慢,可能3秒也刷不出来,这样还是会报错,同时也有可能我系统时快时慢,有时候会用5秒,有时候只用1秒,如果全都设成5呢,则会浪费很多时间,但是全都设成1呢,又会导致程序出错。这可咋整捏?

没什么大不了,我有我奥妙!

哦,跑题了,唉,被广告洗脑啊!

答案是:使用do...until循环解决此问题。

Dim nTimeout '定义为等待的秒数

Dim bEventexist '定义为布尔型,以确定是否可以退出循环
nTimeout=1
bEventexist=false

Do

if Browser("Internet Explorer").Page("搜索引擎亲和度查询 (我要啦提供)").Link("SEO 数据").exist(3) Then

Browser("Internet Explorer").Page("搜索引擎亲和度查询 (我要啦提供)").Link("SEO 数据").click

bEventexist=true ‘如果存在且点击成功,把此数值赋值成‘是’
Else
nTimeout=nTimeout+1 '如果不存在,继续等待
End If
Loop until bEventexist=true or nTimeout>15 ‘循环退出条件为bEventexist值是‘是’,或等待时间过长

如此,即可做到智能化判断操作对象是否存在。

QTP中:使用VBS调用Excel截图功能 技术流

QTP中:使用VBS调用Excel截图功能

因为需要将测试截图存储于Execl中,但是网上找到的代码都是只能截一张图的,如果截多张会导致所有图都在第一排。而QTP自带的那个截图软件事实上只能得到一张图片,还得自己想办法将图导入到Excel。 搜...
QTP中OptionalStep的用法 技术流

QTP中OptionalStep的用法

在使用QTP时候,经常遇到的问题就是,在经过了某些操作之后,程序将出现一个岔口。A岔口将弹出窗口,而B岔口则无弹出窗口。 面对这样的问题,最常见的解决办法是使用Exist方法。判定窗口或控件是否存在,...
评论  0  访客  0

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定