← Back to team overview

sikuli-driver team mailing list archive

[Bug 1201280] Re: [1.0.1] OnAppear()/observe() only works the first time for one image in same region

 

ok, my suggestion was a bit careless, sorry.

repeat is an event function and hence has to be used in the handler.

def found(event) :
    print "found it"
    event.repeat()

onAppear("1433207314491.png", found)
observe(background=True)
while True :
# sequential logic here

So I guess, the observe is for handling some popup or other situation,
that comes up asynchronously during your worflow in the loop. So if you
are sure the onAppear-target has vanished at the time you issue the
repeat(), using this without a wait time is ok.

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/1201280

Title:
  [1.0.1] OnAppear()/observe() only works the first time for one image
  in same region

Status in Sikuli:
  Fix Committed

Bug description:
  --- fixed with 1.1.0

  see the docs:
  http://sikulix-2014.readthedocs.org/en/latest/region.html#observing-visual-events-in-a-region

  for how to repeat onAppear()/onVanish() in the same observe run
  ---------------------------------------------------------------

  my purpose is to deal w/ 1 button which will appear several times in a game(actually it is the angrybird game) ,then  i used the onappear()/observe() but ir can just deal w/ the 1 time the button shows ,following shows can not be deal ,below is my test code ,
  what i think is that  it can deal each time when button shows until the script end.

  below is my test code  :
   def myHandler(event):
      click("1373853815762.png")
      wait(5)
  Settings.ObserveScanRate=1
  onAppear(("1373853815762.png"),myHandler)
  observe(FOREVER,background = True)
  for i in range(1,5000):
      print "testing....."
      wait(5)

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1201280/+subscriptions


References