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