在sikuli采取特定区域的屏幕截图为eclipse gui

时间:2017-11-09 16:43:44

标签: java automation sikuli

我正在尝试在运行测试执行时拍摄屏幕截图。 我使用以下代码使用sikuli java:

 Screen screen = new Screen();
 ImageIO.write(screen.capture().getImage(), "png", new File(file-location+"1.png"));

我使用的另一种方式是java awt:

    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Dimension screenSize = toolkit.getScreenSize();
    Rectangle screenRect = new Rectangle(screenSize);
    Robot robot = new Robot();
    BufferedImage image5 = robot.createScreenCapture(screenRect);
    ImageIO.write((RenderedImage) image5, "png", new File(AppConstant.IMAGE_DIR+"1.png"));

但问题是,它是用Ubuntu菜单栏拍摄整个屏幕的屏幕截图。我想要的只是拍摄我的日食窗口,特定区域的屏幕截图。

2 个答案:

答案 0 :(得分:0)

这样做的一种方法是使用App类。因此,如果您像这样开始Eclipse过程:

// You might need to provide full path here
App app = App.open("eclipse.exe");

然后,您可以将capture方法与app区域一起用作参数。 app区域可以通过window()方法获得。所以:

App app = App.open("eclipse.exe");
ImageIO.write(screen.capture(app.window()).getImage(), "png", new File("1.png")); 

答案 1 :(得分:0)

您可以使用Sikuli App Class执行此操作。例如。如果应用程序在运行测试时处于焦点,则可以使用以下方法:

Region appRegion = App.focusedWindow();
Screen screen = new Screen();
 ImageIO.write(screen.capture(appRegion).getImage(), "png", new File(file-location+"1.png"));

这样只会根据您的要求捕获应用程序窗口,因为您现在有一个区域,您可以对其进行操作以增加/减少捕获的大小。