Class: Selenium::WebDriver::Support::Select
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Support::Select
- Defined in:
- lib/selenium/webdriver/support/select.rb
Defined Under Namespace
Modules: Escaper
Instance Method Summary collapse
-
#deselect_all ⇒ Object
Deselect all selected options.
-
#deselect_by(how, what) ⇒ Object
Deselect options by visible text, index or value.
-
#first_selected_option ⇒ Element
Get the first selected option in this select element.
-
#initialize(element) ⇒ Select
constructor
A new instance of Select.
-
#multiple? ⇒ Boolean
Does this select element support selecting multiple options?.
-
#options ⇒ Array<Element>
Get all options for this select element.
-
#select_all ⇒ Object
Select all unselected options.
-
#select_by(how, what) ⇒ Object
Select options by visible text, index or value.
-
#selected_options ⇒ Array<Element>
Get all selected options for this select element.
Constructor Details
#initialize(element) ⇒ Select
Returns a new instance of Select.
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/selenium/webdriver/support/select.rb', line 27 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 |
Instance Method Details
#deselect_all ⇒ Object
Deselect all selected options. Only valid if the element supports multiple selections.
155 156 157 158 159 160 161 |
# File 'lib/selenium/webdriver/support/select.rb', line 155 def deselect_all unless multiple? raise Error::UnsupportedOperationError, 'you may only deselect all options of a multi-select' end .each { |e| deselect_option e } end |
#deselect_by(how, what) ⇒ Object
Deselect options by visible text, index or value.
122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/selenium/webdriver/support/select.rb', line 122 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 |
#first_selected_option ⇒ Element
Get the first selected option in this select element
75 76 77 78 |
# File 'lib/selenium/webdriver/support/select.rb', line 75 def first_selected_option option = .find { |e| e.selected? } option or raise Error::NoSuchElementError, 'no options are selected' end |
#multiple? ⇒ Boolean
Does this select element support selecting multiple options?
44 45 46 |
# File 'lib/selenium/webdriver/support/select.rb', line 44 def multiple? @multi end |
#options ⇒ Array<Element>
Get all options for this select element
54 55 56 |
# File 'lib/selenium/webdriver/support/select.rb', line 54 def @element.find_elements :tag_name, 'option' end |
#select_all ⇒ Object
Select all unselected options. Only valid if the element supports multiple selections.
141 142 143 144 145 146 147 |
# File 'lib/selenium/webdriver/support/select.rb', line 141 def select_all unless multiple? raise Error::UnsupportedOperationError, 'you may only select all options of a multi-select' end .each { |e| select_option e } end |
#select_by(how, what) ⇒ Object
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.
100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/selenium/webdriver/support/select.rb', line 100 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 |
#selected_options ⇒ Array<Element>
Get all selected options for this select element
64 65 66 |
# File 'lib/selenium/webdriver/support/select.rb', line 64 def .select { |e| e.selected? } end |