我正在尝试使用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身份运行脚本。
答案 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包装器