def set!(*args)
      msg = '#set! does not support special keys, use #set instead'
      raise ArgumentError, msg if args.any? { |v| v.is_a?(::Symbol) }

      input_value = args.join
      set input_value[0]
      return content_editable_set!(*args) if @content_editable

      element_call { execute_js(:setValue, @element, input_value[0..-2]) }
      append(input_value[-1])
      return if value == input_value

      raise Exception::Error, "#set! value: '#{value}' does not match expected input: '#{input_value}'"
    end
def set!(*args)
      msg = '#set! does not support special keys, use #set instead'
      raise ArgumentError, msg if args.any? { |v| v.is_a?(::Symbol) }

      input_value = args.join
      set input_value[0]
      return content_editable_set!(*args) if @content_editable

      element_call { execute_js(:setValue, @element, input_value[0..-2]) }
      append(input_value[-1])
      return if value == input_value

      raise Exception::Error, "#set! value: '#{value}' does not match expected input: '#{input_value}'"
    end
Uses JavaScript to enter most of the given value.
 Selenium is used to enter the first and last characters

 @param [String, Symbol] args