class Capybara::Selenium::Node
def set_text(value, clear: nil, **_unused)
def set_text(value, clear: nil, **_unused) if value.to_s.empty? && clear.nil? native.clear elsif clear == :backspace # Clear field by sending the correct number of backspace keys. backspaces = [:backspace] * self.value.to_s.length native.send_keys(*(backspaces + [value.to_s])) elsif clear == :none native.send_keys(value.to_s) elsif clear.is_a? Array native.send_keys(*clear, value.to_s) else # Clear field by JavaScript assignment of the value property. # Script can change a readonly element which user input cannot, so # don't execute if readonly. driver.execute_script "arguments[0].value = ''", self native.send_keys(value.to_s) end end