Object
@param [Element] element The select element to use
# File lib/selenium/webdriver/support/select.rb, line 10 def initialize(element) tag_name = element.tag_name unless tag_name.downcase == "select" raise ArgumentError, "unexpected tag name #{tag_name.inspect}" end @element = element @multi = ![nil, "false"].include?(element.attribute(:multiple)) end
Deselect all selected options. Only valid if the element supports multiple selections.
@raise [Error::UnsupportedOperationError] if the element does not support multiple selections.
# File lib/selenium/webdriver/support/select.rb, line 138 def deselect_all unless multiple? raise Error::UnsupportedOperationError, 'you may only deselect all options of a multi-select' end options.each { |e| deselect_option e } end
Deselect options by visible text, index or value.
@param [:text, :index, :value] how How to find the option @param [String] what What value to find the option by.
@see Select#select_by
# File lib/selenium/webdriver/support/select.rb, line 105 def deselect_by(how, what) case how when :text deselect_by_text what when :value deselect_by_value what when :index deselect_by_index what else raise ArgumentError, "can't deselect options by #{how.inspect}" end end
Get the first selected option in this select element
@raise [Error::NoSuchElementError] if no options are selected @return [Element]
# File lib/selenium/webdriver/support/select.rb, line 58 def first_selected_option option = options.find { |e| e.selected? } option or raise Error::NoSuchElementError, 'no options are selected' end
Does this select element support selecting multiple options?
@return [Boolean]
# File lib/selenium/webdriver/support/select.rb, line 27 def multiple? @multi end
Get all options for this select element
@return [Array<Element>]
# File lib/selenium/webdriver/support/select.rb, line 37 def options @element.find_elements :tag_name, 'option' end
Select all unselected options. Only valid if the element supports multiple selections.
@raise [Error::UnsupportedOperationError] if the element does not support multiple selections.
# File lib/selenium/webdriver/support/select.rb, line 124 def select_all unless multiple? raise Error::UnsupportedOperationError, 'you may only select all options of a multi-select' end options.each { |e| select_option e } end
Select options by visible text, index or value.
When selecting by :text, selects options that display text matching the argument. That is, when given “Bar” this would select an option like:
<option value="foo">Bar</option>
When slecting by :value, selects all options that have a value matching the argument. That is, when given “foo” this would select an option like:
<option value="foo">Bar</option>
When selecting by :index, selects the option at the given index. This is done by examining the “index” attribute of an element, and not merely by counting.
@param [:text, :index, :value] how How to find the option @param [String] what What value to find the option by.
# File lib/selenium/webdriver/support/select.rb, line 83 def select_by(how, what) case how when :text select_by_text what when :index select_by_index what when :value select_by_value what else raise ArgumentError, "can't select options by #{how.inspect}" end end
Generated with the Darkfish Rdoc Generator 2.