我是Sikuli API的新手,我使用的是Sikuli-java-jar文件。我想使用屏幕和模式类成功点击桌面元素。
所以我试图创建一个自动化脚本来安装软件。 我能够成功启动安装程序,但无法单击弹出窗口中的“下一步”按钮。
我没有收到任何错误,只是单击图像失败。
appInstaller("E:\\Sikulimages\\tc.png");
appInstallers("E:\\Sikulimages\\next.png");
public static void appInstaller(String path) throws FindFailed{
s=new Screen();
img=new Pattern(path);
s.exists(path);
s.wait(img,2000);
s.doubleClick(img);
}
public static void appInstallers(String path) throws FindFailed, InterruptedException{
s=new Screen();
img=new Pattern(path);
s.click(img);
}
答案 0 :(得分:1)
我认为原因是默认的相似度(0.7)不足以用于小按钮和文本。
Sikuli有公共课程设置, 托管 public static double MinSimilarity = 0.7;
对于大多数图像识别来说,这个值已经足够了,但是对于小文本来说却是失败的。要点击小文本,您需要提高特定模式的相似度,或者像我一样,使Settings.MinSimilarity = 0.9;
有时甚至0.9都不足以识别小文本,然后尝试0.95,这通常有助于确定最小的文本。
答案 1 :(得分:1)
除了RPWheeler的回答之外,如果您的目标图片旁边有某些内容与每时间的内容相同,您还可以拍摄更大的屏幕剪辑然后告诉Sikuli是那个更大的图像的一部分点击。
例如:如果您的"下一步"按钮是一排按钮的一部分,采取屏幕剪辑包括整行。然后,在IDE中,双击图像,然后转到" Target Offset"标签。在这里,您将看到一个图像示例,然后单击希望Sikuli单击的图像部分。 - 默认值始终是矩形的中心,但您可以使用目标偏移量更改它。
你可以在像这样的代码中完成同样的事情
t = find(yourImage).targetOffset(dx,dy)
click(t)
其中dx和dy是远离矩形中心点的正像素数或负数。
答案 2 :(得分:1)
要安装应用程序,您需要管理员权限。因此,要运行任何需要管理员权限的任务,您需要以管理模式运行sikuli 。因此,右键单击runSikulixcmd.bat并选择以管理员身份运行以启动Sikuli,然后运行测试。
如果从命令提示符运行测试,请在admin命令提示符下运行它。