selenium-webdriver 3.5.0 → 4.0.0-alpha.4
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.
- package/CHANGES.md +246 -0
- package/LICENSE +1 -1
- package/NOTICE +1 -1
- package/README.md +40 -40
- package/chrome.js +118 -134
- package/edge.js +43 -117
- package/example/chrome_android.js +8 -9
- package/example/chrome_mobile_emulation.js +8 -9
- package/example/firefox_channels.js +23 -19
- package/example/google_search.js +3 -3
- package/example/google_search_test.js +38 -27
- package/example/{chrome_headless.js → headless.js} +15 -7
- package/example/logging.js +40 -7
- package/firefox.js +789 -0
- package/http/index.js +62 -9
- package/http/util.js +11 -6
- package/ie.js +83 -97
- package/index.js +198 -114
- package/io/exec.js +29 -15
- package/io/index.js +1 -1
- package/io/zip.js +1 -1
- package/lib/actions.js +68 -63
- package/lib/atoms/get-attribute.js +86 -0
- package/lib/atoms/is-displayed.js +76 -76
- package/lib/by.js +7 -4
- package/lib/capabilities.js +310 -210
- package/lib/command.js +27 -51
- package/lib/error.js +100 -41
- package/lib/http.js +161 -120
- package/lib/input.js +1044 -8
- package/lib/logging.js +1 -5
- package/lib/promise.js +222 -3331
- package/lib/proxy.js +134 -39
- package/lib/session.js +2 -2
- package/lib/symbols.js +0 -0
- package/lib/until.js +1 -1
- package/lib/webdriver.js +717 -953
- package/net/index.js +21 -25
- package/net/portprober.js +51 -68
- package/package.json +17 -12
- package/proxy.js +0 -0
- package/remote/index.js +63 -44
- package/safari.js +41 -128
- package/testing/index.js +386 -315
- package/.npmignore +0 -2
- package/example/async_await_test.js +0 -68
- package/example/google_search_generator.js +0 -50
- package/example/parallel_flows.js +0 -54
- package/firefox/binary.js +0 -344
- package/firefox/extension.js +0 -224
- package/firefox/index.js +0 -626
- package/firefox/profile.js +0 -394
- package/lib/README +0 -5
- package/lib/atoms/getAttribute.js +0 -9
- package/lib/devmode.js +0 -34
- package/lib/events.js +0 -210
- package/lib/firefox/webdriver.json +0 -70
- package/lib/test/build.js +0 -151
- package/lib/test/data/ClickTest_testClicksASurroundingStrongTag.html +0 -11
- package/lib/test/data/Page.aspx +0 -17
- package/lib/test/data/Page.aspx.cs +0 -22
- package/lib/test/data/Redirect.aspx +0 -11
- package/lib/test/data/Redirect.aspx.cs +0 -9
- package/lib/test/data/Settings.StyleCop +0 -759
- package/lib/test/data/Web.Config +0 -59
- package/lib/test/data/actualXhtmlPage.xhtml +0 -14
- package/lib/test/data/ajaxy_page.html +0 -81
- package/lib/test/data/alerts.html +0 -85
- package/lib/test/data/banner.gif +0 -0
- package/lib/test/data/beach.jpg +0 -0
- package/lib/test/data/blank.html +0 -1
- package/lib/test/data/bodyTypingTest.html +0 -41
- package/lib/test/data/booleanAttributes.html +0 -19
- package/lib/test/data/child/childPage.html +0 -8
- package/lib/test/data/child/grandchild/grandchildPage.html +0 -8
- package/lib/test/data/clickEventPage.html +0 -26
- package/lib/test/data/click_frames.html +0 -10
- package/lib/test/data/click_jacker.html +0 -38
- package/lib/test/data/click_out_of_bounds.html +0 -23
- package/lib/test/data/click_out_of_bounds_overflow.html +0 -85
- package/lib/test/data/click_rtl.html +0 -19
- package/lib/test/data/click_source.html +0 -18
- package/lib/test/data/click_tests/click_iframe.html +0 -6
- package/lib/test/data/click_tests/click_in_iframe.html +0 -8
- package/lib/test/data/click_tests/disabled_element.html +0 -12
- package/lib/test/data/click_tests/disappearing_element.html +0 -62
- package/lib/test/data/click_tests/google_map.html +0 -15
- package/lib/test/data/click_tests/google_map.png +0 -0
- package/lib/test/data/click_tests/html5_submit_buttons.html +0 -16
- package/lib/test/data/click_tests/issue5237.html +0 -9
- package/lib/test/data/click_tests/issue5237_frame.html +0 -1
- package/lib/test/data/click_tests/issue5237_target.html +0 -10
- package/lib/test/data/click_tests/link_that_wraps.html +0 -11
- package/lib/test/data/click_tests/mapped_page1.html +0 -9
- package/lib/test/data/click_tests/mapped_page2.html +0 -9
- package/lib/test/data/click_tests/mapped_page3.html +0 -9
- package/lib/test/data/click_tests/overlapping_elements.html +0 -70
- package/lib/test/data/click_tests/partially_overlapping_elements.html +0 -124
- package/lib/test/data/click_tests/span_that_wraps.html +0 -11
- package/lib/test/data/click_tests/submitted_page.html +0 -9
- package/lib/test/data/click_tests/wrapped_overlapping_elements.html +0 -13
- package/lib/test/data/click_too_big.html +0 -10
- package/lib/test/data/click_too_big_in_frame.html +0 -11
- package/lib/test/data/clicks.html +0 -35
- package/lib/test/data/closeable_window.html +0 -8
- package/lib/test/data/cn-test.html +0 -156
- package/lib/test/data/colorPage.html +0 -20
- package/lib/test/data/cookies.html +0 -30
- package/lib/test/data/coordinates_tests/element_in_frame.html +0 -9
- package/lib/test/data/coordinates_tests/element_in_nested_frame.html +0 -9
- package/lib/test/data/coordinates_tests/page_with_element_out_of_view.html +0 -11
- package/lib/test/data/coordinates_tests/page_with_empty_element.html +0 -10
- package/lib/test/data/coordinates_tests/page_with_fixed_element.html +0 -12
- package/lib/test/data/coordinates_tests/page_with_hidden_element.html +0 -10
- package/lib/test/data/coordinates_tests/page_with_invisible_element.html +0 -10
- package/lib/test/data/coordinates_tests/page_with_transparent_element.html +0 -10
- package/lib/test/data/coordinates_tests/simple_page.html +0 -10
- package/lib/test/data/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- package/lib/test/data/css/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- package/lib/test/data/css/ui-lightness/jquery-ui-1.8.10.custom.css +0 -573
- package/lib/test/data/cssTransform.html +0 -61
- package/lib/test/data/cssTransform2.html +0 -20
- package/lib/test/data/document_write_in_onload.html +0 -13
- package/lib/test/data/dragAndDropInsideScrolledDiv.html +0 -67
- package/lib/test/data/dragAndDropTest.html +0 -102
- package/lib/test/data/dragDropOverflow.html +0 -104
- package/lib/test/data/draggableLists.html +0 -67
- package/lib/test/data/droppableItems.html +0 -65
- package/lib/test/data/dynamic.html +0 -39
- package/lib/test/data/dynamicallyModifiedPage.html +0 -42
- package/lib/test/data/errors.html +0 -15
- package/lib/test/data/firefox/jetpack-sample.xpi +0 -0
- package/lib/test/data/firefox/sample.xpi +0 -0
- package/lib/test/data/firefox/webextension.xpi +0 -0
- package/lib/test/data/fixedFooterNoScroll.html +0 -13
- package/lib/test/data/fixedFooterNoScrollQuirksMode.html +0 -12
- package/lib/test/data/formPage.html +0 -175
- package/lib/test/data/formSelectionPage.html +0 -46
- package/lib/test/data/form_handling_js_submit.html +0 -30
- package/lib/test/data/framePage3.html +0 -7
- package/lib/test/data/frameScrollChild.html +0 -26
- package/lib/test/data/frameScrollPage.html +0 -14
- package/lib/test/data/frameScrollParent.html +0 -11
- package/lib/test/data/frameWithAnimals.html +0 -11
- package/lib/test/data/frame_switching_tests/bug4876.html +0 -9
- package/lib/test/data/frame_switching_tests/bug4876_iframe.html +0 -9
- package/lib/test/data/frame_switching_tests/deletingFrame.html +0 -29
- package/lib/test/data/frame_switching_tests/deletingFrame_iframe.html +0 -8
- package/lib/test/data/frame_switching_tests/deletingFrame_iframe2.html +0 -7
- package/lib/test/data/frameset.html +0 -14
- package/lib/test/data/framesetPage2.html +0 -7
- package/lib/test/data/framesetPage3.html +0 -4
- package/lib/test/data/globalscope.html +0 -15
- package/lib/test/data/hidden.html +0 -5
- package/lib/test/data/hidden_partially.html +0 -45
- package/lib/test/data/html5/blue.jpg +0 -0
- package/lib/test/data/html5/database.js +0 -84
- package/lib/test/data/html5/geolocation.js +0 -18
- package/lib/test/data/html5/green.jpg +0 -0
- package/lib/test/data/html5/red.jpg +0 -0
- package/lib/test/data/html5/status.html +0 -1
- package/lib/test/data/html5/test.appcache +0 -11
- package/lib/test/data/html5/yellow.jpg +0 -0
- package/lib/test/data/html5Page.html +0 -32
- package/lib/test/data/icon.gif +0 -0
- package/lib/test/data/idElements.html +0 -2
- package/lib/test/data/iframeAtBottom.html +0 -15
- package/lib/test/data/iframeWithAlert.html +0 -1
- package/lib/test/data/iframeWithIframe.html +0 -1
- package/lib/test/data/iframes.html +0 -11
- package/lib/test/data/injectableContent.html +0 -22
- package/lib/test/data/javascriptEnhancedForm.html +0 -30
- package/lib/test/data/javascriptPage.html +0 -285
- package/lib/test/data/jquery-1.3.2.js +0 -4376
- package/lib/test/data/js/jquery-1.4.4.min.js +0 -167
- package/lib/test/data/js/jquery-ui-1.8.10.custom.min.js +0 -782
- package/lib/test/data/js/skins/lightgray/content.inline.min.css +0 -1
- package/lib/test/data/js/skins/lightgray/content.min.css +0 -1
- package/lib/test/data/js/skins/lightgray/fonts/readme.md +0 -1
- package/lib/test/data/js/skins/lightgray/fonts/tinymce-small.dev.svg +0 -175
- package/lib/test/data/js/skins/lightgray/fonts/tinymce-small.eot +0 -0
- package/lib/test/data/js/skins/lightgray/fonts/tinymce-small.svg +0 -62
- package/lib/test/data/js/skins/lightgray/fonts/tinymce-small.ttf +0 -0
- package/lib/test/data/js/skins/lightgray/fonts/tinymce-small.woff +0 -0
- package/lib/test/data/js/skins/lightgray/fonts/tinymce.dev.svg +0 -153
- package/lib/test/data/js/skins/lightgray/fonts/tinymce.eot +0 -0
- package/lib/test/data/js/skins/lightgray/fonts/tinymce.svg +0 -63
- package/lib/test/data/js/skins/lightgray/fonts/tinymce.ttf +0 -0
- package/lib/test/data/js/skins/lightgray/fonts/tinymce.woff +0 -0
- package/lib/test/data/js/skins/lightgray/img/anchor.gif +0 -0
- package/lib/test/data/js/skins/lightgray/img/loader.gif +0 -0
- package/lib/test/data/js/skins/lightgray/img/object.gif +0 -0
- package/lib/test/data/js/skins/lightgray/img/trans.gif +0 -0
- package/lib/test/data/js/skins/lightgray/skin.ie7.min.css +0 -1
- package/lib/test/data/js/skins/lightgray/skin.min.css +0 -1
- package/lib/test/data/js/themes/modern/theme.min.js +0 -1
- package/lib/test/data/js/tinymce.min.js +0 -10
- package/lib/test/data/key_logger.html +0 -34
- package/lib/test/data/key_tests/remove_on_keypress.html +0 -36
- package/lib/test/data/keyboard_shortcut.html +0 -36
- package/lib/test/data/linked_image.html +0 -16
- package/lib/test/data/locators_tests/boolean_attribute_selected.html +0 -13
- package/lib/test/data/locators_tests/boolean_attribute_selected_html4.html +0 -13
- package/lib/test/data/longContentPage.html +0 -55
- package/lib/test/data/macbeth.html +0 -5255
- package/lib/test/data/map.png +0 -0
- package/lib/test/data/map_visibility.html +0 -8
- package/lib/test/data/markerTransparent.png +0 -0
- package/lib/test/data/messages.html +0 -15
- package/lib/test/data/meta-redirect.html +0 -11
- package/lib/test/data/missedJsReference.html +0 -11
- package/lib/test/data/modal_dialogs/modal_1.html +0 -21
- package/lib/test/data/modal_dialogs/modal_2.html +0 -21
- package/lib/test/data/modal_dialogs/modal_3.html +0 -15
- package/lib/test/data/modal_dialogs/modalindex.html +0 -21
- package/lib/test/data/mouseOver.html +0 -17
- package/lib/test/data/mousePositionTracker.html +0 -33
- package/lib/test/data/nestedElements.html +0 -164
- package/lib/test/data/overflow/x_auto_y_auto.html +0 -30
- package/lib/test/data/overflow/x_auto_y_hidden.html +0 -30
- package/lib/test/data/overflow/x_auto_y_scroll.html +0 -30
- package/lib/test/data/overflow/x_hidden_y_auto.html +0 -30
- package/lib/test/data/overflow/x_hidden_y_hidden.html +0 -30
- package/lib/test/data/overflow/x_hidden_y_scroll.html +0 -30
- package/lib/test/data/overflow/x_scroll_y_auto.html +0 -30
- package/lib/test/data/overflow/x_scroll_y_hidden.html +0 -30
- package/lib/test/data/overflow/x_scroll_y_scroll.html +0 -30
- package/lib/test/data/overflow-body.html +0 -15
- package/lib/test/data/pageWithOnBeforeUnloadMessage.html +0 -20
- package/lib/test/data/pageWithOnLoad.html +0 -6
- package/lib/test/data/pageWithOnUnload.html +0 -6
- package/lib/test/data/page_with_link_to_slow_loading_page.html +0 -6
- package/lib/test/data/plain.txt +0 -1
- package/lib/test/data/proxy/page1.html +0 -20
- package/lib/test/data/proxy/page2.html +0 -24
- package/lib/test/data/proxy/page3.html +0 -5
- package/lib/test/data/readOnlyPage.html +0 -24
- package/lib/test/data/rectangles.html +0 -40
- package/lib/test/data/resultPage.html +0 -25
- package/lib/test/data/rich_text.html +0 -161
- package/lib/test/data/safari/frames_benchmark.html +0 -31
- package/lib/test/data/screen/screen.css +0 -19
- package/lib/test/data/screen/screen.html +0 -72
- package/lib/test/data/screen/screen.js +0 -7
- package/lib/test/data/screen/screen_frame1.html +0 -72
- package/lib/test/data/screen/screen_frame2.html +0 -72
- package/lib/test/data/screen/screen_frames.html +0 -11
- package/lib/test/data/screen/screen_iframes.html +0 -12
- package/lib/test/data/screen/screen_too_long.html +0 -68
- package/lib/test/data/screen/screen_x_long.html +0 -72
- package/lib/test/data/screen/screen_x_too_long.html +0 -72
- package/lib/test/data/screen/screen_y_long.html +0 -72
- package/lib/test/data/screen/screen_y_too_long.html +0 -72
- package/lib/test/data/scroll.html +0 -27
- package/lib/test/data/scroll2.html +0 -21
- package/lib/test/data/scroll3.html +0 -8
- package/lib/test/data/scroll4.html +0 -7
- package/lib/test/data/scroll5.html +0 -18
- package/lib/test/data/scrolling_tests/frame_with_height_above_200.html +0 -26
- package/lib/test/data/scrolling_tests/frame_with_height_above_2000.html +0 -26
- package/lib/test/data/scrolling_tests/frame_with_nested_scrolling_frame.html +0 -11
- package/lib/test/data/scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html +0 -12
- package/lib/test/data/scrolling_tests/frame_with_small_height.html +0 -10
- package/lib/test/data/scrolling_tests/page_with_double_overflow_auto.html +0 -19
- package/lib/test/data/scrolling_tests/page_with_frame_out_of_view.html +0 -12
- package/lib/test/data/scrolling_tests/page_with_nested_scrolling_frames.html +0 -11
- package/lib/test/data/scrolling_tests/page_with_nested_scrolling_frames_out_of_view.html +0 -12
- package/lib/test/data/scrolling_tests/page_with_non_scrolling_frame.html +0 -11
- package/lib/test/data/scrolling_tests/page_with_scrolling_frame.html +0 -11
- package/lib/test/data/scrolling_tests/page_with_scrolling_frame_out_of_view.html +0 -12
- package/lib/test/data/scrolling_tests/page_with_tall_frame.html +0 -11
- package/lib/test/data/scrolling_tests/page_with_y_overflow_auto.html +0 -14
- package/lib/test/data/scrolling_tests/target_page.html +0 -9
- package/lib/test/data/selectPage.html +0 -58
- package/lib/test/data/selectableItems.html +0 -65
- package/lib/test/data/sessionCookie.html +0 -21
- package/lib/test/data/sessionCookieDest.html +0 -34
- package/lib/test/data/simple.xml +0 -5
- package/lib/test/data/simpleTest.html +0 -98
- package/lib/test/data/single_text_input.html +0 -12
- package/lib/test/data/slowLoadingAlert.html +0 -10
- package/lib/test/data/slowLoadingResourcePage.html +0 -12
- package/lib/test/data/slow_loading_iframes.html +0 -14
- package/lib/test/data/styledPage.html +0 -28
- package/lib/test/data/svgPiechart.xhtml +0 -81
- package/lib/test/data/svgTest.svg +0 -4
- package/lib/test/data/tables.html +0 -36
- package/lib/test/data/tinymce.html +0 -10
- package/lib/test/data/transformable.xml +0 -11
- package/lib/test/data/transformable.xsl +0 -37
- package/lib/test/data/transparentUpload.html +0 -70
- package/lib/test/data/underscore.html +0 -9
- package/lib/test/data/unicode_ltr.html +0 -8
- package/lib/test/data/upload.html +0 -45
- package/lib/test/data/userDefinedProperty.html +0 -8
- package/lib/test/data/veryLargeCanvas.html +0 -81
- package/lib/test/data/visibility-css.html +0 -21
- package/lib/test/data/win32frameset.html +0 -8
- package/lib/test/data/window_switching_tests/page_with_frame.html +0 -12
- package/lib/test/data/window_switching_tests/simple_page.html +0 -9
- package/lib/test/data/xhtmlFormPage.xhtml +0 -17
- package/lib/test/data/xhtmlTest.html +0 -76
- package/lib/test/fileserver.js +0 -321
- package/lib/test/httpserver.js +0 -120
- package/lib/test/index.js +0 -270
- package/lib/test/promise.js +0 -79
- package/lib/test/resources.js +0 -44
- package/opera.js +0 -405
- package/phantomjs.js +0 -282
- package/test/actions_test.js +0 -52
- package/test/chrome/options_test.js +0 -227
- package/test/chrome/service_test.js +0 -45
- package/test/cookie_test.js +0 -214
- package/test/element_finding_test.js +0 -426
- package/test/execute_script_test.js +0 -350
- package/test/fingerprint_test.js +0 -62
- package/test/firefox/extension_test.js +0 -120
- package/test/firefox/firefox_test.js +0 -261
- package/test/firefox/profile_test.js +0 -140
- package/test/http/http_test.js +0 -223
- package/test/http/util_test.js +0 -178
- package/test/io/io_test.js +0 -360
- package/test/io/zip_test.js +0 -128
- package/test/lib/by_test.js +0 -160
- package/test/lib/capabilities_test.js +0 -111
- package/test/lib/error_test.js +0 -305
- package/test/lib/events_test.js +0 -177
- package/test/lib/http_test.js +0 -696
- package/test/lib/logging_test.js +0 -272
- package/test/lib/promise_aplus_test.js +0 -78
- package/test/lib/promise_error_test.js +0 -884
- package/test/lib/promise_flow_test.js +0 -2288
- package/test/lib/promise_generator_test.js +0 -310
- package/test/lib/promise_test.js +0 -1109
- package/test/lib/testutil.js +0 -90
- package/test/lib/until_test.js +0 -478
- package/test/lib/webdriver_test.js +0 -2311
- package/test/logging_test.js +0 -167
- package/test/net/index_test.js +0 -60
- package/test/net/portprober_test.js +0 -128
- package/test/page_loading_test.js +0 -166
- package/test/phantomjs/execute_phantomjs_test.js +0 -59
- package/test/proxy_test.js +0 -180
- package/test/rect_test.js +0 -60
- package/test/remote_test.js +0 -117
- package/test/safari_test.js +0 -108
- package/test/session_test.js +0 -99
- package/test/stale_element_test.js +0 -63
- package/test/tag_name_test.js +0 -36
- package/test/testing/assert_test.js +0 -373
- package/test/testing/index_test.js +0 -224
- package/test/upload_test.js +0 -86
- package/test/window_test.js +0 -161
- package/testing/assert.js +0 -378
package/safari.js
CHANGED
|
@@ -21,17 +21,28 @@
|
|
|
21
21
|
|
|
22
22
|
'use strict';
|
|
23
23
|
|
|
24
|
-
const http = require('./http');
|
|
25
|
-
const io = require('./io');
|
|
26
|
-
const {Capabilities, Capability} = require('./lib/capabilities');
|
|
27
24
|
const command = require('./lib/command');
|
|
28
25
|
const error = require('./lib/error');
|
|
29
|
-
const
|
|
26
|
+
const http = require('./http');
|
|
27
|
+
const io = require('./io');
|
|
28
|
+
const portprober = require('./net/portprober');
|
|
30
29
|
const promise = require('./lib/promise');
|
|
30
|
+
const remote = require('./remote');
|
|
31
31
|
const Symbols = require('./lib/symbols');
|
|
32
32
|
const webdriver = require('./lib/webdriver');
|
|
33
|
-
const
|
|
34
|
-
|
|
33
|
+
const {Browser, Capabilities, Capability} = require('./lib/capabilities');
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* _Synchronously_ attempts to locate the IE driver executable on the current
|
|
38
|
+
* system.
|
|
39
|
+
*
|
|
40
|
+
* @return {?string} the located executable, or `null`.
|
|
41
|
+
*/
|
|
42
|
+
function locateSynchronously() {
|
|
43
|
+
return process.platform === 'darwin'
|
|
44
|
+
? io.findInPath('safaridriver', true) : null;
|
|
45
|
+
}
|
|
35
46
|
|
|
36
47
|
|
|
37
48
|
/**
|
|
@@ -39,7 +50,7 @@ const remote = require('./remote');
|
|
|
39
50
|
* @throws {Error}
|
|
40
51
|
*/
|
|
41
52
|
function findSafariDriver() {
|
|
42
|
-
let exe =
|
|
53
|
+
let exe = locateSynchronously();
|
|
43
54
|
if (!exe) {
|
|
44
55
|
throw Error(
|
|
45
56
|
`The safaridriver executable could not be found on the current PATH.
|
|
@@ -73,80 +84,19 @@ const TECHNOLOGY_PREVIEW_OPTIONS_KEY = 'technologyPreview';
|
|
|
73
84
|
/**
|
|
74
85
|
* Configuration options specific to the {@link Driver SafariDriver}.
|
|
75
86
|
*/
|
|
76
|
-
class Options {
|
|
77
|
-
constructor() {
|
|
78
|
-
/** @private {Object<string, *>} */
|
|
79
|
-
this.options_ = null;
|
|
80
|
-
|
|
81
|
-
/** @private {./lib/logging.Preferences} */
|
|
82
|
-
this.logPrefs_ = null;
|
|
83
|
-
|
|
84
|
-
/** @private {?./lib/capabilities.ProxyConfig} */
|
|
85
|
-
this.proxy_ = null;
|
|
86
|
-
}
|
|
87
|
-
|
|
87
|
+
class Options extends Capabilities {
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* @param {!Capabilities} capabilities The capabilities object.
|
|
92
|
-
* @return {!Options} The SafariDriver options.
|
|
93
|
-
*/
|
|
94
|
-
static fromCapabilities(capabilities) {
|
|
95
|
-
var options = new Options();
|
|
96
|
-
var o = capabilities.get(OPTIONS_CAPABILITY_KEY);
|
|
97
|
-
|
|
98
|
-
if (o instanceof Options) {
|
|
99
|
-
options = o;
|
|
100
|
-
} else if (o) {
|
|
101
|
-
options.setCleanSession(o.cleanSession);
|
|
102
|
-
options.setTechnologyPreview(o[TECHNOLOGY_PREVIEW_OPTIONS_KEY]);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (capabilities.has(Capability.PROXY)) {
|
|
106
|
-
options.setProxy(capabilities.get(Capability.PROXY));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (capabilities.has(Capability.LOGGING_PREFS)) {
|
|
110
|
-
options.setLoggingPrefs(capabilities.get(Capability.LOGGING_PREFS));
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return options;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Sets whether to force Safari to start with a clean session. Enabling this
|
|
118
|
-
* option will cause all global browser data to be deleted.
|
|
119
|
-
* @param {boolean} clean Whether to make sure the session has no cookies,
|
|
120
|
-
* cache entries, local storage, or databases.
|
|
121
|
-
* @return {!Options} A self reference.
|
|
89
|
+
* @param {(Capabilities|Map<string, ?>|Object)=} other Another set of
|
|
90
|
+
* capabilities to initialize this instance from.
|
|
122
91
|
*/
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.options_ = {};
|
|
126
|
-
}
|
|
127
|
-
this.options_['cleanSession'] = clean;
|
|
128
|
-
return this;
|
|
129
|
-
}
|
|
92
|
+
constructor(other = undefined) {
|
|
93
|
+
super(other);
|
|
130
94
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
* @param {!./lib/logging.Preferences} prefs The logging preferences.
|
|
134
|
-
* @return {!Options} A self reference.
|
|
135
|
-
*/
|
|
136
|
-
setLoggingPrefs(prefs) {
|
|
137
|
-
this.logPrefs_ = prefs;
|
|
138
|
-
return this;
|
|
139
|
-
}
|
|
95
|
+
/** @private {!Object} */
|
|
96
|
+
this.options_ = this.get(OPTIONS_CAPABILITY_KEY) || {};
|
|
140
97
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
*
|
|
144
|
-
* @param {./lib/capabilities.ProxyConfig} proxy The proxy configuration to use.
|
|
145
|
-
* @return {!Options} A self reference.
|
|
146
|
-
*/
|
|
147
|
-
setProxy(proxy) {
|
|
148
|
-
this.proxy_ = proxy;
|
|
149
|
-
return this;
|
|
98
|
+
this.set(OPTIONS_CAPABILITY_KEY, this.options_);
|
|
99
|
+
this.setBrowserName(Browser.SAFARI);
|
|
150
100
|
}
|
|
151
101
|
|
|
152
102
|
/**
|
|
@@ -157,52 +107,19 @@ class Options {
|
|
|
157
107
|
* @return {!Options} A self reference.
|
|
158
108
|
*/
|
|
159
109
|
setTechnologyPreview(useTechnologyPreview) {
|
|
160
|
-
if (!this.options_) {
|
|
161
|
-
this.options_ = {};
|
|
162
|
-
}
|
|
163
|
-
|
|
164
110
|
this.options_[TECHNOLOGY_PREVIEW_OPTIONS_KEY] = !!useTechnologyPreview;
|
|
165
111
|
return this;
|
|
166
112
|
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Converts this options instance to a {@link Capabilities} object.
|
|
170
|
-
* @param {Capabilities=} opt_capabilities The capabilities to
|
|
171
|
-
* merge these options into, if any.
|
|
172
|
-
* @return {!Capabilities} The capabilities.
|
|
173
|
-
*/
|
|
174
|
-
toCapabilities(opt_capabilities) {
|
|
175
|
-
var caps = opt_capabilities || Capabilities.safari();
|
|
176
|
-
if (this.logPrefs_) {
|
|
177
|
-
caps.set(Capability.LOGGING_PREFS, this.logPrefs_);
|
|
178
|
-
}
|
|
179
|
-
if (this.proxy_) {
|
|
180
|
-
caps.set(Capability.PROXY, this.proxy_);
|
|
181
|
-
}
|
|
182
|
-
if (this.options_) {
|
|
183
|
-
caps.set(OPTIONS_CAPABILITY_KEY, this);
|
|
184
|
-
}
|
|
185
|
-
return caps;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Converts this instance to its JSON wire protocol representation. Note this
|
|
190
|
-
* function is an implementation detail not intended for general use.
|
|
191
|
-
* @return {!Object<string, *>} The JSON wire protocol representation of this
|
|
192
|
-
* instance.
|
|
193
|
-
*/
|
|
194
|
-
[Symbols.serialize]() {
|
|
195
|
-
return this.options_ || {};
|
|
196
|
-
}
|
|
197
113
|
}
|
|
198
114
|
|
|
199
115
|
/**
|
|
200
|
-
* @param {(
|
|
116
|
+
* @param {(Capabilities|Object<string, *>)=} o The options object
|
|
201
117
|
* @return {boolean}
|
|
202
118
|
*/
|
|
203
119
|
function useTechnologyPreview(o) {
|
|
204
|
-
if (o instanceof
|
|
205
|
-
|
|
120
|
+
if (o instanceof Capabilities) {
|
|
121
|
+
let options = o.get(OPTIONS_CAPABILITY_KEY);
|
|
122
|
+
return !!(options && options[TECHNOLOGY_PREVIEW_OPTIONS_KEY]);
|
|
206
123
|
}
|
|
207
124
|
|
|
208
125
|
if (o && typeof o === 'object') {
|
|
@@ -212,7 +129,10 @@ function useTechnologyPreview(o) {
|
|
|
212
129
|
return false;
|
|
213
130
|
}
|
|
214
131
|
|
|
215
|
-
|
|
132
|
+
|
|
133
|
+
const SAFARIDRIVER_TECHNOLOGY_PREVIEW_EXE =
|
|
134
|
+
'/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver';
|
|
135
|
+
|
|
216
136
|
|
|
217
137
|
/**
|
|
218
138
|
* A WebDriver client for Safari. This class should never be instantiated
|
|
@@ -227,21 +147,13 @@ class Driver extends webdriver.WebDriver {
|
|
|
227
147
|
/**
|
|
228
148
|
* Creates a new Safari session.
|
|
229
149
|
*
|
|
230
|
-
* @param {(Options|Capabilities)=}
|
|
231
|
-
* options for the new session.
|
|
232
|
-
* @param {promise.ControlFlow=} opt_flow The control flow to create
|
|
233
|
-
* the driver under.
|
|
150
|
+
* @param {(Options|Capabilities)=} options The configuration options.
|
|
234
151
|
* @return {!Driver} A new driver instance.
|
|
235
152
|
*/
|
|
236
|
-
static createSession(
|
|
237
|
-
let caps
|
|
238
|
-
|
|
239
|
-
if (opt_config instanceof Options) {
|
|
240
|
-
caps = opt_config.toCapabilities();
|
|
241
|
-
} else {
|
|
242
|
-
caps = opt_config || Capabilities.safari();
|
|
243
|
-
}
|
|
153
|
+
static createSession(options) {
|
|
154
|
+
let caps = options || new Options();
|
|
244
155
|
|
|
156
|
+
let exe;
|
|
245
157
|
if (useTechnologyPreview(caps.get(OPTIONS_CAPABILITY_KEY))) {
|
|
246
158
|
exe = SAFARIDRIVER_TECHNOLOGY_PREVIEW_EXE;
|
|
247
159
|
}
|
|
@@ -251,7 +163,7 @@ class Driver extends webdriver.WebDriver {
|
|
|
251
163
|
service.start().then(url => new http.HttpClient(url)));
|
|
252
164
|
|
|
253
165
|
return /** @type {!Driver} */(super.createSession(
|
|
254
|
-
executor, caps,
|
|
166
|
+
executor, caps, () => service.kill()));
|
|
255
167
|
}
|
|
256
168
|
}
|
|
257
169
|
|
|
@@ -262,3 +174,4 @@ class Driver extends webdriver.WebDriver {
|
|
|
262
174
|
exports.Driver = Driver;
|
|
263
175
|
exports.Options = Options;
|
|
264
176
|
exports.ServiceBuilder = ServiceBuilder;
|
|
177
|
+
exports.locateSynchronously = locateSynchronously;
|