“图片无效,但TextSearch已关闭!”错误 - Mac上的Sikuli

时间:2017-08-11 06:37:43

标签: java eclipse macos automation sikuli

我正在尝试使用Sikuli和Eclipse在Mac上自动化桌面应用程序。

源代码:

import org.sikuli.script.FindFailed;
import org.sikuli.script.ImagePath;
import org.sikuli.script.Screen;

public class TextEditorExample {

public static void main(String[] args) throws FindFailed {
 // TODO Auto-generated method stub
Screen s=new Screen();
System.out.println(ImagePath.getBundlePath());
 s.click("spotlight_icon.png");
 s.find("spotlight.png");
 s.type("spotlight.png","finder");
 s.click("applications.png");
 s.click("texteditor_icon.png");
 s.find("texteditor.png");
 s.type("texteditor.png","Sikuli Example");

 }
}

但我收到以下错误:

[error] Image: Image not valid, but TextSearch is switched off!
[error] RunTimeAPI: Wait: Abort: unknown
[error] RunTimeAPI: ImageMissing: spotlight_icon.png

sikuli脚本的路径:

  /Users/adamin/Desktop/Automation/SikuliExample/src/TextEditorExample.java

图片路径:

/Users/adamin/Desktop/Automation/SikuliExample/src/spotlight_icon.png
/Users/adamin/Desktop/Automation/SikuliExample/src/spotlight.png
/Users/adamin/Desktop/Automation/SikuliExample/src/applications.png
/Users/adamin/Desktop/Automation/SikuliExample/src/texteditor_icon.png
/Users/adamin/Desktop/Automation/SikuliExample/src/texteditor.png

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

默认情况下,imagepath设置为项目根文件夹,并且只在那里查找模式。只需手动将捆绑路径设置为文件所在的位置:

  <xx.xx.NonScrollListView
        android:id="@+id/lv_nonscroll_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </xx.xx.NonScrollListView>

或者,将文件放在以下所返回的文件夹中:

ImagePath.setBundlePath("fullpath");

答案 1 :(得分:0)

使用模式。

Pattern pattern = new Pattern(path+"spotlight_icon.png");
Screen s=new Screen();
        try {
            s.click(pattern);
        } catch (FindFailed e) {
            e.printStackTrace();
        }

答案 2 :(得分:0)

当图像无法加载时,很可能出现此错误。同时,请使用此方法

try{
    String path = "path of your image";
    Pattern target = new Pattern(path);
    Screen scr = new Screen();
    scr.click(target);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

ý