从过去几天开始,我试图同步两个执行过程中相互依赖的对象。
EX:对象B只能在对象A完成后执行。
现在,在我的场景中,对象A需要一些时间来执行,因此我需要同步这两个对象。
对象的完成将产生一个图像,该图像将告诉用户该过程已成功完成或失败。
以下是我的代码:
sLoop = True
Do while sLoop
If (Browser("ABC").Page("PQR").Frame("XYZ").Image("BatchSuccess").Exist) then
msgbox "in if"
sLoop = false
Else
msgbox "in else"
sLoop = true
End If
Loop
其他活动。。。
我的IF条件在得到满足之前就被执行了。有一个正在进行的过程的图像,UFT认为这是成功的。。。
注意:在执行对象时还有一个图像。(观察,UFT无法区分这两张图像)
尝试使用WaitProperty方法Exist在应用程序中找到您的对象时将返回true。例如
objectA.WaitProperty(optionFromObjectSpy,someSpecificContent)
optionFromObjectSpy-innerhtml等
只要看看你的代码和你的问题,我就会想到一件事,那就是你可以在exist语句中使用等待时间。类似:
If B().P().Image().Exist("10") Then *'you can change the 10 second to anything you want*
'Code here
End If
或者,您可以创建一个函数来检查浏览器的readystate(假设其IE)是否为4。
do while ie.readystate <> 4
Wait(1)
Loop
在对Image对象执行任何操作之前,请先调用函数。应该有效。
试试类似-的东西
While not Browser("ABC").Page("PQR").Frame("XYZ").Image("BatchSuccess").Exist
Wait 1
Browser("ABC").Sync
Wend
'your code here after object A is synchronized
Browser("ABC").Page("PQR").Frame("XYZ").Image("BatchSuccess").Click