class CongressForms::Actions::Select

Public Instance Methods

perform(browser, params={}) click to toggle source
# File lib/congress_forms/actions.rb, line 93
def perform(browser, params={})
  user_value = params[value]

  browser.within(selector) do
    if placeholder_value?
      option_value = user_value or
        raise Error, "Required field missing: #{value}"
    else
      option_value = value
    end

    begin
      elem = browser.first('option[value="' + escape_css_attribute(option_value) + '"]')
    rescue Capybara::ElementNotFound
      elem = browser.first('option', text: Regexp.compile("^" + Regexp.escape(option_value) + "(\\W|$)"))
    end

    elem.select_option
  end
rescue Capybara::ElementNotFound => e
  raise e, e.message unless options == "DEPENDENT"
end