【问题标题】:Sikuli click. (ScreenCaptureImage) in java斯库里点击。 Java 中的 (ScreenCaptureImage)
【发布时间】:2019-02-23 02:46:43
【问题描述】:

我是 Sikuli 的新手,我想

1. click windows button, and 
2. type "Helloworld"  
3. press Enter. 

我已经对此进行了编码并在 Sikuli IDE 中成功运行

click("1391583846712.png")
type("helloWorld")
wait(2)
type(Key.ENTER)

我试图将其移至 Java , 从 sikuli javadocs 我看到了以下代码,但是它在 java sikuli-api-1.0.2 和最新版本中不起作用

import org.sikuli.script.*;

public class TestSikuli {

    public static void main(String[] args) {
            Screen s = new Screen();
            try{
                    s.click("imgs/win-start.png", 0);
                    s.wait("imgs/spotlight-input.png");
                    s.type(null, "hello world\n", 0);
            }
            catch(FindFailed e){
                    e.printStackTrace();
            }

    }

}

它告诉 Screen 是一个 interface 。请告诉我如何使它在最新的 java sikuli-api 中工作。请注意,我对 Sikuli 很陌生。任何建议将不胜感激。另外请为初学者指出正确的 sikuli java

【问题讨论】:

  • 如果您是新手,请尝试阅读文档或手册。
  • java sikuli api 的文档已过时。
  • 尝试添加直接导入到org.sikuli.script.Screen
  • 最新的 Sikuli Java API 文档:doc.sikuli.org/javadoc

标签: java sikuli


【解决方案1】:

new org.sikuli.api.DesktopScreenRegion() 在基本全屏上创建一个ScreenRegion,您可以在其中单击并查找您的图像

要了解如何构建新 API,最好的办法是查看 the sources。幸运的是,要理解的课程并不多。

【讨论】:

    【解决方案2】:

    以下 Sikuli Java 代码应该可以工作:

    import org.sikuli.script.*;
    public class HelloWorld {
        public static void main(String[] args){
            Screen screen = new Screen();
            try{
    
    
    screen.click("D:\\Sikuli\\WinStartButton.png");
    

    //“WinStartButton.png”必须存在于您正在使用的所需位置
    //或者,您可以使用以下代码代替上面的代码:

    screen.type(Key.WIN);
    
            }
            catch(FindFailed e){
                e.getStackTrace();
            }
            screen.type("Hello World");
            screen.type(Key.ENTER);
        }
    }
    

    【讨论】:

    • 我使用了我的绝对图片路径。请改用您的图片路径
    • 最好在Project中创建一个图片文件夹,并将其作为所有图片文件夹。
    【解决方案3】:

    尝试在您的代码中使用图像定位器,

    import org.sikuli.script.*;
    
    import org.sikuli.basics.ImageLocator;
    
    public class AuthLogin {
    public static void main(String[] args) {
            Screen s = new Screen();
    ImageLocator.setBundlePath("path to img directory");
            try{
                    s.click("win-start.png", 0);
                    s.wait("spotlight-input.png");
                    s.type(null, "hello world\n", 0);
            }
            catch(FindFailed e){
                    e.printStackTrace();
            }
     }
    

    【讨论】:

      【解决方案4】:

      我认为您不应该直接在代码中使用绝对图像路径。 我会创建一个包含绝对路径作为静态常量的类。

      例子:

      而不是:

      screen.click( "D:\\Sikuli\\WinStartButton.png");
      

      你可以这样做:

      public static final String IMAGE = "D:\\Sikuli\\WinStartButton.png";
      
      screen.click(IMAGE);
      

      【讨论】:

        猜你喜欢
        • 2017-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 2017-04-13
        相关资源
        最近更新 更多