我可以使用 exists() 检查图像是否存在
但我想知道是否可以检查同一图像是否多次出现在屏幕上,例如:
如果一个球存在一次点击一个按钮......
如果一个球在屏幕上存在两次,请单击另一个按钮...有什么想法吗?
我可以使用 exists() 检查图像是否存在
但我想知道是否可以检查同一图像是否多次出现在屏幕上,例如:
如果一个球存在一次点击一个按钮......
如果一个球在屏幕上存在两次,请单击另一个按钮...有什么想法吗?
你也可以使用 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());
}
或者你可以找到迭代器的长度。
您可以使用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
使用 Region 对象的 findall 方法。它为您提供所有匹配图像/图案的列表。Sikuli 文档有很好的使用细节。参考这里http://doc.sikuli.org/region.html#Region.findAll
如果您想计算窗口上某个图像的数量,您可以使用:
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)