Sikuli actions inside a region

Daniel Euchar picture Daniel Euchar · Mar 7, 2012 · Viewed 9.7k times · Source

i am facing an issue while using sikuli through java, if there are 2 elements of same kind(or similar image) it fails to click on the correct element. so i wanted to know if it is possible to make sikuli just work inside a particular region and can some one please explain how can it be done ??

Answer

spearson picture spearson · Mar 8, 2012

Yes sikuli can work within a particular region. The challenge is defining a region that only contains one of your two elements. You define a region by x,y coordinates. You can also increase the size of a region based on the location of a unique pattern (image) on your display.

while exists("foo.png"):
    hover("bar.png")
    ClickMeRegion = find("bar.png").nearby(5).right()
    ClickMeRegion.click("baz.png")

So in the above I look for image foo.png/bar.png/baz.png image pairs that are being displayed. First I hover on bar.png so that visually I can see which pair the script is looking at. Then I create a region extending 5 pixels around the center of bar.png and extend this to the right of the display. This highlights a single baz.png image. I can then click on the one baz.png that I am interested in.

For more info on regions see: http://doc.sikuli.org/region.html