Sikuli Проверьте несколько одинаковых изображений на экране

Я могу проверить, существует ли изображение с существует ()

Но я хочу знать, могу ли я проверить, появляется ли одно и то же изображение более одного раза на экране, например:

если мяч существует один раз, нажмите кнопку...

если на экране дважды появляется шарик, нажмите другую кнопку... есть идеи?

5 ответов

Решение

Вы можете использовать метод findAll из класса Sikuli Region. Пример кода будет выглядеть так:

def returnImageCount(image):
    count = 0
    for i in findAll(image):
        count += 1
    return count

imageCount = returnImageCount(image)

if imageCount == 1:
    click(buttonX.image)
elif imageCount == 2:
    click(buttonY.image)
else:
    pass

Вы можете также использовать понимание списка Python, чтобы сделать это:

imageCount = len(list([x for x in findAll(image)]))

#the rest is like @Eugene's answer
if imageCount == 1:
    click(buttonA)
elif imageCount == 2:
    click(buttonB)
else:
    pass

Чтобы проверить все вхождения изображения на экране, используйте приведенный ниже дополнительный щелчок, чтобы получить подтверждение точного местоположения изображения.

код:

Screen s = new Screen();
Iterator<Match> it = s.findAll(Imagepath);

while(it.hasNext()){
    System.out.println("the match is "+it.next().click());
}

Или вы можете найти длину итератора.

Используйте метод findall объекта Region. Это дает вам список всех подходящих изображений / шаблонов. Документация Sikuli содержит подробные сведения об использовании. См. Здесь http://doc.sikuli.org/region.html

Если вы хотите посчитать номер определенного изображения в окне, вы можете использовать:

Image1 = ("Image1.png")
ImagesFound = list(findAll(Image1))
numberFound = len(ImagesFound)
print(numberFound)

И если вы хотите посчитать номер определенного изображения в самом переднем окне, например, во всплывающем окне.
Вы можете использовать:

Image1 = ("Image1.png")
appWindow = App.focusedWindow()
ImagesFound = list(appWindow.findAll(Image1))
numberFound = len(ImagesFound)
print(numberFound)
Другие вопросы по тегам