如何使Xvfb显示可见?

Dzi*_*mid 27 selenium xvfb selenium-webdriver

我通过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在浏览器中做了什么?

sea*_*anf 30

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

x11vnc -display :99 -localhost &
vncviewer :0
Run Code Online (Sandbox Code Playgroud)

  • 如果我在Jenkins节点上运行Selenium + x11vnc,我是否可以远程查看正在发生的事情?我会在本地运行vncviewer并将其指向Jenkins节点吗? (2认同)

ken*_*orb 22

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

sudo apt-get install x11vnc xvfb fluxbox
Run Code Online (Sandbox Code Playgroud)

可选择安装fluxbox以获得简单的窗口管理器.


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

export DISPLAY=:1
Xvfb $DISPLAY -screen 0 1024x768x16 &
fluxbox &
x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb
Run Code Online (Sandbox Code Playgroud)

这是脚本友好版本:

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))"
Run Code Online (Sandbox Code Playgroud)

如果您的Xvfb仅侦听localhost,则可以设置到localhost的隧道,因此vncviewer可以连接到localhost以获得对服务器的远程控制.例如

ssh -N -T -L 5900:localhost:5900 user@remotehost &
vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900
Run Code Online (Sandbox Code Playgroud)

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

x11vnc -display :0.0 -usepw
Run Code Online (Sandbox Code Playgroud)

要设置密码,请运行:.funcs.cmds.inc.sh.

请参阅:Xvfb Wikipedia页面上的SSH远程控制


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

$ 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
Run Code Online (Sandbox Code Playgroud)
  • x11vnc -storepasswd 让它启动Xvfb
  • -create让它转到创建的Xvfb会话(显示X11VNC_FINDDISPLAY_ALWAYS_FAILS=1而不是:1正常的桌面)
  • :0 让它启动Fluxbox(Ubuntu的一个,应该有背景Ubuntu标志)
  • FD_PROG=/usr/bin/fluxbox 将屏幕设置为16位颜色1024x768
  • X11VNC_CREATE_GEOM=${1:-1024x768x16}当它退出时清理,否则Xvfb被遗忘(杀死-gone也会杀死xvfb)

请参阅:带有x11vnc和Xvfb的Ubuntu Fluxbox GUI

  • 这应该是首选答案,因为它是全面的。涵盖通过隧道和远程连接到本地帧缓冲区的所有方面。谢谢@kenorb (2认同)

hro*_*tyr 16

这是虚拟的.从手册页Xvfb(1):

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

另请在手册页中:

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

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

  • `xwud`是转向器,`xwd`(X Window转储)是任何X屏幕/消失的通用屏幕截图实用程序.关于Xvfb的特殊之处在于它的内容已经是`xwd`转储文件(如果你这样说,通过`-fbdir`). (4认同)