diff --git a/capybara.gemspec b/capybara.gemspec index afe6e5e2..61f43397 100644 --- a/capybara.gemspec +++ b/capybara.gemspec @@ -23,11 +23,11 @@ Gem::Specification.new do |s| s.add_runtime_dependency("nokogiri", [">= 1.3.3"]) s.add_runtime_dependency("mime-types", [">= 1.16"]) - s.add_runtime_dependency("selenium-webdriver", ["~> 2.0"]) s.add_runtime_dependency("rack", [">= 1.0.0"]) s.add_runtime_dependency("rack-test", [">= 0.5.4"]) s.add_runtime_dependency("xpath", ["~> 1.0.0"]) + s.add_development_dependency("selenium-webdriver", ["~> 2.0"]) s.add_development_dependency("sinatra", [">= 0.9.4"]) s.add_development_dependency("rspec", [">= 2.2.0"]) s.add_development_dependency("launchy", [">= 2.0.4"]) diff --git a/lib/capybara/selenium/driver.rb b/lib/capybara/selenium/driver.rb index 1bad1906..0d7ebd39 100644 --- a/lib/capybara/selenium/driver.rb +++ b/lib/capybara/selenium/driver.rb @@ -1,4 +1,11 @@ -require 'selenium-webdriver' +begin + require 'selenium-webdriver' +rescue LoadError => e + if e.message =~ /selenium-webdriver/ + raise LoadError, "Capybara's selenium driver is unable to load `selenium-webdriver`, please install the gem and add `gem 'selenium-webdriver'` to your Gemfile if you are using bundler." + end +end + class Capybara::Selenium::Driver < Capybara::Driver::Base DEFAULT_OPTIONS = { @@ -42,7 +49,7 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base def title browser.title end - + def current_url browser.current_url end @@ -50,11 +57,11 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base def find_xpath(selector) browser.find_elements(:xpath, selector).map { |node| Capybara::Selenium::Node.new(self, node) } end - + def find_css(selector) browser.find_elements(:css, selector).map { |node| Capybara::Selenium::Node.new(self, node) } end - + def wait?; true; end def needs_server?; true; end @@ -137,5 +144,5 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base def invalid_element_errors [Selenium::WebDriver::Error::StaleElementReferenceError, Selenium::WebDriver::Error::UnhandledError, Selenium::WebDriver::Error::ElementNotVisibleError] end - + end