在Ruby中作为NON-root用户在Xvfb中运行Selenium :: WebDriver :: Firefox

我正在尝试使用ruby脚本进行一些无头测试。 基本上我在显示器上执行Xvfb:1,然后使用watir-webdriver启动Watir::Browser.new(:firefox)

如果以root身份运行脚本,这很有用 – 我可以运行x11vnc并观察脚本执行浏览器并与之交互。

问题是,我需要能够从Rails应用程序调用这个ruby脚本,而不是以root身份运行它…如果我尝试以普通用户的身份从命令行运行脚本,Xvfb会启动:1像往常一样,Watir不会启动浏览器…它最终会在60秒后超时。 通过VNC连接显示带有鼠标光标的黑屏。

我可以从命令行中完成所有操作 – 启动Xvfb,然后启动firefox --display=:1并启动浏览器,因此它必须是Selenium问题,对吧?

Nutshell:Selenium / Webdriver拒绝在Xvfb中启动浏览器,除非我以root身份运行脚本。

  • 已解决 – 编辑* – 抱歉,我无法回答这个问题,但显然我的帐户太新了,不能做到这一点。

解决了! 令人惊讶的是,在您提出这个问题之后,这样的事情往往会自行解决……

对于那些想知道原因的人,我需要做一些事情……

1)确保有问题的用户有一个正常工作的主目录(www-data默认情况下没有…其主目录由root拥有)

2)从命令行启动Xvfb,然后从命令行启动firefox(不是从脚本中启动) – 这将使用通常的.dbus,.gconf等文件夹填充用户主文件夹

3)如果您收到大量延迟,然后出现“加载或保存firefox-bin配置信息时出错”的错误消息,请删除用户主目录中的.dbus文件夹

4)再次尝试#2 – 如果之前有配置错误,它现在应该消失了。

5)再次尝试运行脚本。

这对我来说就像一个魅力,所以如果你在Web应用程序中运行Xvfb和watir-webdriver时遇到类似的问题,那就试一试吧。

感谢所有人为网上最好的问答网站做出了贡献…这个地方比我想提到的更多次节省了我的屁股。

注意:用户最初输入此修改后的问题,因为他们无法弄清楚如何将其作为答案发布。 后来由一些有意义的人编辑出了问题,但从未添加作为答案。

您好,不知道这个链接是否对您有所帮助。 这对我帮助很大。 我需要在启动/重启时自动运行watir-webdriver – 它对我有用(也请阅读注释)。

你还应该看一下Xvfb的Ruby包装器http://rubygems.org/gems/headless