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
#driver, #initial_cache, #native
Instance Method Summary collapse
Methods inherited from Node
#==, #[], #all_text, #checked?, #click, #disabled?, #find_css, #find_xpath, #path, #select_option, #selected?, #set, #style, #tag_name, #unselect_option, #value, #visible?, #visible_text
Methods inherited from Driver::Node
#==, #[], #all_text, #checked?, #click, #disabled?, #double_click, #drag_to, #drop, #hover, #initialize, #inspect, #multiple?, #obscured?, #path, #readonly?, #right_click, #scroll_by, #scroll_to, #select_option, #selected?, #send_keys, #set, #style, #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
46 47 48 |
# File 'lib/capybara/rack_test/form.rb', line 46 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 |
# File 'lib/capybara/rack_test/form.rb', line 21 def params() form_element_types = %i[input select textarea button] form_elements_xpath = XPath.generate do |xp| xpath = xp.descendant(*form_element_types).where(!xp.attr(:form)) xpath += xp.anywhere(*form_element_types).where(xp.attr(:form) == native[:id]) if native[:id] xpath.where(!xp.attr(:disabled)) end.to_s form_elements = native.xpath(form_elements_xpath).reject { |el| submitter?(el) && (el != .native) } form_elements.each_with_object(make_params) do |field, params| case field.name when 'input', 'button' then add_input_param(field, params) when 'select' then add_select_param(field, params) when 'textarea' then add_textarea_param(field, params) end end.to_params_hash end |
#submit(button) ⇒ Object
40 41 42 43 44 |
# File 'lib/capybara/rack_test/form.rb', line 40 def submit() action = &.[]('formaction') || native['action'] method = &.[]('formmethod') || request_method driver.submit(method, action.to_s, params()) end |