サンプルコードのautomated_browser/01/Gemfile
には
group :development, :test do
gem "rspec-rails", "2.0.0"
gem "cucumber-rails", "0.3.2"
gem "webrat", "0.7.2"
gem "database_cleaner", "0.5.2"
gem "selenium-client", "1.2.18"
end
とバージョン指定されていますが、このまま実行すると…
ERROR - Failed to start new browser session, shutdown browser and clear all session data
org.openqa.selenium.server.RemoteCommandException: timed out waiting for window 'null' to appear
:
at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
2012-05-15 15:45:13 +0900 selenium-client received failure from selenium server:
requested:
cmd=getNewBrowserSession
1=*firefox
2=http://localhost:3001
3=
4=
received:
"Failed to start new browser session: Error while launching browser"
called from /Users/foobar/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
とか言われて動かない(-ω-)
Webratが内部にselenium-server.jarを持っていて、それを実行しているのだけど、試しに最新のselenium-serverをダウンロードし、直接実行しつつrake cucumber
すると…
Exception in thread "main" java.net.BindException: Selenium is already running on port 4444. Or some other service is.
:
などと言われるのだけど起動したselenium-server.jarを使って動く!
とりあえず、Webratの使用しているバージョンのselenium-server.jarを置き換えるという強引な手で回避。
cd ~/.rvm/gems/ruby-1.9.3-p194\@rspecbook/gems/webrat-0.7.2/vendor/
wget http://selenium.googlecode.com/files/selenium-server-standalone-2.21.0.jar
mv selenium-server.jar selenium-server.jar.ORG
ln -s selenium-server-standalone-2.21.0.jar selenium-server.jar