我正在尝试做什么
使用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)
我从来没有在我的本地或开发箱上得到这个。有任何想法吗?这是chromedriver
,xvfb
或其运行环境的问题吗?部署框中的一些区别与我缺少的开发框不同?