【问题标题】:Error running selenium ruby script through xvfb-run通过 xvfb-run 运行 selenium ruby​​ 脚本时出错
【发布时间】:2014-10-22 22:26:48
【问题描述】:

我想做什么

使用 selenium 及其 ruby​​ 绑定打开 chrome 并从 DOM 读取值。这部分效果很好,但是我需要在 linux 服务器上无头运行它。看起来很简单,所以我使用 xvfb-run 使用以下命令运行它:

export PATH=$PATH:./bin
xvfb-run --server-arg="-screen 0, 1024x768x16" ruby script.rb

第一行将二进制chromedriver 添加到PATH,第二行通过xvfb 运行脚本。我在本质上是一个开发盒的 EC2 ubuntu 盒上工作。一切都很棒。

现在是时候使用相同的 bash 脚本在另一个 EC2 ubuntu 机器上运行它了。它吐出一个错误,即找不到chromedriver 二进制文件。奇怪,因为它在另一个盒子上运行良好。我检查了,二进制文件在那里。我手动将它添加到路径并再次运行 bash 脚本,同样的错误。经过一些故障排除和谷歌搜索后,我发现了这个:

https://code.google.com/p/selenium/wiki/ChromeDriver

这表明 chromedriver 需要符号链接到 /usr/bin/google-chrome。再次奇怪,因为它在另一个盒子和我的本地机器上运行良好,没有这个符号链接。我将它符号链接到这个位置,现在这是我得到的错误:

/usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.41.0/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok': unknown error: Chrome failed to start: exited abnormally (Selenium::WebDriver::Error::UnknownError)

我从来没有在我的本地或开发盒上得到这个。有任何想法吗?这是chromedriverxvfb 或其运行环境的问题吗?部署框的某些差异与我缺少的开发框不同?

【问题讨论】:

  • 您是否尝试过使用Headless gem?
  • 是的,我见过它,但我避免了它,因为它涉及代码更改而不是如何运行代码。如果我无法解决这个问题,我会试一试。谢谢。

标签: ruby linux selenium xvfb


【解决方案1】:

我想通了。误解了方向here。在/usr/bin 中安装google-chrome 并且它工作正常。

【讨论】:

    最近更新 更多