6

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

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

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

我可以从命令行做很多事情——启动 Xvfb,然后启动firefox --display=:1浏览器,所以它一定是 Selenium 问题,对吧?

简而言之:除非我以 root 身份运行脚本,否则 Selenium/Webdriver 拒绝在 Xvfb 中启动浏览器。

4

3 回答 3

4
  • 已解决 - 编辑 * - 对不起,我无法回答这个问题,但显然我的帐户太新了,还不能这样做。

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

对于那些想知道为什么的人,我需要做一些事情......

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

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

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

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

5) 再次尝试运行脚本。

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

感谢所有人为网络上最好的问答网站做出的贡献……这个地方救了我的屁股比我想提的还要多。

注意:用户最初输入了这个修改后的问题,因为他们不知道如何将其发布为答案。后来,一些善意的人将其从问题中删除,但从未添加为答案。

于 2014-07-01T20:05:15.537 回答
1

你好,不知道这个链接对你有没有帮助。这对我帮助很大。我需要在启动/重启时自动运行 watir-webdriver - 它对我有用(也请阅读评论)。

于 2011-06-21T07:21:41.257 回答
0

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

于 2011-12-28T06:31:52.043 回答