1

我可以使用 exists() 检查图像是否存在

但我想知道是否可以检查同一图像是否多次出现在屏幕上,例如:

如果一个球存在一次点击一个按钮......

如果一个球在屏幕上存在两次,请单击另一个按钮...有什么想法吗?

4

5 回答 5

3

你也可以使用 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
于 2013-11-07T19:47:24.300 回答
3

要检查屏幕上出现的所有图像,请使用以下内容,添加额外的单击以确认图像的确切位置。

代码:

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

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

或者你可以找到迭代器的长度。

于 2016-05-24T04:16:14.210 回答
2

您可以使用Sikuli Region 类中的findAll 方法。示例代码将如下所示:

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
于 2013-10-27T12:23:46.743 回答
0

使用 Region 对象的 findall 方法。它为您提供所有匹配图像/图案的列表。Sikuli 文档有很好的使用细节。参考这里http://doc.sikuli.org/region.html#Region.findAll

于 2013-10-27T05:23:51.793 回答
0

如果您想计算窗口上某个图像的数量,您可以使用:

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)
于 2015-05-11T14:08:28.650 回答