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

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

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

if ! pidof /usr/bin/Xvfb; then Xvfb :0 -screen 5 1024x768x8 & fi

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

DISPLAY=:0 import -window root /tmp/screenshot.png

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

+ DISPLAY=:0
+ import -window root /tmp/screenshot.png
import: unable to open X server `:0' @ error/import.c/ImportImageCommand/369.

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

答案1

我尝试了类似的东西(在另一个发行版上并截取 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
$

我有一个“/tmp/screenshot.png”文件,其中包含黑色背景上的预期 xterm 窗口。您还可以使用

xwd -display :1 -root -silent | convert xwd:- png:/tmp/screenshot.png

相关内容