【问题标题】:sikuli is not finding image filessikuli 没有找到图像文件
【发布时间】:2015-10-28 14:53:21
【问题描述】:

使用 sikulixapi 1.1.0 在 Java 中试用 Sikuli,但找不到我的图像文件。

      screen.click("images/Terminal.png");

Maven(阴影)按预期将我的 src/main/resources/images 放入 JAR 的顶级“images”目录中。但是运行 uberjar 并没有找到图片。

~/hello $ java -cp target/hello.jar hello.TestSikuli
 [error] Image: could not be loaded: file://Users.../hello/images/Terminal.png

它在当前目录(恰好是项目目录)中查找,而不是在 JAR 中。我在程序中打印出了imagePath,它是一个空数组。

我如何获取它(可能使用 imagePath.add?)来搜索调用的 JAR? 我原以为它会默认显示在那里。


我尝试的另一件事:

URL u = this.getClass().getClassLoader().getResource("images/Terminal.png");
Region r = screen.find(u);

但这会爆炸;如果我传递一个如此处所示的 URL,我会得到“无效参数”;如果我通过 .toString,我得到:

FindFailed: Region: doFind: Image not loadable:
jar:file:/Users/.../Sikulix/j/hello/target/hello-1.0-SNAPSHOT.jar!/images/Terminal.png

Sikluix 中好像没有流输入接口,所以这可能就是做不到。

【问题讨论】:

    标签: java maven sikuli


    【解决方案1】:

    这行得通:

      ImagePath.add(TestSikuli.class.getCanonicalName() + "/images");
    

    也可能有一种将图像加载到内存中的解决方法。 https://answers.launchpad.net/sikuli/+question/232217

    【讨论】:

      【解决方案2】:

      导入这个库

      import org.sikuli.basics.ImageLocator;
      

      并使用此功能定位您的图像目录路径

      ImageLocator.setBundlePath("path to img directory");
      

      要执行您的 jar 文件,请运行以下命令

        cd "your directory"
      
        java -jar hello.jar
      

      【讨论】:

      • 我问的是加载 JAR 中的文件,而不是文件系统中的文件。
      • 图像定位器目前已弃用。
      • 图像定位器目前已弃用。
      【解决方案3】:
      Screen s1 = new Screen();
      s.dragDrop("Drag elemtn location.png","Drag elemtn location.png");
      

      你可以给你想要拖拽的元素路径位置,和drop一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-10
        • 2018-02-03
        • 2017-02-16
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多