如何使用selenium通过cron运行rspec测试

时间:2011-09-01 20:10:41

标签: ruby rspec continuous-integration cron

我无法通过cron运行rspec测试。我正在使用selenium访问firefox并测试登录到页面。在cron外部执行时,我的所有文件都能正常工作。从我读过的,问题可能是cron需要一个显示环境来运行像firefox这样的程序。这就是我被困住的地方,如何设置selenium的显示环境以从cron内部启动firefox。

我已尝试在crontab中设置几个显示方式..

*/25 * * * * /home/justin/test.sh --display=:0 > testlog

*/25 * * * * DISPLAY=:0; /home/justin/test.sh > testlog;

我也尝试在脚本中设置..

#!/bin/sh

cd /home/justin/widget_ui_testing/

DISPLAY=:0

/home/justin/.rvm/bin/rvm exec /home/justin/.rvm/gems/ruby-1.9.2-p290/bin/rspec 
-fdoc /home/justin/widget_ui_testing/spec/requests/log_in_spec.rb

我不断收到的错误消息是

Selenium::WebDriver::Error::WebDriverError:
unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055)
# ./spec/requests/log_in_spec.rb:22:in `block (2 levels) in <top (required)>'

我想知道是否有办法更改selenium的代码以使用指定的显示运行firefox。或者,如果我错过了一些东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

你必须先启动Xvfb。我建议你使用headless gem来简化与Xvfb的交互。另请参阅自述文件,它有类似的用例。

另请查看有关设置Jenkins和无头的blog post

P.S:只是一个建议 - 不要将cron用于此目的使用CI工具。我建议Jenkins CI它可以通过轮询SCM和定期(确切的用例)进行构建。

相关问题