我正在尝试使用ruby脚本进行一些无头的测试。本质上,我正在执行display:1上的Xvfb,然后Watir::Browser.new(:firefox)使用watir- webdriver启动。
Watir::Browser.new(:firefox)
如果您以root用户身份运行脚本,则效果很好-我可以运行x11vnc并观看脚本执行浏览器并与之交互。
问题是,我需要能够从Rails应用程序调用此ruby脚本,而不是以root身份运行…如果我尝试以常规用户身份从命令行运行脚本,则Xvfb会在:1上启动像往常一样,但是Watir不会启动浏览器…它最终会在60秒后超时。通过VNC连接时,鼠标光标将显示黑屏。
我可以从命令行完成全部工作-启动Xvfb,然后启动firefox --display=:1并启动浏览器,因此它一定是Selenium问题,对不对?
firefox --display=:1
果壳:Selenium / Webdriver拒绝在Xvfb中启动浏览器,除非我以root身份运行脚本。
解决了!在您问了这个问题之后,类似的事情会如何解决自己,真是令人惊讶。
对于那些想知道为什么的人,我需要做一些事情…
1)确保有问题的用户具有有效的主目录(默认情况下,www-data没有…其主目录由root拥有)
2)从命令行启动Xvfb,然后从命令行启动firefox(不是从脚本内部)-这将用普通的.dbus,.gconf等文件夹填充用户主文件夹
3)如果收到大量延迟,然后出现错误消息,例如“在加载或保存firefox-bin的配置信息时发生错误”,请删除用户主目录中的.dbus文件夹
4)再试一次#2-如果以前有配置错误,现在应该消失了。
5)尝试再次运行脚本。
这对我来说就像是一种魅力,因此,如果您在从Web应用程序中运行Xvfb和watir-webdriver时遇到类似的问题,请尝试一下。
感谢所有人为在网络上发布最佳问答网站所做的贡献…这个地方节省了我的屁股,比我想提的要多。
注意:用户最初在其问题中输入此修订内容,因为他们不知道如何将其发布为答案。后来,一个好心人将其删除,但从未添加为答案。