我可以检查图像是否存在于exists()
但我想知道我是否可以检查同一图像是否出现在屏幕上不止一次,例如:
如果球存在,只需点击一个按钮......
如果球在屏幕上存在两次,请点击另一个按钮...任何想法?
答案 0 :(得分: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
答案 1 :(得分:3)
要检查屏幕上所有出现的图像,请使用以下内容,添加额外的点击以确认图像的确切位置。
Screen s = new Screen();
Iterator<Match> it = s.findAll(Imagepath);
while(it.hasNext()){
System.out.println("the match is "+it.next().click());
}
或者你可以找到迭代器的长度。
答案 2 :(得分:2)
您可以使用Sikuli Region类的findAll method。示例代码如下所示:
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
答案 3 :(得分:0)
使用Region对象的findall方法。它为您提供了所有匹配图像/模式的列表。 Sikuli文档有很好的使用细节。请参阅此处http://doc.sikuli.org/region.html#Region.findAll
答案 4 :(得分: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)