如何使用selenium webdriver获取当前窗口的屏幕截图或模拟打印屏幕

时间:2013-09-27 09:46:33

标签: java selenium

我正在创建一个自动化工具,它将有助于拍摄网页的屏幕截图,我使用Selenium Web驱动程序(Java),目前我能够使用以下代码拍摄整个网页的屏幕截图< / p>

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

FileUtils.copyFile(scrFile, new File("full.jpeg"));

但是我想单独使用当前窗口的屏幕截图(我想模拟打印屏幕功能的动作)使用硒,请指导我如何单独拍摄当前网页的屏幕截图。谢谢预先

此致 维涅什

2 个答案:

答案 0 :(得分:1)

查看我的实用程序代码

public static String captureScreen() {
    //get your driver instance        
    try {
        File source = ((TakesScreenshot)
                driver).getScreenshotAs(OutputType.FILE);
        Calendar currentDate = Calendar.getInstance();
        SimpleDateFormat formatter = new SimpleDateFormat(
                "yyyy/MMM/dd HH:mm:ss");
        String dateN = formatter.format(currentDate.getTime()).replace("/","_");
        String dateNow = dateN.replace(":","_");
        String snapShotDirectory =  /*your snapshot folder path*/+ dateNow;

        File f = new File(snapShotDirectory);
        if(f.mkdir()){
        path = f.getAbsolutePath() + "/" + source.getName();
        FileUtils.copyFile(source, new File(path)); 
        }
    }
    catch(IOException e) {
        path = "Failed to capture screenshot: " + e.getMessage();
    }
    return path; 
}

只需在想要拍摄快照的地方调用此方法。

答案 1 :(得分:0)

WebDriver中没有任何内容支持此功能,但您可以使用Java Robots截取屏幕截图: http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html#createScreenCapture%28java.awt.Rectangle%29