我的代码非常简单... 我用
public static String play = "C:\\pics\\lotto\\play.png";
public static String playmenu = "C:\\pics\\lotto\\playmenu.png";
s.click(play);
robot.delay(1000);
s.click(playmenu);
r.delay(1000);
这是重复过程
它总是单击第一张图像,但不会单击第二张图像。如果我将其翻转,它会同时单击第一张图像,因为它可以识别两个图像,但从不单击第二张图像。
单击的意思是,它不会将鼠标移至第二张图像并单击。悬停不起作用,mouseMove不起作用,悬停和mouseClick均不起作用。
好像Windows在第一个命令之后阻止了任何鼠标移动。
我已经放置了打印屏幕,它遍历了所有命令,执行了我输入的每个代码,除了用机械手或sikuli移动/单击鼠标
对此有任何帮助吗?是Windows设置还是其他设置? 在此上进行了2周的搜索,不想让ppl遇到问题,但我完全被卡住了
非常感谢您的帮助。 ty
答案 0 :(得分:0)
这可能会发生2件事:
public static String play = "C:\\pics\\lotto\\play.png";
public static String playmenu = "C:\\pics\\lotto\\playmenu.png";
s.click(play);
robot.delay(1000);
s.click(playmenu);
r.delay(1000);
可能发生的事情之一是,当您单击play.png时,屏幕会发生变化,因此找不到playmenu.png。您应该问自己是否:
两个图像的图案重合是什么?也许他们需要低于平均水平。我要做的一件事是首先检查它们是否都存在(像这样):
// You can change the pattern of coincidence (need 85% of coincidence to be recognized)
if (s.exists(new Pattern(play).similar(0.85f)) != null) {
System.out.println("Play exists!");
}
if (s.exists(new Pattern(playmenu).similar(0.85f)) != null) {
System.out.println("Playmenu exists!");
}
此前几行仅用于检查这些图像是否存在。现在,如果您注意到单击第一张图像后未单击第二张图像,则可以执行以下操作:
s.click(new Pattern(play).similar(0.8f));
robot.delay(1000);
/* Another thing you can do is, after you click the first image (play),
you can move the mouse to another coordinate to lost animations after
focus the first button, and recover the original aspect*/
r.mouseMove(0,0);
// Here, you lower the level of coincidence so it match with the new image
s.click(new Pattern(playmenu).similar(0.6f));
r.delay(1000);
答案 1 :(得分:0)
我从Sikuli学到的一件事是确保您捕获到最小的独特图像。尽量不要使图像捕获超出屏幕上唯一的需要(唯一,这意味着无法在多个位置发现它)。小心不要捕获任何不必要的背景。此外,书写环境与运行环境之间的分辨率一致性对于可靠的测试结果至关重要。首先,Sikuli可能会感到非常沮丧,但是它迫使测试编写者深入研究用户如何与应用程序交互。我认为,编写Sikuli测试本身的过程是进行手动测试的有益工具。