QTP中与时间同步点:Sync、Wait、Waitproperty、Exist

上传人:平*** 文档编号:12791227 上传时间:2017-10-21 格式:DOC 页数:7 大小:41KB
返回 下载 相关 举报
QTP中与时间同步点:Sync、Wait、Waitproperty、Exist_第1页
第1页 / 共7页
QTP中与时间同步点:Sync、Wait、Waitproperty、Exist_第2页
第2页 / 共7页
QTP中与时间同步点:Sync、Wait、Waitproperty、Exist_第3页
第3页 / 共7页
QTP中与时间同步点:Sync、Wait、Waitproperty、Exist_第4页
第4页 / 共7页
QTP中与时间同步点:Sync、Wait、Waitproperty、Exist_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《QTP中与时间同步点:Sync、Wait、Waitproperty、Exist》由会员分享,可在线阅读,更多相关《QTP中与时间同步点:Sync、Wait、Waitproperty、Exist(7页珍藏版)》请在金锄头文库上搜索。

1、QTP 中与时间同步点:Sync、Wait、Waitproperty、Existhttp:/ QTP 是很重要的一部分。常用的同步点方法有以下几种:1)Sync 方法;2)WaitProperty 方法;3)Wait 方法;4)Exist 方法;1)Sync只有 browse 和 page 对象具有 Sync 方法,其它的对象都不具有该方法,那么 browse.sync 和 page.sync 有什么区别呢?browse.sync 表示等待浏览器加载完成后进行下一步操作,浏览器加载完成的标志是浏览器显示左下角显示完成字样。page.sync 表示页面中所有的元素都已加载完成后,进入下一步的操作

2、。语法:object.Sync示例:Sub Sync_Example()The following example uses the Sync method to wait for theMercury Tours page to synchronize.before performing the next operation.Browser(Mercury Tours).page(Mercury Tours).SyncEnd Sub2)WaitProperty等待指定对象属性获得指定值或超出指定超时后再继续下一步。如果属性获得该值则返回 TRUE,如果在属性获得该值之前发生超时则返回 FAL

3、SE(注意:FALSE 返回值不表示步骤失败)语法:object.WaitProperty (PropertyName, PropertyValue, lTimeOut)示例 1:Sub WaitProperty_Example()The following example uses the WaitProperty method to wait for theAll kind of links readyState to be complete or for4 seconds (4000 milliseconds) to pass, whichever comes first.If the

4、link achieves this value before 4000 milliseconds pass,QuickTest clicks the link.If Browser(index).Page(index).Link(All kind of).WaitProperty(attribute/readyState, complete, 4000) ThenBrowser(index).Page(index).Link(All kind of).ClickEnd IfEnd Sub示例 2:Sub WaitProperty_Example()The following example

5、uses the WaitProperty method to wait for theAccount edit box to be enabled before setting its value to 123.If it is still disabled after the testsObject Synchronization Timeout time has been exceeded, it will notperform. the Set method.If Browser(index).Page(index).WebEdit(Account).WaitProperty(disa

6、bled, 0) ThenBrowser(index).Page(index).WebEdit(Account).Set (123)End IfEnd Sub3)waitwait 函数,当脚本走到 wait 函数时, 就开始执行这个函数.如:wait(10),就等待 10 秒种后再继续执行下面的语句.wait函数的这个等待的时间,那相对来说是固定的,可能造成时间的浪费, 或者等待时间的不足.4)Exist检查对象当前是否存在于打开的应用程序中。返回一个 Boolean 值。语法:object.Exist(TimeOut)示例:Sub Exist_Example()The following e

7、xample uses the Exist method to determine theexistence of the Mercury Tours browser. If the object exists,a message box appears confirming its appearance.If Browser(Mercury Tours).Exist ThenMsgBox The browser exists.End IfEnd Sub在项目中根据不同的需要选择适合的函数或方法。使用 QTP 统计页面加载时间QTP 是一款功能自动化测试工具,而页面加载时间或响应速度应该是性能

8、测试的事情,其实 QTP 也可以实现对页面加载时间的统计功能。因为 QTP 使用的是 VBS 脚本,VBS 脚本的强大之处在于它可以调用任何 windows的 COM 组件和对象。那么问题解决的思路就很简单了,就是我们要利用 VBS 获取 IE 网页,并统计网页加载的时间。分析很简单,但是在实现上却有几个技术问题:一、如何使用 VBS 分析网页。我们知道网页技术是基于DOM 模型的(也不知道这么说是不是准确) ,那么只要我们能用 VBS 调用 DOM 下的 document 对象,那么我们就可以使用 document 的方法来实现我们的要求;二、如果能实现对 DOM 的调用,我们如何统计页面加

9、载的各个阶段的时间,通过查阅资料可以知道,在 document 中有一个 readystate 方法,该方法共有五个返回值,分别对应网页初始化到网页加载完毕五个阶段,我们可以利用该方法实现我们的要求。实现的思路如下:1、利用 createobject 创建一个 IE 的实例,以访问 document 对象;2、利用 document 对象的 readystate 属性获取网页加载时各个阶段的时间,3、利用 timer()实现对毫秒的统计。 timer()函数的作用是统计从午夜时间到当前时间所过去的秒数,我们用两个 timer 值想减就可以得到两个时间点之间相隔的毫秒数。4、为了方便调用,将时间

10、统计的代码封装成一个函数。最后代码如下:在 loadrunner 脚本中,把要访问的 url 做参数化,变量名为 SITEURLtimeCount 方法返回一个字符串,字符串的内容是统计各个阶段发生的时间可以使用各种方法查看 result 的内容SITEURL = 设置要进行访问的 URLresult = timeCount(SITEURL)返回运行结果MsgBox result 输出运行结果,在 loadrunner 中可以将该行注释掉方法定义开始Public Function timeCount(url)Set dom = CreateObject(InternetExplorer.App

11、lication) 创建一个 IE 的对象dom.Navigate(url) 打开指定的 URLtime_start = Now()获取统计开始时的时间timer_start = timer()获取当前时间的毫秒数a = dom.ReadyState获取当前 IE 的状态值,将使用该状态值判断 IE 的当前状态dom.visible = True 设置 IE 可见While dom.busy or (dom.readyState4)当 IE 处于 BUSY 状态或者加载未完成时(readystate 不等于 4)时,根据 IE 的状态统计时间,每毫秒统计一次wscrpt.sleep 1 时间间

12、隔 1 毫秒,如果时间间隔比较长的话,很有可能会取不到状态值Select Case dom.readystate 判断 dom.readystate 的值Case 0 IE 未初始化,其实在该方法,readystate=0 无意义,因为循环至少是从1 开始的。time0 = Now()timer0 = timer()Case 1 正在发送请求time1 = Now()timer1 = timer()Case 2 请求已经发送完成time2 = Now()timer2 = timer()Case 3 可以接收到部分响应数据time3 = Now()timer3 = timer()Case 4 页

13、面加载完成time4 = Now()timer4 = timer()End selectwendtime_end = Now() 统计结束时间MsgBox 开始时间是: & time1 & ;结束时间是&time2timeCount = 统计开始时间:&start_time&vbcrlf&time0:&time0&vbcrlf&time1:&time1&vbcrlf&time2:&time2&vbcrlf&time3:&time3&vbcrlf&time4:&time4&vbcrlf&完成 IE 的初始化并发送请求:&(timer1-timer_start)&秒&vbcrlf&发送完成并接受服务端部分响应数据:&(timer3-timer1)&秒&vbcrlf&100%接收并完成 HTML 内容解析:&(timer4-timer3)&秒&vbcrlf&总共花费:&(timer4-timer_start)&秒End Function代码中的 SITEURL 就是我们要进行测试的页面。这段代码虽然不长,但是却花了我整整 4 个小时的时间。一开始碰到的难题就是不知道 VBS 如何去调用document 方法,在网上查了无数资料,大多是讲如何在 HTML 代码中进行调用,很少说到如何使用标准 VBS 去调用,其实到最后才明白,VBS 调用访问 document 无非就是这样的一句代码:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号