与Exist方法相关的问题

时间:2010-08-28 10:53:42

标签: qtp

我在QTP中使用Exist方法时遇到问题。如果我使用Exist和If,那么它工作正常......但如果直接使用则不能正常工作......

前:

Browser("Home").Page("Home_2").WebEdit("ctl00$uxMNJDefaultContentPlace").Click
Browser("Home").Page("Home_2").WebEdit("ctl00$uxMNJDefaultContentPlace").Set DataTable("mfgpartnumber", dtGlobalSheet)  ''#Read mfg# from datasheet

Browser("Home").Page("Home_2").Image("ctl00$uxMNJDefaultContentPlace").FireEvent "onmouseover"

Browser("Home").Page("Home_2").Image("ctl00$uxMNJDefaultContentPlace").Click 31,11
wait(15)

Browser("Home").Page("Shopping Cart").WebElement("$3.99").Output CheckPoint("Shoppingcart_subtotal")

Browser("Home").Page("Shopping Cart").Check CheckPoint("Shopping Cart_price_2")

''#Browser("Home").Page("Shopping Cart").WebElement("$3.99").Output CheckPoint("$3.99")

Browser("Home").Page("Shopping Cart").Image("ctl00$uxMNJDefaultContentPlace").FireEvent "onmouseover"

Browser("Home").Page("Shopping Cart").Image("ctl00$uxMNJDefaultContentPlace").Click 66,10
wait(5)

Browser("Home").Page("Edit Shipping Address").Link("Continue").Click
wait(5)

Browser("Home").Page("Order Shipping Method").Link("Continue").Click
wait(5)

这里我想替换wait(_到另一种方法,如Exist以提高性能......

有人可以帮我解决..,。

谢谢, Guddu G

3 个答案:

答案 0 :(得分:2)

@guddu

由于您等待浏览器加载其他页面,因此请在适用的情况下使用Browser.Sync 如果在重新加载页面后没有出现对象,请使用带参数的.Exist方法 示例:

boolRC = Browser("Home").Page("Shopping Cart").WebElement("$3.99").Exist(15)  

这样,您可以最多 15秒来显示对象。如果对象出现得更早,则脚本会更快地移动 如果对象在出现后可以延迟运行,请使用WaitProperty方法,正如@katmoon指出的那样。

最后,您可以使用可自定义的参数实现自己的同步功能,例如事件(出现/消失等),超时,要检查的属性......

示例:http://automation-beyond.com/2009/08/20/gui-object-synchronization-custom-function/

谢谢你,
Albert Gareev
http://automation-beyond.com/

答案 1 :(得分:0)

等待 - 方法用于指示QTP等待执行 基于的过程 指定的时间,但不适用于任何条件 例如。 等待5 (或)等待(5)'5秒

此方法不可取。始终使用动态等待来加速执行。

WaitProperty - 方法用于指示QTP等待执行 过程直到它 根据指定的时间与object属性值匹配。

E.g。 浏览器(“欢迎:Mercury Tours”).WaitProperty“name”“欢迎: 水星之旅“5000

  1. 属性名称 - “名称”
  2. 属性值 - “欢迎:Mercury Tours”
  3. 5000 - 等待的毫秒数

    Dim i = 0 做  I = I + 1

    bstatus = browser()。exists(1)'“1”表示它将等待最多1秒然后它将继续进行

    如果i> 15,那么'这里'指定等待时间(我提到15秒)

    exit do
    

    如果

    结束

    循环直到bstatus = true

  4. 通过提供同步点测试器尝试匹配执行 QTP和Application的速度因为它可能发生在下一个 您正在执行的操作取决于之前的结果和 它还没有生成。 任何对象的默认等待时间为20秒,而对象不是 出现在20秒内可能会失败脚本。所以要避免这样的 条件我们使用同步点

    始终使用Waitproperty 不要使用硬编码等待

    Exist方法将始终返回布尔值

    Object.exist 浏览器()。page()。exist()这将返回一个布尔值,表示true或false

    blnStatus = Browser()。exist()

    msgbox blnstatus'返回true或false

答案 2 :(得分:0)

嗨这是一个简单的功能我正在使用而不是等待和禁用属性我觉得它可能有帮助..谢谢..

Set NavigationTab = Browser ().Page().WebElement()
PerformWait ( 10 , 10 , NavigationTab )


Function PerformWait ( intDisableTime , intDelay , object )

if CheckExist ( intDelay , object ) Then

if ValidateDisabled ( object , intDisableTime ) Then

    object.Sync
    Reporter.ReportEvent 0 , "Element is ready to use" , "The  specified element is ready to use" & Date & Time


  Else

   Reporter.ReportEvent 3 , "Object Disabled." , "Object remains disabled after specified time : " & refDisableTime & Date & Time   

End If

Else

Reporter.ReportEvent 3 , "Element not present." , "The specified element not present : " & Date & Time

End If

End Function

Function CheckExist ( intDelay , object )

object.RefreshObject

' -- validating the object is exist or not.
If object.Exist ( intDelay ) Then

 CheckExist = True

Else

 CheckExist = False

 End If

End Function


Function ValidateDisabled ( object , intDisableTime )


For Iterator = 1 To intDisableTime Step 1

' -- validating the object is disabled or not.
If object.GetROProperty ( "disabled" ) = 1 Then

    wait 1  
    ValidateDisabled = False

Else

    ValidateDisabled = True
    Exit For    

End If

Iterator = Iterator + 1
Next

End Function