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

时间:2011-04-25 19:05:10

标签: ruby selenium watir-webdriver xvfb

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

4)再次尝试#2 - 如果您之前遇到配置错误,现在应该已经消失了。

5)再次尝试运行脚本。

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

感谢所有人为网上最佳Q& A网站做出了贡献...这个地方比我想提的更多次保存我的屁股。

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

答案 1 :(得分:1)

嗨,不知道这个link是否可以为您提供帮助。这对我帮助很大。我需要在启动/重启时自动运行watir-webdriver - 它对我有用(也请阅读评论)。

答案 2 :(得分:0)

您还应该查看Xvfb http://rubygems.org/gems/headless

的Ruby包装器