41

我正在通过 Xvfb 在显示号 :99 上运行 selenium,如下所示:

/usr/bin/Xvfb :99 -ac -screen 0 1024x768x8 & export DISPLAY=":99" && java -jar /usr/lib/selenium/selenium-server-standalone-2.24.1.jar -port 4444

但是,默认情况下,显示 :0 以外的数字是不可见的。我如何使它可见以实际查看 selenium 在浏览器中所做的事情?

4

4 回答 4

57

使用X11vnc

您只需要x11vnc通过以下方式安装:

sudo apt-get install x11vnc xvfb fluxbox

可选择安装fluxbox以拥有简单的窗口管理器。

x11vnc在外壳中运行

然后设置访问 Xvfb 进行远程控制,您可以使用 X11 over SSH 或 VNC over SSH,例如

export DISPLAY=:1
Xvfb $DISPLAY -screen 0 1024x768x16 &
fluxbox &
x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb

x11vnc使用脚本运行

这是要运行的脚本友好版本Xvfbx11vnc并且fluxbox

export DISPLAY=${DISPLAY:-:0} # Select screen 0 by default.
xdpyinfo
if which x11vnc &>/dev/null; then
  ! pgrep -a x11vnc && x11vnc -bg -forever -nopw -quiet -display WAIT$DISPLAY &
fi
! pgrep -a Xvfb && Xvfb $DISPLAY -screen 0 1024x768x16 &
sleep 1
if which fluxbox &>/dev/null; then
  ! pgrep -a fluxbox && fluxbox 2>/dev/null &
fi
echo "IP: $(hostname -I) ($(hostname))"

注意:我在以下Docker 项目中使用它(检查.funcs.cmds.inc.sh)。

x11vnc使用单线运行

或者您可以使用以下单线:

$ x11vnc -create -env FD_PROG=/usr/bin/fluxbox \
    -env X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 \
        -env X11VNC_CREATE_GEOM=${1:-1024x768x16} \
        -gone 'killall Xvfb' \
        -bg -nopw

  • -create让它启动 Xvfb
  • X11VNC_FINDDISPLAY_ALWAYS_FAILS=1使其进入创建的 Xvfb 会话(显示:1而不是:0普通桌面)
  • FD_PROG=/usr/bin/fluxbox让它启动 Fluxbox(Ubuntu 的一个,应该有背景 Ubuntu 标志)
  • X11VNC_CREATE_GEOM=${1:-1024x768x16}将屏幕设置为 16 位颜色 1024x768
  • -gone退出时清理,否则 Xvfb 被留下(杀死xvfb也杀死fluxbox

连接到 VNC

如果您的 Xvfb 仅在 localhost 上侦听,您可以设置到 localhost 的隧道,因此 vncviewer 可以连接到 localhost 以远程控制服务器。例如

ssh -N -T -L 5900:localhost:5900 user@remotehost &
vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900

或者要使用密码监听所有地址,请使用:

x11vnc -display :0.0 -usepw

要设置密码,请运行:x11vnc -storepasswd

请参阅:Xvfb 维基百科页面上的远程控制 SSH


还要检查:

于 2016-11-18T13:42:12.260 回答
32

您可以通过在 Xvfb 显示器上运行 VNC 服务器来获得实时视图,如下所示:

x11vnc -display :99 -localhost &
vncviewer :0
于 2015-02-10T07:54:26.103 回答
22

是虚拟的。从手册页Xvfb(1)

Xvfb 是一个 X 服务器,可以在没有显示硬件和物理输入设备的机器上运行。它使用虚拟内存模拟哑帧缓冲区。

同样在手册页中:

Xvfb -pixdepths 3 27 -fbdir /var/tmp 服务器将作为服务器编号 0 侦听连接,将具有默认屏幕配置(一个屏幕,1280x1024x8),还将支持 3 和 27 的像素图深度,并将使用 /var/tmp 中的内存映射文件作为帧缓冲区。

xwud -in /var/tmp/Xvfb_screen0 显示前面示例启动的服务器的屏幕 0。

于 2012-08-21T07:23:56.283 回答
1

一个简单的解决方案也是不断地对程序进行截图,如下所示:

while /bin/true; do
    DISPLAY=:99 import -window root ~/Pictures/xvfb_screenshot.png
    sleep 0.1
done &
PID=$!
feh --reload 0.1 ~/Pictures/xvfb_screenshot.png 2>/dev/null
kill $PID

注意:需要安装imagemagickfeh

于 2018-02-16T15:08:29.830 回答