【转】QTP 同步点设置

原文地址:http://www.51testing.com/?uid-27374-action-viewspace-itemid-847208

在运行测试脚本时,QuickTest通过识别对象来判断脚本回放是否成功。当对象在默认的时间内未出现时,脚本回放就会报错。如果需要指定QuickTest暂停运行一个测试或组件,直到特定的对象属性存在后才开始运行下一步,那么可以插入同步点来实现。

  • 同步点原理
  • 同步点方法

---------------------------------------------------------------------------

同步点原理

同步点是指在一个测试过程中,指示QuickTest等待应用程序中某个特定过程运行完成以后再运行下一步操作。
Waits until the specified object property achieves the specified value or exceeds the specified timeout before continuing to the next step.

一般,在下列情况下使用同步点:

  • 判断进度条是否已经100%完成。
  • 判断某一状态消息的出现。
  • 等待某按钮状态变为可用。
  • 一个操作后,弹出一个消息对话框。
  • 等待窗口打开并提交数据。

    默认同步时间

    QTP默认的同步时间为20s。(File>>>Settings>>>Run>>>Object synchronization timeout:)
    可以手工更改对象识别的同步时间。
    Web插件对于Web浏览器对象的默认同步时间为60s。(File>>>Settings>>>Web>>>Browser navigation timeout:)
    同样,可以手工更改对象识别的同步时间。

    插入同步点

    语法:object.WaitProperty(PropertyName,PropertyValue,[TimeOut])
    Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").WaitProperty "name","wd",5000

    QTP默认同步时间为全局时间,手工设置的时间为同步点超时时间,总超时时间=全局时间+同步点超时时间。时间单位ms。

同步点方法

  • 对象的默认等待时间
  • Sync方法
  • WaitProperty方法
  • Exist方法
  • Wait方法

    对象的默认等待时间

    QTP识别对象时,会有一个默认的等待时间,可以在File>>>Settings>>>Run>>>Object synchronization中设置,默认时间是20秒,也就是说当执行到第2步时,网页还没有完全打开,这样的话QTP找不到第2步中需要的对象,那么它会在20秒内不断的尝试查找对象,如果百度这个网页在20秒之内完全打开,那么这个方法就可行(网页全部打开的话,第2步所需的对象就会被找到),如果超过20秒还不行的话,请参考下面几种方式

    Sync方法

    Sync方法等待浏览器或页面加载完成后才进行下一步操作。常用对象中,只有Browser(浏览器对象)和Page(页面对象)具有Sync方法。
    Browser.Sync:表示等待IE状态显示为完成后,再进行下一步操作。
    Page.Sync:表示等待页面信息加载完成后,再进行下一步操作。

    SystemUtil.Run "iexplore.exe","http://www.google.com"
    Browser("Google").Page("Google").Sync

    注意:虽然Sync方法会使QTP等待到页面加载完成后,才进行下一步操作,但是它无法判断页面是否加载成功,如果需要判断页面加载是否成功,可以通过判断页面中对象visible的属性值。
    If Browser("Google").Page("Google").WebEdit("q").GetROProperty("visible")=true then
        msgbox "加载成功"
    else
        msgbox "加载不成功"
    end if

    Sync方法只能在Web中使用,如果其他类型的对象需要等待时间怎么办?可以使用QTP自带的同步点功能。

    WaitProperty方法

   WaitProperty方法是指当指定的属性出现后或是指定时间后指定的属性还未出现,再进行下一步操作。

   注意:该方法适用于除WinMenu对象(菜单对象)以外的所有标准Windows对象。

   常用的比较方式有一下6种:

  1. micGreaterThan(大于)
  2. micLessThan(小于)
  3. micGreaterThanOrEqual(大于或等于)
  4. micLessThanOrEqual(小于或等于)
  5. micNotEqual(不等于)
  6. micRegExpMatch(正则表达式匹配)

   Exist方法 

   Exist方法用于判断对象是否存在   语法:object.Exist([TimeOut])   当设置超时时间时,如object.Exist 10,那么QTP会一直查找该对象,如果在指定的时间内未找到该对象,则提示无法找到该对象。时间单位ms。
   如果设置超时时间为0,如object.Exist 0,那么QTP不会等待,而是直接返回查找的结果(True或False)。
   如果未设置超时时间,如object.Exist,那么超时时间为QTP默认的同步时间。
   Do until Browser("百度一下,你就知道").Page("百度一下,你就道").WebEdit("wd").Exist(5)
       Wait(1)
   Loop

   判断WebEdite这个对象是否出现,如果没有出现,执行Wait(1),如果出现,跳出循环。

   Wait方法

   Wait方法又称为为死等大法。Wait方法使QTP暂停运行一定的时间。
   与其他的方法不同的是,Wait方法强制QTP暂停运行一定的时间,并不会判断指定的对象是否出现。不管对象是否出现,当等待的时间结束后,QTP都将进行下一步操作。

   当脚本走到Wait函数时,就开始执行这个函数,如:Wait(10),就等待10秒,然后再继续执行下面的语句。Wait函数的这个等待的时间,是比较固定的,Wait(10),就一定要等待10秒后在执行。时间单位s。
   同步点的等待时间就比较灵活,它的等待时间是不固定的。设置同步点后,当脚本执行到这句话后,脚本就开始执行等待,脚本会在规定时间内不断的去检查,所同步的对象有没有出现,一但出现,脚本就继续往下执行,不需要等完所规定的时间。如果在固定的时间内,所要同步对象还没有出现,那就提示超时的错误信息。

你可能感兴趣的:(qtp)