无法让Sikuli识别图像

时间:2015-03-12 16:00:49

标签: java eclipse netbeans sikuli

我首先要说的是我使用的是Netbeans和Java(JDK 8 x64)。我已经安装了Sikuli选择安装Sikuli IDE的选项以及它与其他IDE一起使用的选项。

使用Sikuli IDE时,它可以很好地找到图像。当我将该图像复制到我的项目资源文件夹并尝试通过Netbeans中的项目找到它时,它无法找到它。

我相信我使用的版本是Sikuli的1.0.1。

以下是我正在尝试的测试代码:

public class TestSikuli {

    public static void main(String[] args) {
        Screen s = new Screen();
        try{
            s.click("resources/startBtn.png");
        } catch(FindFailed e){
            e.printStackTrace();
        }
    }

}

我假设它不知道resources / startBtn.png在哪里。所以我尝试使用

ImageLocator.addImagePath(System.getProperty(" user.dir" + File.separator +" resources")

但是,当打印出ImageLocator.getImagePath()的内容时,它似乎不会添加图像路径。

我的问题似乎是,让Sikuli在Netbeans for Java中工作的必要步骤是什么。我偶然发现了Jython的一些设置步骤,但我不确定这些是否对Java来说是必要的,因为它看起来有点复杂。

我是否需要在PATH中添加内容?我需要添加另一个环境变量吗?到目前为止,我所做的就是使用安装程序,然后将jar添加到我的Netbeans项目中。

任何和所有建议将不胜感激。我已经在几天内一直在寻找一个正确的答案,并且认为我只是求助于StackOverflow。

编辑:为标签添加了Eclipse,因为假设每个IDE集成Sikuli的过程应该相对类似。

2 个答案:

答案 0 :(得分:1)

如果addImagePath()函数似乎不起作用,您可以自己尝试修改图像路径。来自1.0.1文档:

  

注意:在幕后,此列表使用密钥SIKULI_IMAGE_PATH在java属性存储中维护。这可以在使用环境变量SIKULI_IMAGE_PATH启动JVM时预设,并且可以使用访问设置 - Java级别中提到的方法在运行时访问。请注意,这是一个字符串,其中不同的条目用冒号(:)分隔。 [source]

尝试类似:

java.lang.System.getProperty("SIKULI_IMAGE_PATH", "user.dir" + File.separator + "resources");

或者,您可以将图片存储在广告素材之外,然后尝试使用setBundlePath()

注意:我使用Jython和Sikuli 1.1.0,所以我没有测试提供的代码。

答案 1 :(得分:0)

这里有点不合适,因为我并不真正使用Java和我的Sikuli。但是,由于我构建一个批处理文件来运行我的Sikuli程序,也许你确实有一个错误的路径。

启动Sikuli IDE并制作Hello World程序时。然后它用.sikuli制作一张地图。在那些是它需要的所有文件。我想如果你用另一个IDE打开它,你需要那个地方的所有那些文件,就像Hello World程序一样。

另一件事是,在安装Sikuli时,它会创建安装它的目录/文件。我知道从你执行它的地方来看它是非常挑剔的。也许这也可能就是这种情况?

也许您应该看看click()是否被识别为命令。