2013-10-27 21 views
0

我对sikuli很陌生,并试图简单点击图片截图,这对我来说已经成为一门火箭科学。为什么sikuli脚本不能点击图片?

仅供参考 - 我截取了google徽标并将其保存在我的机器上。但是,如果我获取实际的Google徽标图片网址,则该脚本可以正常工作。

这是使用图像截图的正确方法吗?

public class TestGenericButton { 
    public static void main(String[] args) throws MalformedURLException { 
     // Open the main page of Google Code in the default web browser 
     browse(new URL("http://code.google.com")); 

     // Create a screen region object that corresponds to the default monitor in full screen 
     ScreenRegion s = new DesktopScreenRegion(); 

     // Specify an image as the target to find on the screen 
     //URL imageURL = new URL("http://code.google.com/images/code_logo.gif"); 
     URL imageURL = new URL("img\\google.gif"); 
     Target imageTarget = new ImageTarget(imageURL); 

     // Wait for the target to become visible on the screen for at most 5 seconds 
     // Once the target is visible, it returns a screen region object corresponding 
     // to the region occupied by this target 
     ScreenRegion r = s.wait(imageTarget,5000); 

     // Display "Hello World" next to the found target for 3 seconds 
     Canvas canvas = new DesktopCanvas(); 
     canvas.addLabel(r, "Hello World").display(3); 

     // Click the center of the found target 
     Mouse mouse = new DesktopMouse(); 
     mouse.rightClick(r.getCenter()); 
    } 
}  
+0

什么是你看到的错误? – Akbar

回答

0

不,这不是创建ImageTarget的方式。您在要使用的文件中有图像,因此您需要通过File,而不是URL

the documentation,而不是

URL imageURL = new URL("img\\google.gif"); 
    Target imageTarget = new ImageTarget(imageURL); 

File imageFile = new File("img\\google.gif"); // assumes your working directory is set right... 
    Target imageTarget = new ImageTarget(imageFile); 
0

提供的IMAGEURL,这种方法应该做的点击部分:)

private void click(String image) throws FindFailed{ 

    Screen screen = new Screen(); 

    Pattern pattern = new Pattern(image).similar((float) 0.7); 

    if(screen.find(pattern)!=null){ 
     screen.mouseMove(pattern); 
     screen.click(pattern); 
    } 
    }