Question #231963 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/231963

    Status: Open => Answered

RaiMan proposed the following answer:
--1. why not this way

For m in range(1800):
  Click(wait(img1,10))
  Click(wait(img2,10))
  Click(wait(img3,10))
  While exists(img4,20):
    If exist(img4):
      Click(exists(img5))
      Break
  Click(exists(img6,10))
  Click(exists(img7,10))

... following the DRY design pattern (Don't repeat yourself)

--2. the while does not really make sense...
  while exists(img4,20):
    If exist(img4):
      Click(exists(img5))
      Break

is the same as:
  If exist(img4, 20):
    Click(exists(img5))

Both wait max 20 secs for img4 and click img5 (if it exists) in the
moment img4 appears

--3. stop with image 8 or 9
If I understand right: you want to stop the script, if either img8 or img9 
appear while your script is running.
Assuming, that img8 and img9 do not vanish after a specific time automatically 
again after they appear, this should do it (using the observe in background 
feature)

def img8Or9Appear(e):
  print "img8 or img9 poped up: stopping script"
  e.region.stopObserver()
  exit()

onAppear(img8, img8Or9Appear) 
onAppear(img9, img8Or9Appear) 
Settings.ObserveScanRate = 0.2 # check every 5 seconds
observe(FOREVER, background=True)

For m in range(1800):
  Click(wait(img1,10))
  Click(wait(img2,10))
  Click(wait(img3,10))
  If exist(img4, 20):
    Click(exists(img5))
  Click(exists(img6,10))
  Click(exists(img7,10))

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to