【发布时间】:2012-01-27 22:35:56
【问题描述】:
是否可以使用 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
我使用上面的 loadPage() 在我的 chromium 浏览器中打开 URL http://www.google.com。只要弹出的“Google - Chromium”窗口通畅且具有焦点,它就可以很好地工作。将另一个窗口放在它的一部分上,我得到一个没有渲染的大黑色区域。
谢谢!
【问题讨论】:
标签: java debugging google-chrome google-chrome-extension google-chrome-devtools