def select_date(value, datepicker: :bootstrap, format: nil, from: nil, xpath: nil, **args)
      fail "Must pass a hash containing 'from' or 'xpath'" if from.nil? && xpath.nil?

      value = value.respond_to?(:to_date) ? value.to_date : Date.parse(value)
      date_input = xpath ? find(:xpath, xpath, **args) : find_field(from, **args)

      case datepicker
      when :bootstrap
        select_bootstrap_date date_input, value
      else
        select_simple_date date_input, value, format
      end

      first(:xpath, '//body').click
    end
def select_date(value, datepicker: :bootstrap, format: nil, from: nil, xpath: nil, **args)
      fail "Must pass a hash containing 'from' or 'xpath'" if from.nil? && xpath.nil?

      value = value.respond_to?(:to_date) ? value.to_date : Date.parse(value)
      date_input = xpath ? find(:xpath, xpath, **args) : find_field(from, **args)

      case datepicker
      when :bootstrap
        select_bootstrap_date date_input, value
      else
        select_simple_date date_input, value, format
      end

      first(:xpath, '//body').click
    end
Selects a date by simulating human interaction with the datepicker or filling the input field
 @param value [#to_date, String] any object that responds to `#to_date` or a parsable date string
 @param datepicker [:bootstrap, :simple] the datepicker to use (are supported: bootstrap or input field)
 @param format [String, nil] a valid date format used to format value
 @param from [String, nil] the path to input field (required if `xpath` is nil)
 @param xpath [String, nil] the xpath to input field (required if `from` is nil)
 @param args [Hash] extra args to find the input field