diff --git a/lib/capybara/driver/webkit/node.rb b/lib/capybara/driver/webkit/node.rb index 785709e..55d7e3e 100644 --- a/lib/capybara/driver/webkit/node.rb +++ b/lib/capybara/driver/webkit/node.rb @@ -25,7 +25,7 @@ class Capybara::Driver::Webkit end def click - raise NotImplementedError + invoke "click" end def drag_to(element) diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb index 4a7fc3e..5b0e1cc 100644 --- a/spec/driver_spec.rb +++ b/spec/driver_spec.rb @@ -9,6 +9,7 @@ describe Capybara::Driver::Webkit do + Next HTML [200, @@ -58,6 +59,7 @@ describe Capybara::Driver::Webkit do

hello

+ Next } end @@ -126,6 +128,11 @@ describe Capybara::Driver::Webkit do to raise_error(Capybara::Driver::Webkit::WebkitError) end + it "clicks an element" do + subject.find("//a").first.click + subject.current_url =~ %r{/next$} + end + it "returns a node's tag name" do subject.find("//p").first.tag_name.should == "p" end diff --git a/src/capybara.js b/src/capybara.js index debc37c..6544f18 100644 --- a/src/capybara.js +++ b/src/capybara.js @@ -28,6 +28,12 @@ Capybara = { tagName: function(index) { return this.nodes[index].tagName.toLowerCase(); + }, + + click: function (index) { + var clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + this.nodes[index].dispatchEvent(clickEvent); } };