我在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
答案 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
5000 - 等待的毫秒数
Dim i = 0 做 I = I + 1
bstatus = browser()。exists(1)'“1”表示它将等待最多1秒然后它将继续进行
如果i> 15,那么'这里'指定等待时间(我提到15秒)
exit do
如果
结束循环直到bstatus = true
通过提供同步点测试器尝试匹配执行 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