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,160 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe Image do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('images.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true when the image exists' do
|
|
14
|
+
expect(browser.image(id: 'square')).to exist
|
|
15
|
+
expect(browser.image(id: /square/)).to exist
|
|
16
|
+
expect(browser.image(src: 'images/circle.png')).to exist
|
|
17
|
+
expect(browser.image(src: /circle/)).to exist
|
|
18
|
+
expect(browser.image(alt: 'circle')).to exist
|
|
19
|
+
expect(browser.image(alt: /cir/)).to exist
|
|
20
|
+
expect(browser.image(title: 'Circle')).to exist
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'returns the first image if given no args' do
|
|
24
|
+
expect(browser.image).to exist
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "returns false when the image doesn't exist" do
|
|
28
|
+
expect(browser.image(id: 'no_such_id')).not_to exist
|
|
29
|
+
expect(browser.image(id: /no_such_id/)).not_to exist
|
|
30
|
+
expect(browser.image(src: 'no_such_src')).not_to exist
|
|
31
|
+
expect(browser.image(src: /no_such_src/)).not_to exist
|
|
32
|
+
expect(browser.image(alt: 'no_such_alt')).not_to exist
|
|
33
|
+
expect(browser.image(alt: /no_such_alt/)).not_to exist
|
|
34
|
+
expect(browser.image(title: 'no_such_title')).not_to exist
|
|
35
|
+
expect(browser.image(title: /no_such_title/)).not_to exist
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
39
|
+
expect { browser.image(id: 3.14).exists? }.to raise_error(TypeError)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Attribute methods
|
|
44
|
+
describe '#alt' do
|
|
45
|
+
it 'returns the alt attribute of the image if the image exists' do
|
|
46
|
+
expect(browser.image(id: 'square').alt).to eq 'square'
|
|
47
|
+
expect(browser.image(title: 'Circle').alt).to eq 'circle'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns an empty string if the image exists and the attribute doesn't" do
|
|
51
|
+
expect(browser.image(index: 0).alt).to eq ''
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
55
|
+
expect { browser.image(index: 1337).alt }.to raise_unknown_object_exception
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe '#id' do
|
|
60
|
+
it 'returns the id attribute of the image if the image exists' do
|
|
61
|
+
expect(browser.image(title: 'Square').id).to eq 'square'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "returns an empty string if the image exists and the attribute doesn't" do
|
|
65
|
+
expect(browser.image(index: 0).id).to eq ''
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
69
|
+
expect { browser.image(index: 1337).id }.to raise_unknown_object_exception
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe '#src' do
|
|
74
|
+
it 'returns the src attribute of the image if the image exists' do
|
|
75
|
+
expect(browser.image(id: 'square').src).to include('square.png')
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "returns an empty string if the image exists and the attribute doesn't" do
|
|
79
|
+
expect(browser.image(index: 0).src).to eq ''
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
83
|
+
expect { browser.image(index: 1337).src }.to raise_unknown_object_exception
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe '#title' do
|
|
88
|
+
it 'returns the title attribute of the image if the image exists' do
|
|
89
|
+
expect(browser.image(id: 'square').title).to eq 'Square'
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "returns an empty string if the image exists and the attribute doesn't" do
|
|
93
|
+
expect(browser.image(index: 0).title).to eq ''
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
97
|
+
expect { browser.image(index: 1337).title }.to raise_unknown_object_exception
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe '#respond_to?' do
|
|
102
|
+
it 'returns true for all attribute methods' do
|
|
103
|
+
expect(browser.image(index: 0)).to respond_to(:class_name)
|
|
104
|
+
expect(browser.image(index: 0)).to respond_to(:id)
|
|
105
|
+
expect(browser.image(index: 0)).to respond_to(:style)
|
|
106
|
+
expect(browser.image(index: 0)).to respond_to(:text)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Manipulation methods
|
|
111
|
+
describe '#click' do
|
|
112
|
+
it "raises UnknownObjectException when the image doesn't exist" do
|
|
113
|
+
expect { browser.image(id: 'missing_attribute').click }.to raise_unknown_object_exception
|
|
114
|
+
expect { browser.image(class: 'missing_attribute').click }.to raise_unknown_object_exception
|
|
115
|
+
expect { browser.image(src: 'missing_attribute').click }.to raise_unknown_object_exception
|
|
116
|
+
expect { browser.image(alt: 'missing_attribute').click }.to raise_unknown_object_exception
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe '#height' do
|
|
121
|
+
it 'returns the height of the image if the image exists' do
|
|
122
|
+
expect(browser.image(id: 'square').height).to eq 88
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
126
|
+
expect { browser.image(index: 1337).height }.to raise_unknown_object_exception
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
describe '#width' do
|
|
131
|
+
it 'returns the width of the image if the image exists' do
|
|
132
|
+
expect(browser.image(id: 'square').width).to eq 88
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
136
|
+
expect { browser.image(index: 1337).width }.to raise_unknown_object_exception
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Other
|
|
141
|
+
describe '#loaded?' do
|
|
142
|
+
it 'returns true if the image has been loaded' do
|
|
143
|
+
expect(browser.image(title: 'Circle')).to be_loaded
|
|
144
|
+
expect(browser.image(alt: 'circle')).to be_loaded
|
|
145
|
+
expect(browser.image(alt: /circle/)).to be_loaded
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it 'returns false if the image has not been loaded' do
|
|
149
|
+
expect(browser.image(id: 'no_such_file')).not_to be_loaded
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "raises UnknownObjectException if the image doesn't exist" do
|
|
153
|
+
expect { browser.image(id: 'no_such_image').loaded? }.to raise_unknown_object_exception
|
|
154
|
+
expect { browser.image(src: 'no_such_image').loaded? }.to raise_unknown_object_exception
|
|
155
|
+
expect { browser.image(alt: 'no_such_image').loaded? }.to raise_unknown_object_exception
|
|
156
|
+
expect { browser.image(index: 1337).loaded? }.to raise_unknown_object_exception
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe ImageCollection 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.images(alt: 'circle').to_a).to eq [browser.image(alt: 'circle')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of images' do
|
|
19
|
+
expect(browser.images.length).to eq 10
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the image at the given index' do
|
|
25
|
+
expect(browser.images[5].id).to eq 'square'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through images correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.images.each_with_index do |c, index|
|
|
34
|
+
expect(c.id).to eq browser.image(index: index).id
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe Input do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto WatirSpec.url_for('forms_with_input_elements.html')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '#type' do
|
|
12
|
+
it 'returns an email type' do
|
|
13
|
+
expect(browser.input(name: 'html5_email').type).to eq 'email'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Ins' 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 'ins' exists" do
|
|
14
|
+
expect(browser.ins(id: 'lead')).to exist
|
|
15
|
+
expect(browser.ins(id: /lead/)).to exist
|
|
16
|
+
expect(browser.ins(text: 'This is an inserted text tag 1')).to exist
|
|
17
|
+
expect(browser.ins(text: /This is an inserted text tag 1/)).to exist
|
|
18
|
+
expect(browser.ins(class: 'lead')).to exist
|
|
19
|
+
expect(browser.ins(class: /lead/)).to exist
|
|
20
|
+
expect(browser.ins(index: 0)).to exist
|
|
21
|
+
expect(browser.ins(xpath: "//ins[@id='lead']")).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns the first ins if given no args' do
|
|
25
|
+
expect(browser.ins).to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns false if the element doesn't exist" do
|
|
29
|
+
expect(browser.ins(id: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.ins(id: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.ins(text: 'no_such_text')).not_to exist
|
|
32
|
+
expect(browser.ins(text: /no_such_text/)).not_to exist
|
|
33
|
+
expect(browser.ins(class: 'no_such_class')).not_to exist
|
|
34
|
+
expect(browser.ins(class: /no_such_class/)).not_to exist
|
|
35
|
+
expect(browser.ins(index: 1337)).not_to exist
|
|
36
|
+
expect(browser.ins(xpath: "//ins[@id='no_such_id']")).not_to exist
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
40
|
+
expect { browser.ins(id: 3.14).exists? }.to raise_error(TypeError)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Attribute methods
|
|
45
|
+
describe '#id' do
|
|
46
|
+
it 'returns the id attribute' do
|
|
47
|
+
expect(browser.ins(index: 0).id).to eq 'lead'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
51
|
+
expect(browser.ins(index: 2).id).to eq ''
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "raises UnknownObjectException if the ins doesn't exist" do
|
|
55
|
+
expect { browser.ins(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
56
|
+
expect { browser.ins(index: 1337).id }.to raise_unknown_object_exception
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe '#title' do
|
|
61
|
+
it 'returns the title attribute' do
|
|
62
|
+
expect(browser.ins(index: 0).title).to eq 'Lorem ipsum'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
66
|
+
expect(browser.ins(index: 2).title).to eq ''
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "raises UnknownObjectException if the ins doesn't exist" do
|
|
70
|
+
expect { browser.ins(id: 'no_such_id').title }.to raise_unknown_object_exception
|
|
71
|
+
expect { browser.ins(xpath: "//ins[@id='no_such_id']").title }.to raise_unknown_object_exception
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe '#text' do
|
|
76
|
+
it 'returns the text of the ins' do
|
|
77
|
+
expect(browser.ins(index: 1).text).to eq 'This is an inserted text tag 2'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
81
|
+
expect(browser.ins(index: 3).text).to eq ''
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "raises UnknownObjectException if the ins doesn't exist" do
|
|
85
|
+
expect { browser.ins(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
86
|
+
expect { browser.ins(xpath: "//ins[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe '#respond_to?' do
|
|
91
|
+
it 'returns true for all attribute methods' do
|
|
92
|
+
expect(browser.ins(index: 0)).to respond_to(:class_name)
|
|
93
|
+
expect(browser.ins(index: 0)).to respond_to(:id)
|
|
94
|
+
expect(browser.ins(index: 0)).to respond_to(:title)
|
|
95
|
+
expect(browser.ins(index: 0)).to respond_to(:text)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Other
|
|
100
|
+
describe '#click', except: {headless: true} do
|
|
101
|
+
it 'fires events' do
|
|
102
|
+
expect(browser.ins(class: 'footer').text).not_to include('Javascript')
|
|
103
|
+
browser.ins(class: 'footer').click
|
|
104
|
+
expect(browser.ins(class: 'footer').text).to include('Javascript')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "raises UnknownObjectException if the ins doesn't exist" do
|
|
108
|
+
expect { browser.ins(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
109
|
+
expect { browser.ins(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Inses' 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.inses(class: 'lead').to_a).to eq [browser.ins(class: 'lead')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of inses' do
|
|
19
|
+
expect(browser.inses.length).to eq 5
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the ins at the given index' do
|
|
25
|
+
expect(browser.inses[0].id).to eq 'lead'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through inses correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.inses.each_with_index do |s, index|
|
|
34
|
+
expect(s.id).to eq browser.ins(index: index).id
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe Label do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.label(id: 'first_label')).to exist
|
|
15
|
+
expect(browser.label(id: /first_label/)).to exist
|
|
16
|
+
expect(browser.label(for: 'new_user_first_name')).to exist
|
|
17
|
+
expect(browser.label(for: /new_user_first_name/)).to exist
|
|
18
|
+
expect(browser.label(text: 'First name')).to exist
|
|
19
|
+
expect(browser.label(text: /First name/)).to exist
|
|
20
|
+
expect(browser.label(index: 0)).to exist
|
|
21
|
+
expect(browser.label(xpath: "//label[@id='first_label']")).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns the first label if given no args' do
|
|
25
|
+
expect(browser.label).to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'returns false if the element does not exist' do
|
|
29
|
+
expect(browser.label(id: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.label(id: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.label(text: 'no_such_text')).not_to exist
|
|
32
|
+
expect(browser.label(text: /no_such_text/)).not_to exist
|
|
33
|
+
expect(browser.label(index: 1337)).not_to exist
|
|
34
|
+
expect(browser.label(xpath: "//input[@id='no_such_id']")).not_to exist
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
38
|
+
expect { browser.label(id: 3.14).exists? }.to raise_error(TypeError)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'click' do
|
|
43
|
+
it 'fires the onclick event' do
|
|
44
|
+
browser.label(id: 'first_label').click
|
|
45
|
+
expect(messages.first).to eq 'label'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Attribute methods
|
|
50
|
+
describe '#id' do
|
|
51
|
+
it 'returns the id attribute if the label exists' do
|
|
52
|
+
expect(browser.label(index: 0).id).to eq 'first_label'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "raises UnknownObjectException if the label doesn't exist" do
|
|
56
|
+
expect { browser.label(index: 1337).id }.to raise_unknown_object_exception
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe '#for' do
|
|
61
|
+
it "returns the 'for' attribute if the label exists" do
|
|
62
|
+
expect(browser.label(index: 0).for).to eq 'new_user_first_name'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "raises UnknownObjectException if the label doesn't exist" do
|
|
66
|
+
expect { browser.label(index: 1337).for }.to raise_unknown_object_exception
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe '#respond_to?' do
|
|
71
|
+
it 'returns true for all attribute methods' do
|
|
72
|
+
expect(browser.label(index: 0)).to respond_to(:id)
|
|
73
|
+
expect(browser.label(index: 0)).to respond_to(:for)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe LabelCollection 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.labels(for: 'new_user_first_name').to_a).to eq [browser.label(for: 'new_user_first_name')]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of labels' do
|
|
19
|
+
expect(browser.labels.length).to eq 45
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the label at the given index' do
|
|
25
|
+
expect(browser.labels[0].id).to eq 'first_label'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through labels correctly' do
|
|
31
|
+
count = 0
|
|
32
|
+
|
|
33
|
+
browser.labels.each_with_index do |l, index|
|
|
34
|
+
expect(l.id).to eq browser.label(index: index).id
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'watirspec_helper'
|
|
4
|
+
|
|
5
|
+
module Watir
|
|
6
|
+
describe LI 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 'li' exists" do
|
|
14
|
+
expect(browser.li(id: 'non_link_1')).to exist
|
|
15
|
+
expect(browser.li(id: /non_link_1/)).to exist
|
|
16
|
+
expect(browser.li(text: 'Non-link 3')).to exist
|
|
17
|
+
expect(browser.li(text: /Non-link 3/)).to exist
|
|
18
|
+
expect(browser.li(class: 'nonlink')).to exist
|
|
19
|
+
expect(browser.li(class: /nonlink/)).to exist
|
|
20
|
+
expect(browser.li(index: 0)).to exist
|
|
21
|
+
expect(browser.li(xpath: "//li[@id='non_link_1']")).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns the first element if given no args' do
|
|
25
|
+
expect(browser.li).to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns false if the 'li' doesn't exist" do
|
|
29
|
+
expect(browser.li(id: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.li(id: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.li(text: 'no_such_text')).not_to exist
|
|
32
|
+
expect(browser.li(text: /no_such_text/)).not_to exist
|
|
33
|
+
expect(browser.li(class: 'no_such_class')).not_to exist
|
|
34
|
+
expect(browser.li(class: /no_such_class/)).not_to exist
|
|
35
|
+
expect(browser.li(index: 1337)).not_to exist
|
|
36
|
+
expect(browser.li(xpath: "//li[@id='no_such_id']")).not_to exist
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
40
|
+
expect { browser.li(id: 3.14).exists? }.to raise_error(TypeError)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Attribute methods
|
|
45
|
+
describe '#id' do
|
|
46
|
+
it 'returns the id attribute' do
|
|
47
|
+
expect(browser.li(class: 'nonlink').id).to eq 'non_link_1'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
51
|
+
expect(browser.li(index: 0).id).to eq ''
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
|
55
|
+
expect { browser.li(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
56
|
+
expect { browser.li(index: 1337).id }.to raise_unknown_object_exception
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe '#title' do
|
|
61
|
+
it 'returns the title attribute' do
|
|
62
|
+
expect(browser.li(id: 'non_link_1').title).to eq 'This is not a link!'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
66
|
+
expect(browser.li(index: 0).title).to eq ''
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
|
70
|
+
expect { browser.li(id: 'no_such_id').title }.to raise_unknown_object_exception
|
|
71
|
+
expect { browser.li(xpath: "//li[@id='no_such_id']").title }.to raise_unknown_object_exception
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe '#text' do
|
|
76
|
+
it 'returns the text of the li' do
|
|
77
|
+
expect(browser.li(id: 'non_link_1').text).to eq 'Non-link 1'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
81
|
+
expect(browser.li(index: 0).text).to eq ''
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
|
85
|
+
expect { browser.li(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
86
|
+
expect { browser.li(xpath: "//li[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe '#respond_to?' do
|
|
91
|
+
it 'returns true for all attribute methods' do
|
|
92
|
+
expect(browser.li(index: 0)).to respond_to(:class_name)
|
|
93
|
+
expect(browser.li(index: 0)).to respond_to(:id)
|
|
94
|
+
expect(browser.li(index: 0)).to respond_to(:text)
|
|
95
|
+
expect(browser.li(index: 0)).to respond_to(:title)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|