watir 1.4.1 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.document +4 -0
- data/.github/ISSUE_TEMPLATE.md +16 -0
- data/.github/workflows/chrome.yml +55 -0
- data/.github/workflows/edge.yml +44 -0
- data/.github/workflows/firefox.yml +55 -0
- data/.github/workflows/ie.yml +30 -0
- data/.github/workflows/safari.yml +38 -0
- data/.github/workflows/unit.yml +60 -0
- data/.gitignore +21 -0
- data/.rubocop.yml +114 -0
- data/.rubocop_todo.yml +17 -0
- data/CHANGES.md +2212 -0
- data/Gemfile +15 -0
- data/LICENSE +24 -0
- data/README.md +113 -0
- data/Rakefile +173 -0
- data/lib/watir/adjacent.rb +128 -0
- data/lib/watir/after_hooks.rb +135 -0
- data/lib/watir/alert.rb +113 -0
- data/lib/watir/aliases.rb +8 -0
- data/lib/watir/attribute_helper.rb +97 -0
- data/lib/watir/browser.rb +323 -0
- data/lib/watir/capabilities.rb +179 -0
- data/lib/watir/cell_container.rb +25 -0
- data/lib/watir/container.rb +33 -0
- data/lib/watir/cookies.rb +130 -0
- data/lib/watir/element_collection.rb +223 -0
- data/lib/watir/elements/button.rb +28 -0
- data/lib/watir/elements/cell.rb +18 -0
- data/lib/watir/elements/checkbox.rb +56 -0
- data/lib/watir/elements/date_field.rb +42 -0
- data/lib/watir/elements/date_time_field.rb +42 -0
- data/lib/watir/elements/dlist.rb +12 -0
- data/lib/watir/elements/element.rb +807 -0
- data/lib/watir/elements/file_field.rb +43 -0
- data/lib/watir/elements/font.rb +26 -0
- data/lib/watir/elements/form.rb +16 -0
- data/lib/watir/elements/hidden.rb +26 -0
- data/lib/watir/elements/html_elements.rb +1981 -0
- data/lib/watir/elements/iframe.rb +156 -0
- data/lib/watir/elements/image.rb +22 -0
- data/lib/watir/elements/input.rb +15 -0
- data/lib/watir/elements/link.rb +8 -0
- data/lib/watir/elements/list.rb +51 -0
- data/lib/watir/elements/option.rb +60 -0
- data/lib/watir/elements/radio.rb +65 -0
- data/lib/watir/elements/row.rb +18 -0
- data/lib/watir/elements/select.rb +214 -0
- data/lib/watir/elements/svg_elements.rb +497 -0
- data/lib/watir/elements/table.rb +77 -0
- data/lib/watir/elements/table_cell.rb +32 -0
- data/lib/watir/elements/table_row.rb +34 -0
- data/lib/watir/elements/table_section.rb +17 -0
- data/lib/watir/elements/text_area.rb +7 -0
- data/lib/watir/elements/text_field.rb +39 -0
- data/lib/watir/exception.rb +16 -0
- data/lib/watir/extensions/nokogiri.rb +14 -0
- data/lib/watir/generator/base/generator.rb +114 -0
- data/lib/watir/generator/base/idl_sorter.rb +51 -0
- data/lib/watir/generator/base/spec_extractor.rb +158 -0
- data/lib/watir/generator/base/util.rb +21 -0
- data/lib/watir/generator/base/visitor.rb +133 -0
- data/lib/watir/generator/base.rb +12 -0
- data/lib/watir/generator/html/generator.rb +36 -0
- data/lib/watir/generator/html/spec_extractor.rb +52 -0
- data/lib/watir/generator/html/visitor.rb +23 -0
- data/lib/watir/generator/html.rb +17 -0
- data/lib/watir/generator/svg/generator.rb +38 -0
- data/lib/watir/generator/svg/spec_extractor.rb +55 -0
- data/lib/watir/generator/svg/visitor.rb +23 -0
- data/lib/watir/generator/svg.rb +9 -0
- data/lib/watir/generator.rb +5 -0
- data/lib/watir/has_window.rb +72 -0
- data/lib/watir/http_client.rb +11 -0
- data/lib/watir/js_execution.rb +165 -0
- data/lib/watir/js_snippets/attributeValues.js +11 -0
- data/lib/watir/js_snippets/backgroundColor.js +7 -0
- data/lib/watir/js_snippets/elementObscured.js +14 -0
- data/lib/watir/js_snippets/fireEvent.js +31 -0
- data/lib/watir/js_snippets/focus.js +3 -0
- data/lib/watir/js_snippets/getElementTags.js +3 -0
- data/lib/watir/js_snippets/getInnerHtml.js +19 -0
- data/lib/watir/js_snippets/getInnerText.js +19 -0
- data/lib/watir/js_snippets/getOuterHtml.js +20 -0
- data/lib/watir/js_snippets/getTextContent.js +19 -0
- data/lib/watir/js_snippets/isElementInViewport.js +20 -0
- data/lib/watir/js_snippets/isImageLoaded.js +3 -0
- data/lib/watir/js_snippets/selectOptionsLabel.js +10 -0
- data/lib/watir/js_snippets/selectOptionsText.js +10 -0
- data/lib/watir/js_snippets/selectOptionsValue.js +10 -0
- data/lib/watir/js_snippets/selectText.js +64 -0
- data/lib/watir/js_snippets/selectedOptions.js +11 -0
- data/lib/watir/js_snippets/selectedText.js +17 -0
- data/lib/watir/js_snippets/setText.js +3 -0
- data/lib/watir/js_snippets/setValue.js +3 -0
- data/lib/watir/js_snippets.rb +18 -0
- data/lib/watir/locators/anchor/selector_builder.rb +43 -0
- data/lib/watir/locators/button/matcher.rb +19 -0
- data/lib/watir/locators/button/selector_builder/xpath.rb +69 -0
- data/lib/watir/locators/button/selector_builder.rb +10 -0
- data/lib/watir/locators/cell/selector_builder/xpath.rb +23 -0
- data/lib/watir/locators/cell/selector_builder.rb +13 -0
- data/lib/watir/locators/element/locator.rb +81 -0
- data/lib/watir/locators/element/matcher.rb +118 -0
- data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +69 -0
- data/lib/watir/locators/element/selector_builder/xpath.rb +268 -0
- data/lib/watir/locators/element/selector_builder/xpath_support.rb +29 -0
- data/lib/watir/locators/element/selector_builder.rb +164 -0
- data/lib/watir/locators/option/matcher.rb +26 -0
- data/lib/watir/locators/option/selector_builder/xpath.rb +39 -0
- data/lib/watir/locators/option/selector_builder.rb +10 -0
- data/lib/watir/locators/row/selector_builder/xpath.rb +53 -0
- data/lib/watir/locators/row/selector_builder.rb +18 -0
- data/lib/watir/locators/text_area/selector_builder/xpath.rb +21 -0
- data/lib/watir/locators/text_area/selector_builder.rb +10 -0
- data/lib/watir/locators/text_field/matcher.rb +37 -0
- data/lib/watir/locators/text_field/selector_builder/xpath.rb +50 -0
- data/lib/watir/locators/text_field/selector_builder.rb +10 -0
- data/lib/watir/locators.rb +77 -0
- data/lib/watir/logger.rb +30 -0
- data/lib/watir/navigation.rb +51 -0
- data/lib/watir/radio_set.rb +230 -0
- data/lib/watir/row_container.rb +36 -0
- data/lib/watir/screenshot.rb +51 -0
- data/lib/watir/scroll.rb +95 -0
- data/lib/watir/search_context.rb +96 -0
- data/lib/watir/shadow_root.rb +60 -0
- data/lib/watir/user_editable.rb +85 -0
- data/lib/watir/version.rb +5 -0
- data/lib/watir/wait/timer.rb +52 -0
- data/lib/watir/wait.rb +171 -0
- data/lib/watir/window.rb +276 -0
- data/lib/watir/window_collection.rb +82 -0
- data/lib/watir.rb +108 -0
- data/lib/watirspec/guards.rb +65 -0
- data/lib/watirspec/implementation.rb +56 -0
- data/lib/watirspec/rake_tasks.rb +118 -0
- data/lib/watirspec/remote_server.rb +39 -0
- data/lib/watirspec/runner.rb +64 -0
- data/lib/watirspec/server/app.rb +86 -0
- data/lib/watirspec/server.rb +104 -0
- data/lib/watirspec.rb +93 -0
- data/spec/locator_spec_helper.rb +88 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/unit/capabilities_spec.rb +670 -0
- data/spec/unit/element_locator_spec.rb +97 -0
- data/spec/unit/match_elements/button_spec.rb +76 -0
- data/spec/unit/match_elements/element_spec.rb +424 -0
- data/spec/unit/match_elements/text_field_spec.rb +84 -0
- data/spec/unit/selector_builder/anchor_spec.rb +59 -0
- data/spec/unit/selector_builder/button_spec.rb +217 -0
- data/spec/unit/selector_builder/cell_spec.rb +71 -0
- data/spec/unit/selector_builder/element_spec.rb +804 -0
- data/spec/unit/selector_builder/row_spec.rb +128 -0
- data/spec/unit/selector_builder/text_field_spec.rb +203 -0
- data/spec/unit/selector_builder/textarea_spec.rb +35 -0
- data/spec/unit/unit_helper.rb +4 -0
- data/spec/unit/wait_spec.rb +99 -0
- data/spec/watirspec/adjacent_spec.rb +256 -0
- data/spec/watirspec/after_hooks_spec.rb +204 -0
- data/spec/watirspec/alert_spec.rb +89 -0
- data/spec/watirspec/browser_spec.rb +536 -0
- data/spec/watirspec/capabilities_spec.rb +556 -0
- data/spec/watirspec/cookies_spec.rb +196 -0
- data/spec/watirspec/drag_and_drop_spec.rb +38 -0
- data/spec/watirspec/element_hidden_spec.rb +86 -0
- data/spec/watirspec/elements/area_spec.rb +69 -0
- data/spec/watirspec/elements/areas_spec.rb +44 -0
- data/spec/watirspec/elements/button_spec.rb +265 -0
- data/spec/watirspec/elements/buttons_spec.rb +57 -0
- data/spec/watirspec/elements/checkbox_spec.rb +290 -0
- data/spec/watirspec/elements/checkboxes_spec.rb +46 -0
- data/spec/watirspec/elements/collections_spec.rb +132 -0
- data/spec/watirspec/elements/date_field_spec.rb +209 -0
- data/spec/watirspec/elements/date_fields_spec.rb +46 -0
- data/spec/watirspec/elements/date_time_field_spec.rb +223 -0
- data/spec/watirspec/elements/date_time_fields_spec.rb +47 -0
- data/spec/watirspec/elements/dd_spec.rb +108 -0
- data/spec/watirspec/elements/dds_spec.rb +44 -0
- data/spec/watirspec/elements/del_spec.rb +113 -0
- data/spec/watirspec/elements/dels_spec.rb +42 -0
- data/spec/watirspec/elements/div_spec.rb +232 -0
- data/spec/watirspec/elements/divs_spec.rb +56 -0
- data/spec/watirspec/elements/dl_spec.rb +117 -0
- data/spec/watirspec/elements/dls_spec.rb +45 -0
- data/spec/watirspec/elements/dt_spec.rb +107 -0
- data/spec/watirspec/elements/dts_spec.rb +44 -0
- data/spec/watirspec/elements/element_spec.rb +1069 -0
- data/spec/watirspec/elements/elements_spec.rb +60 -0
- data/spec/watirspec/elements/em_spec.rb +85 -0
- data/spec/watirspec/elements/ems_spec.rb +45 -0
- data/spec/watirspec/elements/filefield_spec.rb +135 -0
- data/spec/watirspec/elements/filefields_spec.rb +45 -0
- data/spec/watirspec/elements/font_spec.rb +31 -0
- data/spec/watirspec/elements/form_spec.rb +70 -0
- data/spec/watirspec/elements/forms_spec.rb +46 -0
- data/spec/watirspec/elements/frame_spec.rb +117 -0
- data/spec/watirspec/elements/frames_spec.rb +43 -0
- data/spec/watirspec/elements/hidden_spec.rb +106 -0
- data/spec/watirspec/elements/hiddens_spec.rb +45 -0
- data/spec/watirspec/elements/hn_spec.rb +80 -0
- data/spec/watirspec/elements/hns_spec.rb +42 -0
- data/spec/watirspec/elements/iframe_spec.rb +244 -0
- data/spec/watirspec/elements/iframes_spec.rb +49 -0
- data/spec/watirspec/elements/image_spec.rb +160 -0
- data/spec/watirspec/elements/images_spec.rb +42 -0
- data/spec/watirspec/elements/input_spec.rb +17 -0
- data/spec/watirspec/elements/ins_spec.rb +113 -0
- data/spec/watirspec/elements/inses_spec.rb +42 -0
- data/spec/watirspec/elements/label_spec.rb +77 -0
- data/spec/watirspec/elements/labels_spec.rb +42 -0
- data/spec/watirspec/elements/li_spec.rb +99 -0
- data/spec/watirspec/elements/link_spec.rb +180 -0
- data/spec/watirspec/elements/links_spec.rb +66 -0
- data/spec/watirspec/elements/lis_spec.rb +44 -0
- data/spec/watirspec/elements/list_spec.rb +50 -0
- data/spec/watirspec/elements/map_spec.rb +78 -0
- data/spec/watirspec/elements/maps_spec.rb +43 -0
- data/spec/watirspec/elements/meta_spec.rb +27 -0
- data/spec/watirspec/elements/metas_spec.rb +42 -0
- data/spec/watirspec/elements/ol_spec.rb +63 -0
- data/spec/watirspec/elements/ols_spec.rb +42 -0
- data/spec/watirspec/elements/option_spec.rb +113 -0
- data/spec/watirspec/elements/p_spec.rb +102 -0
- data/spec/watirspec/elements/pre_spec.rb +100 -0
- data/spec/watirspec/elements/pres_spec.rb +42 -0
- data/spec/watirspec/elements/ps_spec.rb +42 -0
- data/spec/watirspec/elements/radio_spec.rb +259 -0
- data/spec/watirspec/elements/radios_spec.rb +45 -0
- data/spec/watirspec/elements/select_list_spec.rb +701 -0
- data/spec/watirspec/elements/select_lists_spec.rb +49 -0
- data/spec/watirspec/elements/span_spec.rb +119 -0
- data/spec/watirspec/elements/spans_spec.rb +42 -0
- data/spec/watirspec/elements/strong_spec.rb +78 -0
- data/spec/watirspec/elements/strongs_spec.rb +45 -0
- data/spec/watirspec/elements/table_spec.rb +210 -0
- data/spec/watirspec/elements/tables_spec.rb +44 -0
- data/spec/watirspec/elements/tbody_spec.rb +94 -0
- data/spec/watirspec/elements/tbodys_spec.rb +64 -0
- data/spec/watirspec/elements/td_spec.rb +92 -0
- data/spec/watirspec/elements/tds_spec.rb +55 -0
- data/spec/watirspec/elements/text_field_spec.rb +223 -0
- data/spec/watirspec/elements/text_fields_spec.rb +47 -0
- data/spec/watirspec/elements/textarea_spec.rb +30 -0
- data/spec/watirspec/elements/textareas_spec.rb +28 -0
- data/spec/watirspec/elements/tfoot_spec.rb +89 -0
- data/spec/watirspec/elements/tfoots_spec.rb +72 -0
- data/spec/watirspec/elements/thead_spec.rb +88 -0
- data/spec/watirspec/elements/theads_spec.rb +72 -0
- data/spec/watirspec/elements/tr_spec.rb +69 -0
- data/spec/watirspec/elements/trs_spec.rb +63 -0
- data/spec/watirspec/elements/ul_spec.rb +63 -0
- data/spec/watirspec/elements/uls_spec.rb +42 -0
- data/spec/watirspec/html/alerts.html +12 -0
- data/spec/watirspec/html/aria_attributes.html +9 -0
- data/spec/watirspec/html/child_frame.html +29 -0
- data/spec/watirspec/html/class_locator.html +11 -0
- data/spec/watirspec/html/clicks.html +19 -0
- data/spec/watirspec/html/closeable.html +21 -0
- data/spec/watirspec/html/collections.html +15 -0
- data/spec/watirspec/html/css/jquery-ui-1.8.17.custom.css +287 -0
- data/spec/watirspec/html/data_attributes.html +10 -0
- data/spec/watirspec/html/definition_lists.html +48 -0
- data/spec/watirspec/html/drag_and_drop.html +106 -0
- data/spec/watirspec/html/font.html +10 -0
- data/spec/watirspec/html/forms_with_input_elements.html +194 -0
- data/spec/watirspec/html/frame_1.html +22 -0
- data/spec/watirspec/html/frame_2.html +16 -0
- data/spec/watirspec/html/frames.html +11 -0
- data/spec/watirspec/html/iframe_1.html +22 -0
- data/spec/watirspec/html/iframes.html +15 -0
- data/spec/watirspec/html/images/button.png +0 -0
- data/spec/watirspec/html/images/circle.png +0 -0
- data/spec/watirspec/html/images/map.gif +0 -0
- data/spec/watirspec/html/images/map2.gif +0 -0
- data/spec/watirspec/html/images/originaltriangle.png +0 -0
- data/spec/watirspec/html/images/square.png +0 -0
- data/spec/watirspec/html/images/triangle.png +0 -0
- data/spec/watirspec/html/images.html +28 -0
- data/spec/watirspec/html/inner_outer.html +5 -0
- data/spec/watirspec/html/javascript/angular.min.js +332 -0
- data/spec/watirspec/html/javascript/helpers.js +16 -0
- data/spec/watirspec/html/javascript/jquery-1.7.1.min.js +4 -0
- data/spec/watirspec/html/javascript/jquery-ui-1.8.17.custom.min.js +68 -0
- data/spec/watirspec/html/keylogger.html +15 -0
- data/spec/watirspec/html/modal_dialog.html +9 -0
- data/spec/watirspec/html/multiple_ids.html +15 -0
- data/spec/watirspec/html/nested_elements.html +44 -0
- data/spec/watirspec/html/nested_frame_1.html +1 -0
- data/spec/watirspec/html/nested_frame_2.html +9 -0
- data/spec/watirspec/html/nested_frame_3.html +14 -0
- data/spec/watirspec/html/nested_frames.html +10 -0
- data/spec/watirspec/html/nested_iframe_2.html +12 -0
- data/spec/watirspec/html/nested_iframes.html +13 -0
- data/spec/watirspec/html/nested_tables.html +203 -0
- data/spec/watirspec/html/non_control_elements.html +145 -0
- data/spec/watirspec/html/obscured.html +36 -0
- data/spec/watirspec/html/removed_element.html +24 -0
- data/spec/watirspec/html/right_click.html +23 -0
- data/spec/watirspec/html/scroll.html +15 -0
- data/spec/watirspec/html/scroll_nested.html +17 -0
- data/spec/watirspec/html/scroll_nested_offscreen.html +18 -0
- data/spec/watirspec/html/shadow_dom.html +28 -0
- data/spec/watirspec/html/special_chars.html +15 -0
- data/spec/watirspec/html/sticky_elements.html +10 -0
- data/spec/watirspec/html/tables.html +121 -0
- data/spec/watirspec/html/timeout_window_location.html +19 -0
- data/spec/watirspec/html/uneven_table.html +20 -0
- data/spec/watirspec/html/wait.html +99 -0
- data/spec/watirspec/html/watirspec.css +0 -0
- data/spec/watirspec/html/window_switching.html +22 -0
- data/spec/watirspec/radio_set_spec.rb +346 -0
- data/spec/watirspec/screenshot_spec.rb +33 -0
- data/spec/watirspec/scroll_spec.rb +208 -0
- data/spec/watirspec/shadow_root_spec.rb +108 -0
- data/spec/watirspec/support/rspec_matchers.rb +161 -0
- data/spec/watirspec/user_editable_spec.rb +207 -0
- data/spec/watirspec/wait_spec.rb +345 -0
- data/spec/watirspec/window_switching_spec.rb +580 -0
- data/spec/watirspec_helper.rb +163 -0
- data/support/doctest_helper.rb +101 -0
- data/support/version_differ.rb +60 -0
- data/watir.gemspec +50 -0
- metadata +652 -148
- data/readme.rb +0 -211
- data/unittests/WindowLogonExample.rb +0 -30
- data/unittests/WindowLogonExtra.rb +0 -7
- data/unittests/all_tests.rb +0 -10
- data/unittests/all_tests_concurrent.rb +0 -57
- data/unittests/attachToExistingWindow_test.rb +0 -40
- data/unittests/buttons_test.rb +0 -131
- data/unittests/checkbox_test.rb +0 -149
- data/unittests/core_tests.rb +0 -9
- data/unittests/css_test.rb +0 -60
- data/unittests/div_test.rb +0 -179
- data/unittests/errorchecker_test.rb +0 -29
- data/unittests/filefield_test.rb +0 -35
- data/unittests/form_test.rb +0 -279
- data/unittests/frame_test.rb +0 -141
- data/unittests/html/blankpage.html +0 -12
- data/unittests/html/buttons1.html +0 -40
- data/unittests/html/checkboxes1.html +0 -69
- data/unittests/html/complex_table.html +0 -36
- data/unittests/html/cssTest.html +0 -42
- data/unittests/html/div.html +0 -105
- data/unittests/html/fileupload.html +0 -45
- data/unittests/html/formTest1.html +0 -39
- data/unittests/html/forms2.html +0 -45
- data/unittests/html/forms3.html +0 -132
- data/unittests/html/forms4.html +0 -27
- data/unittests/html/frame_buttons.html +0 -4
- data/unittests/html/frame_links.html +0 -4
- data/unittests/html/frame_multi.html +0 -5
- data/unittests/html/iframeTest.html +0 -13
- data/unittests/html/iframeTest1.html +0 -7
- data/unittests/html/iframeTest2.html +0 -6
- data/unittests/html/images/button.jpg +0 -0
- data/unittests/html/images/circle.jpg +0 -0
- data/unittests/html/images/originaltriangle.jpg +0 -0
- data/unittests/html/images/square.jpg +0 -0
- data/unittests/html/images/triangle.jpg +0 -0
- data/unittests/html/images1.html +0 -52
- data/unittests/html/javascriptevents.html +0 -39
- data/unittests/html/link_pass.html +0 -11
- data/unittests/html/links1.html +0 -37
- data/unittests/html/links2.html +0 -11
- data/unittests/html/nestedFrames.html +0 -6
- data/unittests/html/pass.html +0 -10
- data/unittests/html/popups1.html +0 -60
- data/unittests/html/radioButtons1.html +0 -71
- data/unittests/html/select_tealeaf.html +0 -54
- data/unittests/html/selectboxes1.html +0 -55
- data/unittests/html/simple_table.html +0 -26
- data/unittests/html/simple_table_buttons.html +0 -104
- data/unittests/html/simple_table_columns.html +0 -76
- data/unittests/html/table1.html +0 -142
- data/unittests/html/textarea.html +0 -30
- data/unittests/html/textfields1.html +0 -87
- data/unittests/html/textsearch.html +0 -44
- data/unittests/ie_mock.rb +0 -93
- data/unittests/ie_test.rb +0 -50
- data/unittests/images_test.rb +0 -179
- data/unittests/iostring.rb +0 -30
- data/unittests/iostring_test.rb +0 -48
- data/unittests/js_events_test.rb +0 -77
- data/unittests/jscriptExtraAlert.rb +0 -6
- data/unittests/jscriptExtraConfirmCancel.rb +0 -7
- data/unittests/jscriptExtraConfirmOk.rb +0 -7
- data/unittests/jscriptPushButton.rb +0 -5
- data/unittests/jscript_test.rb +0 -57
- data/unittests/links_test.rb +0 -169
- data/unittests/minmax_test.rb +0 -31
- data/unittests/navigate_test.rb +0 -56
- data/unittests/non_core_tests.rb +0 -9
- data/unittests/pagecontainstext_test.rb +0 -49
- data/unittests/popups_test.rb +0 -44
- data/unittests/radios_test.rb +0 -164
- data/unittests/screen_capture_test.rb +0 -53
- data/unittests/selectbox_test.rb +0 -197
- data/unittests/send_keys_test.rb +0 -29
- data/unittests/setup.rb +0 -47
- data/unittests/table_test.rb +0 -306
- data/unittests/textAreafields_test.rb +0 -81
- data/unittests/textfields_test.rb +0 -239
- data/watir/AutoItX3.dll +0 -0
- data/watir/WindowHelper.rb +0 -47
- data/watir/camel_case.rb +0 -37
- data/watir/clickJSDialog.rb +0 -19
- data/watir/cookiemanager.rb +0 -53
- data/watir/exceptions.rb +0 -60
- data/watir/screen_capture.rb +0 -115
- data/watir/setFileDialog.rb +0 -16
- data/watir/testUnitAddons.rb +0 -47
- data/watir/watir_simple.rb +0 -475
- data/watir/winClicker.rb +0 -505
- data/watir.rb +0 -3744
- /data/{unittests → spec/watirspec}/html/images/1.gif +0 -0
- /data/{unittests/html/images/2.GIF → spec/watirspec/html/images/2.gif} +0 -0
- /data/{unittests/html/images/3.GIF → spec/watirspec/html/images/3.gif} +0 -0
- /data/{unittests/html/images/minus.GIF → spec/watirspec/html/images/minus.gif} +0 -0
- /data/{unittests → spec/watirspec}/html/images/plus.gif +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe Anchor do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it 'returns true if the link exists' do
|
|
14
|
+
expect(browser.link(id: 'link_2')).to exist
|
|
15
|
+
expect(browser.link(id: /link_2/)).to exist
|
|
16
|
+
expect(browser.link(title: 'link_title_2')).to exist
|
|
17
|
+
expect(browser.link(title: /link_title_2/)).to exist
|
|
18
|
+
expect(browser.link(text: 'Link 2')).to exist
|
|
19
|
+
expect(browser.link(text: /Link 2/i)).to exist
|
|
20
|
+
expect(browser.link(href: 'non_control_elements.html')).to exist
|
|
21
|
+
expect(browser.link(href: /non_control_elements.html/)).to exist
|
|
22
|
+
expect(browser.link(index: 1)).to exist
|
|
23
|
+
expect(browser.link(xpath: "//a[@id='link_2']")).to exist
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'returns the first link if given no args' do
|
|
27
|
+
expect(browser.link).to exist
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'strips spaces from href attribute when locating elements' do
|
|
31
|
+
expect(browser.link(href: /strip_space$/)).to exist
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "returns false if the link doesn't exist" do
|
|
35
|
+
expect(browser.link(id: 'no_such_id')).not_to exist
|
|
36
|
+
expect(browser.link(id: /no_such_id/)).not_to exist
|
|
37
|
+
expect(browser.link(title: 'no_such_title')).not_to exist
|
|
38
|
+
expect(browser.link(title: /no_such_title/)).not_to exist
|
|
39
|
+
expect(browser.link(text: 'no_such_text')).not_to exist
|
|
40
|
+
expect(browser.link(text: /no_such_text/i)).not_to exist
|
|
41
|
+
expect(browser.link(href: 'no_such_href')).not_to exist
|
|
42
|
+
expect(browser.link(href: /no_such_href/)).not_to exist
|
|
43
|
+
expect(browser.link(index: 1337)).not_to exist
|
|
44
|
+
expect(browser.link(xpath: "//a[@id='no_such_id']")).not_to exist
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
48
|
+
expect { browser.link(id: 3.14).exists? }.to raise_error(TypeError)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Attribute methods
|
|
53
|
+
describe '#href' do
|
|
54
|
+
it 'returns the href attribute if the link exists' do
|
|
55
|
+
expect(browser.link(index: 1).href).to match(/non_control_elements/)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
|
59
|
+
expect(browser.link(index: 0).href).to eq ''
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
|
63
|
+
expect { browser.link(index: 1337).href }.to raise_unknown_object_exception
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe '#id' do
|
|
68
|
+
it 'returns the id attribute if the link exists' do
|
|
69
|
+
expect(browser.link(index: 1).id).to eq 'link_2'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
|
73
|
+
expect(browser.link(index: 0).id).to eq ''
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
|
77
|
+
expect { browser.link(index: 1337).id }.to raise_unknown_object_exception
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe '#text' do
|
|
82
|
+
it 'returns the link text' do
|
|
83
|
+
expect(browser.link(index: 1).text).to eq 'Link 2'
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'returns an empty string if the link exists and contains no text' do
|
|
87
|
+
expect(browser.link(index: 0).text).to eq ''
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
|
91
|
+
expect { browser.link(index: 1337).text }.to raise_unknown_object_exception
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
describe '#title' do
|
|
96
|
+
it 'returns the type attribute if the link exists' do
|
|
97
|
+
expect(browser.link(index: 1).title).to eq 'link_title_2'
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
|
101
|
+
expect(browser.link(index: 0).title).to eq ''
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
|
105
|
+
expect { browser.link(index: 1337).title }.to raise_unknown_object_exception
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe '#respond_to?' do
|
|
110
|
+
it 'returns true for all attribute methods' do
|
|
111
|
+
expect(browser.link(index: 0)).to respond_to(:class_name)
|
|
112
|
+
expect(browser.link(index: 0)).to respond_to(:href)
|
|
113
|
+
expect(browser.link(index: 0)).to respond_to(:id)
|
|
114
|
+
expect(browser.link(index: 0)).to respond_to(:style)
|
|
115
|
+
expect(browser.link(index: 0)).to respond_to(:text)
|
|
116
|
+
expect(browser.link(index: 0)).to respond_to(:title)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Manipulation methods
|
|
121
|
+
# Note: the #wait_until calls are hacks for Safari specifically
|
|
122
|
+
describe '#click' do
|
|
123
|
+
it 'finds an existing link by (text: String) and clicks it' do
|
|
124
|
+
element = browser.link(text: 'Link 3')
|
|
125
|
+
element.wait_until { |link| !link.exist? || link.click }
|
|
126
|
+
expect(browser.h1(text: 'User administration')).to exist
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'finds an existing link by (text: Regexp) and clicks it' do
|
|
130
|
+
element = browser.link(href: /forms_with_input_elements/)
|
|
131
|
+
element.wait_until { |link| !link.exist? || link.click }
|
|
132
|
+
expect(browser.h1(text: 'User administration')).to exist
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'finds an existing link by (index: Integer) and clicks it' do
|
|
136
|
+
element = browser.link(index: 2)
|
|
137
|
+
element.wait_until { |link| !link.exist? || link.click }
|
|
138
|
+
expect(browser.h1(text: 'User administration')).to exist
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
|
142
|
+
expect { browser.link(index: 1337).click }.to raise_unknown_object_exception
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it 'clicks a link with no text content but an img child' do
|
|
146
|
+
browser.goto WatirSpec.url_for('images.html')
|
|
147
|
+
browser.link(href: /definition_lists.html/).click
|
|
148
|
+
browser.wait_while(title: /^(Images|)$/)
|
|
149
|
+
expect(browser.title).to eq 'definition_lists'
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
describe 'visible text' do
|
|
154
|
+
it 'finds links by visible text' do
|
|
155
|
+
browser.goto WatirSpec.url_for('non_control_elements.html')
|
|
156
|
+
|
|
157
|
+
expect(browser.link(visible_text: 'all visible')).to exist
|
|
158
|
+
expect(browser.link(visible_text: /all visible/)).to exist
|
|
159
|
+
expect(browser.link(visible_text: /some visible/)).to exist
|
|
160
|
+
|
|
161
|
+
expect(browser.link(visible_text: 'Link 2', class: 'external')).to exist
|
|
162
|
+
expect(browser.link(visible_text: /Link 2/, class: 'external')).to exist
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it 'finds links in spite of hidden text' do
|
|
166
|
+
browser.goto WatirSpec.url_for('non_control_elements.html')
|
|
167
|
+
|
|
168
|
+
expect(browser.link(visible_text: 'some visible')).to exist
|
|
169
|
+
expect(browser.link(visible_text: 'none visible')).not_to exist
|
|
170
|
+
expect(browser.link(visible_text: /none visible/)).not_to exist
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
it 'raises exception unless value is a String or a RegExp' do
|
|
174
|
+
browser.goto WatirSpec.url_for('non_control_elements.html')
|
|
175
|
+
msg = /expected one of \[String, Regexp\], got 7:Integer/
|
|
176
|
+
expect { browser.link(visible_text: 7).exists? }.to raise_exception(TypeError, msg)
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe AnchorCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.links(title: 'link_title_2').to_a).to eq [browser.link(title: 'link_title_2')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of links' do
|
|
19
|
+
expect(browser.links.length).to eq 7
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the link at the given index' do
|
|
25
|
+
expect(browser.links[2].id).to eq 'link_3'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'returns a Link object also when the index is out of bounds' do
|
|
29
|
+
expect(browser.links[2000]).not_to be_nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#each' do
|
|
34
|
+
it 'iterates through links correctly' do
|
|
35
|
+
count = 0
|
|
36
|
+
|
|
37
|
+
browser.links.each_with_index do |c, index|
|
|
38
|
+
expect(c.id).to eq browser.link(index: index).id
|
|
39
|
+
count += 1
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
expect(count).to be > 0
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe 'visible text' do
|
|
47
|
+
it 'finds links by visible text' do
|
|
48
|
+
browser.goto WatirSpec.url_for('non_control_elements.html')
|
|
49
|
+
container = browser.div(id: 'visible_link')
|
|
50
|
+
expect(container.links(visible_text: 'all visible').count).to eq(1)
|
|
51
|
+
expect(container.links(visible_text: /all visible/).count).to eq(1)
|
|
52
|
+
expect(container.links(visible_text: /some visible/).count).to eq(1)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'finds links in spite of hidden text',
|
|
56
|
+
except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
|
|
57
|
+
browser.goto WatirSpec.url_for('non_control_elements.html')
|
|
58
|
+
container = browser.div(id: 'visible_text')
|
|
59
|
+
|
|
60
|
+
expect(container.divs(visible_text: 'some visible').count).to eq(1)
|
|
61
|
+
expect(container.divs(visible_text: 'none visible').count).to eq(0)
|
|
62
|
+
expect(container.divs(visible_text: /none visible/).count).to eq(0)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe LICollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.lis(class: 'nonlink').to_a).to eq [browser.li(class: 'nonlink')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of lis' do
|
|
19
|
+
expect(browser.lis.length).to eq 18
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the li at the given index' do
|
|
25
|
+
expect(browser.lis[4].id).to eq 'non_link_1'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through lis correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.lis.each_with_index do |l, index|
|
|
34
|
+
expect(l.id).to eq browser.li(index: index).id
|
|
35
|
+
expect(l.value).to eq browser.li(index: index).value
|
|
36
|
+
|
|
37
|
+
count += 1
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
expect(count).to be > 0
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe List do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'returns the list items assocaited with an Ol' do
|
|
12
|
+
items = browser.ol(id: 'favorite_compounds').list_items
|
|
13
|
+
expect(items).to be_a Watir::LICollection
|
|
14
|
+
expect(items).to all(be_a Watir::LI)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'returns the list items assocaited with an Ul' do
|
|
18
|
+
items = browser.ul(id: 'navbar').list_items
|
|
19
|
+
expect(items).to be_a Watir::LICollection
|
|
20
|
+
expect(items).to all(be_a Watir::LI)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'gets the size of a list' do
|
|
24
|
+
ul = browser.ul(id: 'navbar')
|
|
25
|
+
expect(ul.size).to eq 7
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'iterates over a list' do
|
|
29
|
+
ul = browser.ul(id: 'navbar')
|
|
30
|
+
expect(ul.map(&:tag_name)).to eq Array.new(7, 'li')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'gets a list item at the specified index' do
|
|
34
|
+
ul = browser.ul(id: 'navbar')
|
|
35
|
+
expect(ul[4].text).to eq 'Non-link 1'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'returns the list item size' do
|
|
39
|
+
items = browser.ol(id: 'favorite_compounds').list_items
|
|
40
|
+
expect(items.size).to eq 5
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'returns list item at an index' do
|
|
44
|
+
items = browser.ol(id: 'favorite_compounds').list_items
|
|
45
|
+
third = browser.ol(id: 'favorite_compounds').li(index: 2)
|
|
46
|
+
|
|
47
|
+
expect(items[2]).to eq third
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe Map do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('images.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it "returns true if the 'map' exists" do
|
|
14
|
+
expect(browser.map(id: 'triangle_map')).to exist
|
|
15
|
+
expect(browser.map(id: /triangle_map/)).to exist
|
|
16
|
+
expect(browser.map(name: 'triangle_map')).to exist
|
|
17
|
+
expect(browser.map(name: /triangle_map/)).to exist
|
|
18
|
+
expect(browser.map(index: 0)).to exist
|
|
19
|
+
expect(browser.map(xpath: "//map[@id='triangle_map']")).to exist
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'returns the first map if given no args' do
|
|
23
|
+
expect(browser.map).to exist
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "returns false if the 'map' doesn't exist" do
|
|
27
|
+
expect(browser.map(id: 'no_such_id')).not_to exist
|
|
28
|
+
expect(browser.map(id: /no_such_id/)).not_to exist
|
|
29
|
+
expect(browser.map(name: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.map(name: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.map(index: 1337)).not_to exist
|
|
32
|
+
expect(browser.map(xpath: "//map[@id='no_such_id']")).not_to exist
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
36
|
+
expect { browser.map(id: 3.14).exists? }.to raise_error(TypeError)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Attribute methods
|
|
41
|
+
describe '#id' do
|
|
42
|
+
it 'returns the id attribute' do
|
|
43
|
+
expect(browser.map(index: 0).id).to eq 'triangle_map'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
47
|
+
expect(browser.map(index: 1).id).to eq ''
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
|
51
|
+
expect { browser.map(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
52
|
+
expect { browser.map(index: 1337).id }.to raise_unknown_object_exception
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe '#name' do
|
|
57
|
+
it 'returns the name attribute' do
|
|
58
|
+
expect(browser.map(index: 0).name).to eq 'triangle_map'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
62
|
+
expect(browser.map(index: 1).name).to eq ''
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "raises UnknownObjectException if the map doesn't exist" do
|
|
66
|
+
expect { browser.map(id: 'no_such_id').name }.to raise_unknown_object_exception
|
|
67
|
+
expect { browser.map(index: 1337).name }.to raise_unknown_object_exception
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe '#respond_to?' do
|
|
72
|
+
it 'returns true for all attribute methods' do
|
|
73
|
+
expect(browser.map(index: 0)).to respond_to(:id)
|
|
74
|
+
expect(browser.map(index: 0)).to respond_to(:name)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe MapCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('images.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.maps(name: 'triangle_map').to_a).to eq [browser.map(name: 'triangle_map')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of maps' do
|
|
19
|
+
expect(browser.maps.length).to eq 2
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the p at the given index' do
|
|
25
|
+
expect(browser.maps[0].id).to eq 'triangle_map'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through maps correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.maps.each_with_index do |m, index|
|
|
34
|
+
expect(m.name).to eq browser.map(index: index).name
|
|
35
|
+
expect(m.id).to eq browser.map(index: index).id
|
|
36
|
+
count += 1
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
expect(count).to be > 0
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe Meta do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '#exist?' do
|
|
12
|
+
it 'returns true if the meta tag exists' do
|
|
13
|
+
expect(browser.meta(http_equiv: 'Content-Type')).to exist
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'returns the first meta if given no args' do
|
|
17
|
+
expect(browser.meta).to exist
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe 'content' do
|
|
22
|
+
it 'returns the content attribute of the tag' do
|
|
23
|
+
expect(browser.meta(http_equiv: 'Content-Type').content).to eq 'text/html; charset=utf-8'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe MetaCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.metas(name: 'description').to_a).to eq [browser.meta(name: 'description')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of meta elements' do
|
|
19
|
+
expect(browser.metas.length).to eq 2
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the meta element at the given index' do
|
|
25
|
+
expect(browser.metas[1].name).to eq 'description'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through meta elements correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.metas.each_with_index do |m, index|
|
|
34
|
+
expect(m.content).to eq browser.meta(index: index).content
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe OList do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it "returns true if the 'ol' exists" do
|
|
14
|
+
expect(browser.ol(id: 'favorite_compounds')).to exist
|
|
15
|
+
expect(browser.ol(id: /favorite_compounds/)).to exist
|
|
16
|
+
expect(browser.ol(index: 0)).to exist
|
|
17
|
+
expect(browser.ol(xpath: "//ol[@id='favorite_compounds']")).to exist
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'returns the first ol if given no args' do
|
|
21
|
+
expect(browser.ol).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "returns false if the 'ol' doesn't exist" do
|
|
25
|
+
expect(browser.ol(id: 'no_such_id')).not_to exist
|
|
26
|
+
expect(browser.ol(id: /no_such_id/)).not_to exist
|
|
27
|
+
expect(browser.ol(text: 'no_such_text')).not_to exist
|
|
28
|
+
expect(browser.ol(text: /no_such_text/)).not_to exist
|
|
29
|
+
expect(browser.ol(class: 'no_such_class')).not_to exist
|
|
30
|
+
expect(browser.ol(class: /no_such_class/)).not_to exist
|
|
31
|
+
expect(browser.ol(index: 1337)).not_to exist
|
|
32
|
+
expect(browser.ol(xpath: "//ol[@id='no_such_id']")).not_to exist
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
36
|
+
expect { browser.ol(id: 3.14).exists? }.to raise_error(TypeError)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Attribute methods
|
|
41
|
+
describe '#id' do
|
|
42
|
+
it 'returns the id attribute' do
|
|
43
|
+
expect(browser.ol(class: 'chemistry').id).to eq 'favorite_compounds'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
47
|
+
expect(browser.ol(index: 1).id).to eq ''
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "raises UnknownObjectException if the ol doesn't exist" do
|
|
51
|
+
expect { browser.ol(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
52
|
+
expect { browser.ol(index: 1337).id }.to raise_unknown_object_exception
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe '#respond_to?' do
|
|
57
|
+
it 'returns true for all attribute methods' do
|
|
58
|
+
expect(browser.ol(index: 0)).to respond_to(:class_name)
|
|
59
|
+
expect(browser.ol(index: 0)).to respond_to(:id)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe OListCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.ols(class: 'chemistry').to_a).to eq [browser.ol(class: 'chemistry')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of ols' do
|
|
19
|
+
expect(browser.ols.length).to eq 2
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the ol at the given index' do
|
|
25
|
+
expect(browser.ols[0].id).to eq 'favorite_compounds'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through ols correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.ols.each_with_index do |ol, index|
|
|
34
|
+
expect(ol.id).to eq browser.ol(index: index).id
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|