2010-08-28 45 views
2

我同时使用存在方法QTP..As如果我用的if else那么它工作正常存在...但如果直接使用则没有工作面临的问题与...问题存在方法

例:

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) 

在这里,我要替换的等待(_一些其他方法一样存在,以提高性能...

任何人可以帮助我梳理出来..,

谢谢, Guddu摹

+0

1.这是不清楚你想在你的例子中使用Exist方法。 2.如果你想等待,也许最好看看Sync和WaitProperty方法? – katmoon 2010-08-28 16:51:39

+0

嘿,现在结帐的代码...希望你会帮助我.... 谢谢 – guddu 2010-08-30 06:03:51

回答

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/

谢谢,
阿尔伯特Gareev
http://automation-beyond.com/

+0

谢谢你回答..但存在的功能不工作.. donn知道为什么吗? 它只与if一起工作,否则 – guddu 2010-08-30 14:26:46

+0

您能提供更多详细信息吗?它是错误信息,还是看不到预期的效果;日志中写的是什么? – 2010-08-30 15:09:42

+0

先生,这只是一个与存在函数有关的错误消息... :( 但是,如果我把存在的功能,如果其他然后它的工作:( – guddu 2010-08-31 04:18:16

0

等待 - 用于指示所述QTP方法来等待执行 仅基于 规定的时间,但不能在任何条件下 E.g. 等待5(或)等待(5)“5秒

此方法不应advisable.Always使用动态等待加快执行。

WaitProperty - 方法用于指示QTP等待执行 过程,直到它 匹配基于所述指定时间的对象的属性值。

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

  1. 属性名 - “名”
  2. 属性值 - “欢迎:水星之旅”
  3. 5000 - 毫等待的秒数

    昏暗I = 0 做 I = I + 1个

    BSTATUS =浏览器()。存在(1)' “1” 表示它会等待最多1秒,然后它会procee d进一步

    如果I> 15然后“在此处指定的等待时间(我提到15秒)

    exit do 
    

    END IF

    循环,直到BSTATUS =真

通过提供同步点测试器会尝试匹配QTP和应用程序的执行速度 ,因为可能发生您正在执行的下一个 操作这取决于以前的结果,并且它尚未生成。 对于任何对象的默认等待时间为20秒,并且对象不是在20秒内出现的 而不是脚本。因此,为了避免这样的情况 我们使用的同步点

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

存在方法将总是返回布尔值

Object.exist浏览器()。页面()。exists()这将返回一个布尔值,如true或false

blnStatus = Browser()。exists()

MSGBOX blnstatus“返回TRUE或FALSE

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