From 43c70e4045b98b5267569fcdb32b9ac47a3e3d63 Mon Sep 17 00:00:00 2001 From: Marco Antonio Date: Thu, 19 Jan 2012 20:27:30 -0200 Subject: [PATCH] Raise ElementNotDisplayedError also for #drag_to and #select_option when they are invisible. --- lib/capybara/driver/webkit/node.rb | 14 ++++++---- spec/driver_spec.rb | 42 +++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/lib/capybara/driver/webkit/node.rb b/lib/capybara/driver/webkit/node.rb index 0876eb3..ffe58d2 100644 --- a/lib/capybara/driver/webkit/node.rb +++ b/lib/capybara/driver/webkit/node.rb @@ -37,6 +37,7 @@ class Capybara::Driver::Webkit end def select_option + check_visibility(self) invoke "selectOption" end @@ -50,14 +51,13 @@ class Capybara::Driver::Webkit end def click - if visible? - invoke "click" - else - raise ElementNotDisplayedError, "This element is not visible so it may not be interacted with" - end + check_visibility(self) + invoke "click" end def drag_to(element) + check_visibility(self) + check_visibility(element) invoke 'dragTo', element.native end @@ -126,5 +126,9 @@ class Capybara::Driver::Webkit def multiple_select? self.tag_name == "select" && self["multiple"] == "multiple" end + + def check_visibility(element) + raise(ElementNotDisplayedError, "This element is not visible so it may not be interacted with") unless element.visible? + end end end diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb index 6767791..100f697 100644 --- a/spec/driver_spec.rb +++ b/spec/driver_spec.rb @@ -614,10 +614,13 @@ describe Capybara::Driver::Webkit do
Change me
Push me
Release me
+ +