【问题标题】:sikuli java, second click() problems and so onsikuli java, second click() 问题等等
【发布时间】:2019-01-11 08:37:21
【问题描述】:

我的代码非常简单... 我用

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);

这是一个重复的过程

它总是点击第一张图片,但从不点击第二张图片。如果我翻转它,它仍然会点击第一张图片,因为它可以识别两张图片,但从不点击第二张图片。

点击的意思是,它不会将鼠标移动到第二张图片并点击。 hover 不起作用,mouseMove 不起作用,hover 和 mouseClick 不起作用。

就好像 windows 在第一个命令之后阻止了任何鼠标移动。

我已经放置了打印屏幕,它通过所有命令,我输入的每个代码,除了鼠标移动/点击机器人或 sikuli

对此有任何帮助吗?是windows设置还是别的什么? 对此进行了 2 周的研究,不想用问题来困扰人们,但我完全卡住了

非常感谢您的帮助。太棒了

【问题讨论】:

  • 嗨,我目前正在使用带有 java 的 netbeans 和 sikulixapi

标签: java sikuli


【解决方案1】:

这可能会发生 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。你应该问问自己:

  • playmenu.png 依赖于 play.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);

【讨论】:

    【解决方案2】:

    我从 Sikuli 学到的一件事是确保您尽可能捕捉到最小的独特图像。尽量不要使图像捕获大于屏幕上唯一所需的大小(唯一,意味着它不能在多个地方被发现)。如果没有必要,请注意不要捕捉任何背景。此外,编写环境和运行环境之间的分辨率一致性对于可靠的测试结果至关重要。 Sikuli 起初可能会令人沮丧,但它迫使测试编写者深入检查用户将如何与应用程序交互。在我看来,编写 Sikuli 测试的过程本身是手动测试的有益工具。

    【讨论】:

      猜你喜欢
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多