diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb index 74bfaf1..6ce04fd 100644 --- a/spec/driver_spec.rb +++ b/spec/driver_spec.rb @@ -637,12 +637,12 @@ describe Capybara::Driver::Webkit do it "triggers radio input events" do subject.find("//input[@type='radio']").first.set(true) - subject.find("//li").map(&:text).should == %w(mousedown mouseup click change) + subject.find("//li").map(&:text).should == %w(mousedown mouseup change click) end it "triggers checkbox events" do subject.find("//input[@type='checkbox']").first.set(true) - subject.find("//li").map(&:text).should == %w(mousedown mouseup click change) + subject.find("//li").map(&:text).should == %w(mousedown mouseup change click) end end diff --git a/src/capybara.js b/src/capybara.js index f665351..290383d 100644 --- a/src/capybara.js +++ b/src/capybara.js @@ -181,17 +181,13 @@ Capybara = { this.trigger(index, "blur"); } else if (type === "checkbox" || type === "radio") { - node.checked = (value === "true"); - this.trigger(index, "mousedown"); - this.trigger(index, "mouseup"); - this.trigger(index, "click"); - this.trigger(index, "change"); + if (node.checked != (value === "true")) { + this.click(index) + } } else if (type === "file") { this.lastAttachedFile = value; - this.trigger(index, "mousedown"); - this.trigger(index, "mouseup"); - this.trigger(index, "click"); + this.click(index) } else { node.value = value;