【问题标题】:How to take screenshot of Current window or simulate print screen using selenium web drivver如何使用 selenium webdriver 截取当前窗口或模拟打印屏幕
【发布时间】:2013-09-27 09:46:33
【问题描述】:

我正在创建一个自动化工具,这将有助于截取网页的屏幕截图,我正在使用 Selenium Web 驱动程序(Java),目前我可以使用以下代码截取整个网页的屏幕截图

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

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

但我想使用 selenium 单独截屏当前窗口(我想模拟打印屏幕功能的动作),请指导我如何单独截屏当前网页。谢谢前进

问候, 维涅什

【问题讨论】:

    标签: java selenium


    【解决方案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; 
    }
    

    只要在你想拍快照的地方调用这个方法。

    【讨论】:

    • 以下代码截取整个网页的截图,如果页面有大约 10 个页面,那么它将截取所有 10 个页面的截图,但我只想截取我想要的一个页面单独模拟printscreen的动作,我不想用机器人类,因为我想在后台截屏
    • 此代码仅对 webdriver 使用 driver.switchTo() 切换到的框架或网页进行快照。它已经过试验和测试。我不知道你做了什么。你能解释一下?
    • 我目前正在做网站发布,我只想截取当前窗口,网站没有弹窗和其他框架,我想单独截取当前窗口, , 但现在我正在获取整个网页的屏幕截图,
    【解决方案2】:

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

    【讨论】:

    • 不,我想在后台截屏,所以我不能使用 Java Robots 类
    • 你所描述的是不可能的......Chrome目前只截取页面可见部分的屏幕截图,其余部分被黑色覆盖,我相信......但除此之外,我认为您唯一的选择是裁剪屏幕截图。
    • 谢谢老兄,我在 chrome 中测试了以下代码,它在 chrome 中正常工作:),我现在可以单独获取页面的可见部分,但不幸的是我的应用程序仅与 firefox 兼容,有没有什么办法可以在屏幕截图中单独获取浏览器的可见部分,当我使用firefox驱动程序运行相同的代码时,我得到了整个网页的屏幕截图,这是我不想要的,我不能使用Java Robot类作为我也想在后端运行浏览器。任何建议都会对我有很大帮助。在此先感谢 :)
    • 没有。它在 Chrome 中工作的原因是由于他们计划修复的错误。我不知道如何在 Firefox 上引起错误。
    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2015-10-28
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多