使用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);
}
上述代码运行良好,首先弹出一个窗口,然后加载URL。理想情况下,我想做的下一件事是抓取已加载网页的屏幕截图。目前,这些浏览器窗口弹出到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"弹出的窗口没有被遮挡且获得焦点就可以正常工作。但是,如果有另一个窗口遮挡了一部分,就会出现未被渲染的黑色区域。
谢谢!