我正在尝试在运行测试执行时拍摄屏幕截图。 我使用以下代码使用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菜单栏拍摄整个屏幕的屏幕截图。我想要的只是拍摄我的日食窗口,特定区域的屏幕截图。
答案 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"));
这样只会根据您的要求捕获应用程序窗口,因为您现在有一个区域,您可以对其进行操作以增加/减少捕获的大小。