使用robot.createScreenCapture在远程计算机上获取黑色图像

时间:2014-04-02 07:32:06

标签: windows session selenium remote-desktop rdp

我在rdp会话关闭时获取黑屏幕截图时遇到了常见问题。 没有为这个问题找到任何可行的答案。 我有java-selenium测试。 代码:

private void screenShot() {
    try {
        String newFileNamePath;  
        File directory = new File (".");
        DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
        Date date = new Date();

        newFileNamePath = directory.getCanonicalPath() + "\\test-output\\" + "logs\\" + "screenshot_" + dateFormat.format(date) + ".png";
        System.out.println(newFileNamePath);

        //Capture the screen shot of the area of the screen defined by the rectangle
        Robot robot = new Robot();
        BufferedImage bi=robot.createScreenCapture(new Rectangle(1920,1080));
        ImageIO.write(bi, "png", new File(newFileNamePath));
        Reporter.log(newFileNamePath);   
    }       
    catch (AWTException e) {
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    }

当我在远程服务器(Windows Server 2008 R2)上通过Jenkins运行测试并且rdp-session 关闭时,我获得了黑屏幕截图。 如果会话处于活动状态 - 我会获得正常的屏幕截图。 但是我需要在会话结束时制作正常的屏幕截图。

我该怎么做? 有任何想法吗?

VisualCron和selenium.captureScreenshot()并不适合我。

1 个答案:

答案 0 :(得分:0)

我一直在寻找使用VNC服务器的替代方案,但我无法找到它。所以我的回答是"使用VNC"。就个人而言,我更喜欢UltraVNC

安装后,使用uvnc会话启动selenium Jenkins slave并断开连接。

AWT机器人现在可以使用了。