java - 使用 Chrome 开发者工具获取 Chrome 的屏幕截图?

标签 java debugging google-chrome google-chrome-extension google-chrome-devtools

是否可以使用 Chrome 开发工具远程调试器抓取打开窗口的屏幕截图?

例如,我正在连接到远程调试端口并且我有这个 弹出一个空窗口的代码:

   private void sendWindowPop(int width, int height) throws
IOException {
       hsc.send("{\"method\": \"Runtime.evaluate\", \"id\": "
               + hsc.nextInt()
               + ", \"params\": {"
               + "\"expression\":
\"window.open('about:blank','name','toolbar=0,scrollbars=0,"
               + "location=0,status=0,menubar=0,resizable=0,width="
               + width
               + ",height="
               + height
               + "');\""
               + "}}");

(hsc 是我在 http://localhost:9222 处与调试器的连接)

然后,我用这个加载我的目标 URL:

    private void loadPage(String uriString) throws IOException {
       hsc.send("{\"method\": \"Page.open\", \"id\": " +
       hsc.nextInt() + ", \"params\": {\"url\": \"" + uriString + "\"}}");
       hsc.waitFor(ChromeNotifications.PAGE_LOADEVENTFIRED, DEFAULT_TIMEOUT_MILLIS);
   }

上面的代码工作正常,首先弹出一个窗口然后加载 网址。理想情况下,我想做的下一件事是抓取屏幕截图 加载的网页。现在,这些浏览器窗口会弹出 xvfb虚拟桌面,我可以用ImageMagick的导入工具抓取 目标窗口的屏幕截图,但仅当它位于 前景

这是一个问题,因为这个应用程序被设计为运行在 与弹出到虚拟桌面的多个窗口并行。任何 窗口重叠我的目标窗口只会给我一个黑色 屏幕截图,因为 Xfvb 只渲染可见的内容。

我还查看了 API 引用 chrome.tabs.captureVisibleTab。运气不好,它无法捕获不可见的内容。

有没有办法,使用远程调试器,抓取一个屏幕截图 开窗?

(仅供引用,我的 ImageMagick 导入命令是这样的)

    DISPLAY=:0.0 import -window "Google - Chromium" screenshot.png

我在哪里打开 URL http://www.google.com在我的 chromium 浏览器中使用上面的 loadPage() 。只要弹出的“Google - Chromium”窗口畅通无阻且有焦点,它就可以正常工作。将另一个窗口放在它的一部分上,我得到一个未渲染的大黑色区域。

谢谢!

最佳答案

Chrome 远程调试协议(protocol)现在支持 Page.captureScreenshot 功能

这是 CoffeeScript 中的一个例子

screenshot: (name, callback)=>
    safeName = name.replace(/[^()^a-z0-9._-]/gi, '_') + ".png"
    png_File = "./_screenshots".append_To_Process_Cwd_Path().folder_Create()
                               .path_Combine(safeName)

    @chrome._chrome.Page.captureScreenshot (err, image)->
      require('fs').writeFile png_File, image.data, 'base64',(err)->
         callback()

(片段来自 https://github.com/TeamMentor/TM_4_0_Design/blob/Issue_80_Jade_Cleanup/QA/API/QA-TM_4_0_Design.coffee#L54 )

关于java - 使用 Chrome 开发者工具获取 Chrome 的屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040979/

相关文章:

java - 使用 Google Sheets API v4 更改行的背景颜色

javascript - 在 Chrome 上右键单击获取超链接文本

java - 如何设置 Gradle 自定义 ant 任务类路径?

java - 停止执行 Groovy 脚本

java - 通过 telnet 连接时出现连接超时

php - 调试PHP

objective-c - 错误 : Couldn't materialize struct: Couldn't read eax

android - 如何查看 Android Studio 中发生异常的确切位置?

google-chrome - 主机规则谷歌浏览器,添加配置

css - 如何使表单宽度等于 Chrome 中输入字段的宽度?