在我自动化的应用程序中,我有两个按钮:登录和注册。
他们都有不同的图标。有时(并且我真的完全随意地表示没有行为模式)我的脚本单击登录按钮将单击注册按钮。这更令人困惑,因为我的图像存储库中不存在注册按钮。
我点击它就像这样:
try {
s.click("/imagerepo/config/loginbutton.png");
} catch (FindFailed e) {
e.printStackTrace();
}
有时会点击登录按钮。有时不会。
我真的很困惑这里发生了什么。有没有什么方法可以配置Sikuli找到它的图像有多精确?如何提高脚本的可靠性?
答案 0 :(得分:1)
总是,当Sikuli的行为不清楚时,你必须调试你的脚本并理解与你正在发生的事情相比真正发生的事情。在某些情况下,您的相似系数太低,可以选择其他模式而不是您想要的模式。尝试按照以下步骤调试您的Sikuli脚本。
使用highlight()
方法
所以在你点击之前,尝试做这样的事情:
s.find("/imagerepo/config/loginbutton.png").highlight(1); //1 sec highlight duration
这将在屏幕上找到的元素周围显示一个矩形红框。
使用highlight()
时,请查看控制台。它应该打印出Match对象的详细信息。它看起来像这样:
[log] highlight M[12,9 38x38]@S(0)[0,0 1280x1024] S:1.00 Center:31,28 for 1.0 seconds
在这种情况下,请注意S
参数1.00
。这就是你的相似系数。通常,高于0.95的值意味着您的模式与屏幕上的某些元素之间存在95%的匹配。如果此值较低,则可能会出现一些可能导致匹配错误元素的奇怪行为。您可以找到有关匹配对象here的更多信息。