我已在我的无头服务器上设置了xvfb服务器,当我运行DISPLAY=:99 firefox时,出现了缺少RANDR扩展的异常。
许多人建议从xorg.conf文件中禁用某些xinerna,但在我的情况下,这个文件没有被创建。
因此,我正在寻找如何添加缺失的RANDR扩展。
当我通过 xvfb 使用 Selenium 运行 Firefox headless 时,我看到了这个错误消息。结果证明这个消息对我来说是一个误导。该消息只是一个警告,而不是错误。它不是 Firefox 没有正确启动的原因。
Firefox 没有为我启动的原因是它已经更新到一个不再兼容我使用的 Selenium 驱动程序的版本。 我将 Selenium 驱动程序升级到最新版本,Firefox 再次可以正常启动(即使出现了关于 RANDR 的此警告消息)。
新版本的 Firefox 通常只与一两个版本的 Selenium 兼容。 偶尔会发布与< strong >没有 Selenium 兼容版本的 Firefox。 当发生这种情况时,可能需要一两个星期才能发布 Selenium 的新版本。 因此,我现在保留一个已知与我安装的 Selenium 版本兼容的 Firefox 版本。 除了由我的软件包管理器更新的 Firefox 版本之外,我还在 /opt/
中安装了一个版本(例如 / opt / firefox31 / )。 Selenium Java API 需要提供 Firefox 二进制文件的位置参数。 缺点是旧版本的 Firefox 存在已知的安全漏洞,不应与不受信任的内容一起使用。
首先,Xvfb不能从xorg.conf读取配置。Xvfb是KDrive X服务器的变体之一,像该系列的所有成员一样,它从命令行获取配置。
确实,XRandR和Xinerama是互斥的,但在Xvfb的情况下,首先不存在Xinerama。您可以使用以下至少命令行选项启动Xvfb以启用XRandR扩展。
Xvfb +extension RANDR [further options]
strings $(which Xvfb) | grep -i randr
的结果是什么? - datenwolfxvfb-run
。 - Denis Shevchenkoxvfb-run
和Xvfb
不是同一个东西。你必须将参数传递给Xvfb
,而且很可能xvfb-run
会丢弃额外的命令行参数。 - datenwolf我在使用Firefox 30 + Selenium 2.49 + Ubuntu 15.04时遇到了同样的问题。
在Ubuntu 14上它可以正常工作,但升级到15.04后,我遇到了相同的RANDR
警告,并且在使用Xfvb启动Firefox时出现了问题。
添加+extension RANDR
后,它又可以正常工作了。
$ vim /etc/init/xvfb.conf
#!upstart
description "Xvfb Server as a daemon"
start on filesystem and started networking
stop on shutdown
respawn
env XVFB=/usr/bin/Xvfb
env XVFBARGS=":10 -screen 1 1024x768x24 -ac +extension GLX +extension RANDR +render -noreset"
env PIDFILE=/var/run/xvfb.pid
exec start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $XVFB -- $XVFBARGS >> /var/log/xvfb.log 2>&1