如何拍摄我的 Xvfb 缓冲区的屏幕截图?

Dav*_*ave 20 chrome screenshot imagemagick xvfb display

我正在使用亚马逊 Linux。我想在我的 node.js Selnium 测试中运行一个无头 Chrome 浏览器。所以我像这样启动我的 Xvfb 服务器......

if ! pidof /usr/bin/Xvfb; then Xvfb :0 -screen 5 1024x768x8 & fi
Run Code Online (Sandbox Code Playgroud)

但是,当我在测试失败后尝试截取屏幕截图时,

DISPLAY=:0 import -window root /tmp/screenshot.png
Run Code Online (Sandbox Code Playgroud)

我收到下面提到的错误...

+ DISPLAY=:0
+ import -window root /tmp/screenshot.png
import: unable to open X server `:0' @ error/import.c/ImportImageCommand/369.
Run Code Online (Sandbox Code Playgroud)

如何截取 Xvfb 缓冲区的屏幕截图?

小智 6

我尝试了类似的东西(在另一个发行版上并截取 xterm 窗口的屏幕截图,但这应该不会有太大不同)我不得不使用 display :1 因为 display :0 已经被使用:

$ Xvfb :1 -screen 5 1024x768x8 &
[1] 23728
$ pidof /usr/bin/Xvfb
23728
$ DISPLAY=:1 xterm 2>/dev/null &
[2] 23767
$ DISPLAY=:1 xwd -root -silent | convert xwd:- png:/tmp/screenshot.png
$
Run Code Online (Sandbox Code Playgroud)

我有一个 "/tmp/screenshot.png" 文件,在黑色背景上有预期的 xterm 窗口。你也可以使用

xwd -display :1 -root -silent | convert xwd:- png:/tmp/screenshot.png
Run Code Online (Sandbox Code Playgroud)

  • Debian/Ubuntu:要安装“xwd”和“convert”,请运行:“apt-get install x11-apps imagemagick” (3认同)