Class: Capybara::RackTest::Form
- Inherits:
-
Node
- Object
- Driver::Node
- Node
- Capybara::RackTest::Form
- Defined in:
- lib/capybara/rack_test/form.rb
Defined Under Namespace
Classes: NilUploadedFile, ParamsHash
Constant Summary
Constants inherited from Node
Instance Attribute Summary
Attributes inherited from Driver::Node
Instance Method Summary collapse
Methods inherited from Node
#==, #[], #all_text, #checked?, #click, #disabled?, #find_css, #find_xpath, #path, #select_option, #selected?, #set, #tag_name, #unselect_option, #value, #visible?, #visible_text
Methods inherited from Driver::Node
#==, #[], #all_text, #checked?, #click, #disabled?, #double_click, #drag_to, #hover, #initialize, #inspect, #multiple?, #path, #readonly?, #right_click, #select_option, #selected?, #send_keys, #set, #tag_name, #trigger, #unselect_option, #value, #visible?, #visible_text
Constructor Details
This class inherits a constructor from Capybara::Driver::Node
Instance Method Details
#multipart? ⇒ Boolean
49 50 51 |
# File 'lib/capybara/rack_test/form.rb', line 49 def multipart? self[:enctype] == "multipart/form-data" end |
#params(button) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/capybara/rack_test/form.rb', line 21 def params() params = make_params form_element_types = %i[input select textarea] form_elements_xpath = XPath.generate do |x| xpath = x.descendant(*form_element_types).where(!x.attr(:form)) xpath += x.anywhere(*form_element_types).where(x.attr(:form) == native[:id]) if native[:id] xpath.where(!x.attr(:disabled)) end.to_s native.xpath(form_elements_xpath).map do |field| case field.name when 'input' then add_input_param(field, params) when 'select' then add_select_param(field, params) when 'textarea' then add_textarea_param(field, params) end end merge_param!(params, [:name], [:value] || "") if [:name] params.to_params_hash end |
#submit(button) ⇒ Object
43 44 45 46 47 |
# File 'lib/capybara/rack_test/form.rb', line 43 def submit() action = &.[]('formaction') || native['action'] method = &.[]('formmethod') || request_method driver.submit(method, action.to_s, params()) end |