Skip to content

Instantly share code, notes, and snippets.

Created November 24, 2011 11:08
Show Gist options
  • Star 58 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save thijsc/1391107 to your computer and use it in GitHub Desktop.
Save thijsc/1391107 to your computer and use it in GitHub Desktop.
Select item from chosen js select with Capybara and Selenium
def select_from_chosen(item_text, options)
field = find_field(options[:from])
option_value = page.evaluate_script("$(\"##{field[:id]} option:contains('#{item_text}')\").val()")
Copy link

Here's another deselect function that's more in-line with @thejsc's approach. I like this approach because it triggers the change hook.

def deselect_from_chosen(item_text, options)
  field = find_field(options[:from], visible: false)
  find("##{field[:id]}_chosen ul.chosen-choices", :text => item_text).find("").click

Copy link

westonganger commented Aug 29, 2016

For anyone whos interested in just selecting whichever option is first without having to know the text

def select_first_from_chosen(from)
  field = find_field(from, visible: false)
  first("##{field[:id]}_chosen ul.chosen-results li").click

Use like this: select_first_from_chosen('post[name]')

Copy link

To guarantee an exact match rather than a partial match aka - find 'OR' and not match 'MORE'
the line

find("##{field[:id]}_chosen ul.chosen-results li", text: item_text).click


find("##{field[:id]}_chosen ul.chosen-results li", text: /\A#{Regexp.quote(item_text)}\z/).click

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment