当屏幕上存在两个完全相同的图像时,如何通过使用Sikuli和Java从屏幕上单击图像

时间:2019-08-01 13:18:35

标签: java automation sikuli sikuli-script sikuli-x

我在屏幕上有2个完全相同的图像(图案,颜色,大小,所有内容都相同),在这种情况下,如何单击图像1

每当我使用s.click()函数时,Sikuli都会尝试单击图片1 有时甚至单击图片2

我尝试了Patternexists,但它们也无法按预期工作。

Pattern imagePatternPath = new Pattern("Image.png").exact();
        screen.click(imagePatternPath);

我希望单击图像1 ,但实际输出是有时它会单击图像1 ,有时还会单击图像2 。 / p>

2 个答案:

答案 0 :(得分:0)

如果屏幕上有两种绝对相似的图案,则Sikuli无法在没有任何帮助的情况下区分它们。您几乎没有办法解决此问题。

屏幕上的位置

如果图案出现在屏幕上的已知区域中,则可以将搜索范围限制在预期区域,从而避免选择错误的图案。

按距离搜索

如果您有其他任何对象仅出现在要尝试定位的一种模式旁边,而没有出现在另一种模式下,则可以将它们用作枢轴。

看看Sikuli代码,尤其是这里的Region类。它提供了各种选项来修改找到的模式周围的搜索区域。例如:

public Region grow(int range) {
    return grow(range, range);
  }

答案 1 :(得分:0)

下次尝试查看补丁说明时,它们会很有帮助。但是这是我会尝试的:

 result = findAll("Image.png")

这将返回一个列表,您可以循环访问该列表以单击您想要的项目,在这种情况下,您将单击第一个项目。