Finding Two different images

Asked by xyz_User on 2019-09-21

looking to find 2 different images withing a given time for eg: 3 sec, only if it finds BOTH of the images it should do something (popup, got 2), Not sure what I'm doing wrong, please advise:

def findTwoImages(self,"1569100025263.png,3","1569100032614.png,3"):
    twoImages = False
    imageCount = 0
    if exists(refSet.getImage("1569100025263.png")):
        imageCount += 1
    if exists(refSet.getImage("1569100032614.png")):
        imageCount += 1
        if (imageCount == 2):
            twoImages = True
            popup('got 2')

findTwoImages()

Question information

Language:
English Edit question
Status:
Solved
For:
Sikuli Edit question
Assignee:
No assignee Edit question
Solved by:
xyz_User
Solved:
2019-09-23
Last query:
2019-09-23
Last reply:
2019-09-22

This question was reopened

RaiMan (raimund-hocke) said : #1

that's not Python ;-)

I would do it like this (if the function makes sense at all, only if needed more than once)

def findTwoImages(first, second):
    imageCount = 0
    if exists(first): #waits 3 secs for first
        imageCount += 1
        if exists(second): #waits 3 secs for second
            imageCount += 1
    return mageCount == 2

if findTwoImages("1569100025263.png", "1569100032614.png,3"):
    popup('got 2')

This only works, if the first image appears within 3 seconds (no matter what is with the second image).

You might also have a look at the feature findAny().

xyz_User (userseven) said : #2

I am full of gratitude once again, I promise to stop asking questions for the next little while :)

RaiMan (raimund-hocke) said : #3

 No Need to stop asking.
It is my decision wether, when or how I answer ;-)

xyz_User (userseven) said : #4

I seem to be getting an error as well:

testingThisFunction() #Random Target TypeError: calliopeMassCureWounds() takes exactly 2 arguments (0 given)

Here's the code:

def testingThisFunction(first, second):
    imageCount = 0
    if squareArea2.exists(first,0.5):
        imageCount += 1
        if squareArea4.exists(second,0.5):
            imageCount += 1
    return imageCount == 2

if testingThisFunction("1568620179920-6.png", "1568621143400.png"):
    doubleClick(Location(639,686))
    click(Location(Location(664, 572)))
    callMyNextFunction()
    waitForUi()
else:
    sleep(0.1)

Manfred Hampl (m-hampl) said : #5

You cannot call 'testingThisFunction()' with an empty parameter list, you always have to provide two images, e.g. 'testingThisFunction("1568620179920-6.png", "1568621143400.png")'