通过xvfb运行selenium-ruby脚本时出错



我想做什么

使用selenium及其ruby绑定打开chrome并从DOM中读取值。这部分工作得很好,但是我需要在linux服务器上无头无脑地运行它。看起来很容易,所以我使用xvfb运行它,并使用以下命令:

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或其运行环境的问题吗?部署框中的某些差异可能与我缺少的开发框不同?

我想明白了。误解了这里的指示。在/usr/bin中安装google-chrome并运行。

最新更新