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/lib/http.js
CHANGED
|
@@ -29,21 +29,37 @@ const cmd = require('./command');
|
|
|
29
29
|
const error = require('./error');
|
|
30
30
|
const logging = require('./logging');
|
|
31
31
|
const promise = require('./promise');
|
|
32
|
-
const Session = require('./session')
|
|
33
|
-
const WebElement = require('./webdriver')
|
|
32
|
+
const {Session} = require('./session');
|
|
33
|
+
const {WebElement} = require('./webdriver');
|
|
34
34
|
|
|
35
|
-
const
|
|
35
|
+
const getAttribute = requireAtom(
|
|
36
|
+
'./atoms/get-attribute.js',
|
|
37
|
+
'//javascript/node/selenium-webdriver/lib/atoms:get-attribute.js');
|
|
38
|
+
const isDisplayed = requireAtom(
|
|
39
|
+
'./atoms/is-displayed.js',
|
|
40
|
+
'//javascript/node/selenium-webdriver/lib/atoms:is-displayed.js');
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @param {string} module
|
|
44
|
+
* @param {string} bazelTarget
|
|
45
|
+
* @return {!Function}
|
|
46
|
+
*/
|
|
47
|
+
function requireAtom(module, bazelTarget) {
|
|
36
48
|
try {
|
|
37
|
-
return
|
|
38
|
-
getAttribute: require('./atoms/getAttribute.js'),
|
|
39
|
-
isDisplayed: require('./atoms/is-displayed.js')
|
|
40
|
-
};
|
|
49
|
+
return require(module);
|
|
41
50
|
} catch (ex) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
try {
|
|
52
|
+
const file = bazelTarget.slice(2).replace(':', '/');
|
|
53
|
+
return require(`../../../../bazel-genfiles/${file}`);
|
|
54
|
+
} catch (ex2) {
|
|
55
|
+
console.log(ex2);
|
|
56
|
+
throw Error(
|
|
57
|
+
`Failed to import atoms module ${module}. If running in dev mode, you`
|
|
58
|
+
+ ` need to run \`bazel build ${bazelTarget}\` from the project`
|
|
59
|
+
+ `root: ${ex}`);
|
|
60
|
+
}
|
|
45
61
|
}
|
|
46
|
-
}
|
|
62
|
+
}
|
|
47
63
|
|
|
48
64
|
|
|
49
65
|
/**
|
|
@@ -145,7 +161,7 @@ function resource(method, path) { return {method: method, path: path}; }
|
|
|
145
161
|
var CommandSpec;
|
|
146
162
|
|
|
147
163
|
|
|
148
|
-
/** @typedef {function(!cmd.Command): !
|
|
164
|
+
/** @typedef {function(!cmd.Command): !cmd.Command} */
|
|
149
165
|
var CommandTransformer;
|
|
150
166
|
|
|
151
167
|
|
|
@@ -155,21 +171,17 @@ class InternalTypeError extends TypeError {}
|
|
|
155
171
|
/**
|
|
156
172
|
* @param {!cmd.Command} command The initial command.
|
|
157
173
|
* @param {Atom} atom The name of the atom to execute.
|
|
158
|
-
* @return {!
|
|
174
|
+
* @return {!cmd.Command} The transformed command to execute.
|
|
159
175
|
*/
|
|
160
176
|
function toExecuteAtomCommand(command, atom, ...params) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
177
|
+
if (typeof atom !== 'function') {
|
|
178
|
+
throw new InternalTypeError('atom is not a function: ' + typeof atom);
|
|
179
|
+
}
|
|
166
180
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
resolve(newCmd);
|
|
172
|
-
});
|
|
181
|
+
return new cmd.Command(cmd.Name.EXECUTE_SCRIPT)
|
|
182
|
+
.setParameter('sessionId', command.getParameter('sessionId'))
|
|
183
|
+
.setParameter('script', `return (${atom}).apply(null, arguments)`)
|
|
184
|
+
.setParameter('args', params.map(param => command.getParameter(param)));
|
|
173
185
|
}
|
|
174
186
|
|
|
175
187
|
|
|
@@ -179,7 +191,6 @@ const COMMAND_MAP = new Map([
|
|
|
179
191
|
[cmd.Name.GET_SERVER_STATUS, get('/status')],
|
|
180
192
|
[cmd.Name.NEW_SESSION, post('/session')],
|
|
181
193
|
[cmd.Name.GET_SESSIONS, get('/sessions')],
|
|
182
|
-
[cmd.Name.DESCRIBE_SESSION, get('/session/:sessionId')],
|
|
183
194
|
[cmd.Name.QUIT, del('/session/:sessionId')],
|
|
184
195
|
[cmd.Name.CLOSE, del('/session/:sessionId/window')],
|
|
185
196
|
[cmd.Name.GET_CURRENT_WINDOW_HANDLE, get('/session/:sessionId/window_handle')],
|
|
@@ -211,7 +222,6 @@ const COMMAND_MAP = new Map([
|
|
|
211
222
|
[cmd.Name.GET_ELEMENT_SIZE, get('/session/:sessionId/element/:id/size')],
|
|
212
223
|
[cmd.Name.GET_ELEMENT_ATTRIBUTE, get('/session/:sessionId/element/:id/attribute/:name')],
|
|
213
224
|
[cmd.Name.GET_ELEMENT_VALUE_OF_CSS_PROPERTY, get('/session/:sessionId/element/:id/css/:propertyName')],
|
|
214
|
-
[cmd.Name.ELEMENT_EQUALS, get('/session/:sessionId/element/:id/equals/:other')],
|
|
215
225
|
[cmd.Name.TAKE_ELEMENT_SCREENSHOT, get('/session/:sessionId/element/:id/screenshot')],
|
|
216
226
|
[cmd.Name.SWITCH_TO_WINDOW, post('/session/:sessionId/window')],
|
|
217
227
|
[cmd.Name.MAXIMIZE_WINDOW, post('/session/:sessionId/window/current/maximize')],
|
|
@@ -220,6 +230,7 @@ const COMMAND_MAP = new Map([
|
|
|
220
230
|
[cmd.Name.GET_WINDOW_SIZE, get('/session/:sessionId/window/current/size')],
|
|
221
231
|
[cmd.Name.SET_WINDOW_SIZE, post('/session/:sessionId/window/current/size')],
|
|
222
232
|
[cmd.Name.SWITCH_TO_FRAME, post('/session/:sessionId/frame')],
|
|
233
|
+
[cmd.Name.SWITCH_TO_FRAME_PARENT, post('/session/:sessionId/frame/parent')],
|
|
223
234
|
[cmd.Name.GET_PAGE_SOURCE, get('/session/:sessionId/source')],
|
|
224
235
|
[cmd.Name.GET_TITLE, get('/session/:sessionId/title')],
|
|
225
236
|
[cmd.Name.EXECUTE_SCRIPT, post('/session/:sessionId/execute')],
|
|
@@ -227,57 +238,104 @@ const COMMAND_MAP = new Map([
|
|
|
227
238
|
[cmd.Name.SCREENSHOT, get('/session/:sessionId/screenshot')],
|
|
228
239
|
[cmd.Name.GET_TIMEOUT, get('/session/:sessionId/timeouts')],
|
|
229
240
|
[cmd.Name.SET_TIMEOUT, post('/session/:sessionId/timeouts')],
|
|
230
|
-
[cmd.Name.MOVE_TO, post('/session/:sessionId/moveto')],
|
|
231
|
-
[cmd.Name.CLICK, post('/session/:sessionId/click')],
|
|
232
|
-
[cmd.Name.DOUBLE_CLICK, post('/session/:sessionId/doubleclick')],
|
|
233
|
-
[cmd.Name.MOUSE_DOWN, post('/session/:sessionId/buttondown')],
|
|
234
|
-
[cmd.Name.MOUSE_UP, post('/session/:sessionId/buttonup')],
|
|
235
|
-
[cmd.Name.MOVE_TO, post('/session/:sessionId/moveto')],
|
|
236
|
-
[cmd.Name.SEND_KEYS_TO_ACTIVE_ELEMENT, post('/session/:sessionId/keys')],
|
|
237
|
-
[cmd.Name.TOUCH_SINGLE_TAP, post('/session/:sessionId/touch/click')],
|
|
238
|
-
[cmd.Name.TOUCH_DOUBLE_TAP, post('/session/:sessionId/touch/doubleclick')],
|
|
239
|
-
[cmd.Name.TOUCH_DOWN, post('/session/:sessionId/touch/down')],
|
|
240
|
-
[cmd.Name.TOUCH_UP, post('/session/:sessionId/touch/up')],
|
|
241
|
-
[cmd.Name.TOUCH_MOVE, post('/session/:sessionId/touch/move')],
|
|
242
|
-
[cmd.Name.TOUCH_SCROLL, post('/session/:sessionId/touch/scroll')],
|
|
243
|
-
[cmd.Name.TOUCH_LONG_PRESS, post('/session/:sessionId/touch/longclick')],
|
|
244
|
-
[cmd.Name.TOUCH_FLICK, post('/session/:sessionId/touch/flick')],
|
|
245
241
|
[cmd.Name.ACCEPT_ALERT, post('/session/:sessionId/accept_alert')],
|
|
246
242
|
[cmd.Name.DISMISS_ALERT, post('/session/:sessionId/dismiss_alert')],
|
|
247
243
|
[cmd.Name.GET_ALERT_TEXT, get('/session/:sessionId/alert_text')],
|
|
248
244
|
[cmd.Name.SET_ALERT_TEXT, post('/session/:sessionId/alert_text')],
|
|
249
|
-
[cmd.Name.SET_ALERT_CREDENTIALS, post('/session/:sessionId/alert/credentials')],
|
|
250
245
|
[cmd.Name.GET_LOG, post('/session/:sessionId/log')],
|
|
251
246
|
[cmd.Name.GET_AVAILABLE_LOG_TYPES, get('/session/:sessionId/log/types')],
|
|
252
247
|
[cmd.Name.GET_SESSION_LOGS, post('/logs')],
|
|
253
248
|
[cmd.Name.UPLOAD_FILE, post('/session/:sessionId/file')],
|
|
249
|
+
[cmd.Name.LEGACY_ACTION_CLICK, post('/session/:sessionId/click')],
|
|
250
|
+
[cmd.Name.LEGACY_ACTION_DOUBLE_CLICK, post('/session/:sessionId/doubleclick')],
|
|
251
|
+
[cmd.Name.LEGACY_ACTION_MOUSE_DOWN, post('/session/:sessionId/buttondown')],
|
|
252
|
+
[cmd.Name.LEGACY_ACTION_MOUSE_UP, post('/session/:sessionId/buttonup')],
|
|
253
|
+
[cmd.Name.LEGACY_ACTION_MOUSE_MOVE, post('/session/:sessionId/moveto')],
|
|
254
|
+
[cmd.Name.LEGACY_ACTION_SEND_KEYS, post('/session/:sessionId/keys')],
|
|
255
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_DOWN, post('/session/:sessionId/touch/down')],
|
|
256
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_UP, post('/session/:sessionId/touch/up')],
|
|
257
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_MOVE, post('/session/:sessionId/touch/move')],
|
|
258
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_SCROLL, post('/session/:sessionId/touch/scroll')],
|
|
259
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_LONG_PRESS, post('/session/:sessionId/touch/longclick')],
|
|
260
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_FLICK, post('/session/:sessionId/touch/flick')],
|
|
261
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_SINGLE_TAP, post('/session/:sessionId/touch/click')],
|
|
262
|
+
[cmd.Name.LEGACY_ACTION_TOUCH_DOUBLE_TAP, post('/session/:sessionId/touch/doubleclick')],
|
|
254
263
|
]);
|
|
255
264
|
|
|
256
265
|
|
|
257
266
|
/** @const {!Map<string, (CommandSpec|CommandTransformer)>} */
|
|
258
267
|
const W3C_COMMAND_MAP = new Map([
|
|
268
|
+
// Server status.
|
|
269
|
+
[cmd.Name.GET_SERVER_STATUS, get('/status')],
|
|
270
|
+
// Session management.
|
|
271
|
+
[cmd.Name.NEW_SESSION, post('/session')],
|
|
272
|
+
[cmd.Name.QUIT, del('/session/:sessionId')],
|
|
273
|
+
[cmd.Name.GET_TIMEOUT, get('/session/:sessionId/timeouts')],
|
|
274
|
+
[cmd.Name.SET_TIMEOUT, post('/session/:sessionId/timeouts')],
|
|
275
|
+
// Navigation.
|
|
276
|
+
[cmd.Name.GET_CURRENT_URL, get('/session/:sessionId/url')],
|
|
277
|
+
[cmd.Name.GET, post('/session/:sessionId/url')],
|
|
278
|
+
[cmd.Name.GO_BACK, post('/session/:sessionId/back')],
|
|
279
|
+
[cmd.Name.GO_FORWARD, post('/session/:sessionId/forward')],
|
|
280
|
+
[cmd.Name.REFRESH, post('/session/:sessionId/refresh')],
|
|
281
|
+
// Page inspection.
|
|
282
|
+
[cmd.Name.GET_PAGE_SOURCE, get('/session/:sessionId/source')],
|
|
283
|
+
[cmd.Name.GET_TITLE, get('/session/:sessionId/title')],
|
|
284
|
+
// Script execution.
|
|
285
|
+
[cmd.Name.EXECUTE_SCRIPT, post('/session/:sessionId/execute/sync')],
|
|
286
|
+
[cmd.Name.EXECUTE_ASYNC_SCRIPT, post('/session/:sessionId/execute/async')],
|
|
287
|
+
// Frame selection.
|
|
288
|
+
[cmd.Name.SWITCH_TO_FRAME, post('/session/:sessionId/frame')],
|
|
289
|
+
[cmd.Name.SWITCH_TO_FRAME_PARENT, post('/session/:sessionId/frame/parent')],
|
|
290
|
+
// Window management.
|
|
291
|
+
[cmd.Name.GET_CURRENT_WINDOW_HANDLE, get('/session/:sessionId/window')],
|
|
292
|
+
[cmd.Name.CLOSE, del('/session/:sessionId/window')],
|
|
293
|
+
[cmd.Name.SWITCH_TO_WINDOW, post('/session/:sessionId/window')],
|
|
294
|
+
[cmd.Name.SWITCH_TO_NEW_WINDOW, post('/session/:sessionId/window/new')],
|
|
295
|
+
[cmd.Name.GET_WINDOW_HANDLES, get('/session/:sessionId/window/handles')],
|
|
296
|
+
[cmd.Name.GET_WINDOW_RECT, get('/session/:sessionId/window/rect')],
|
|
297
|
+
[cmd.Name.SET_WINDOW_RECT, post('/session/:sessionId/window/rect')],
|
|
298
|
+
[cmd.Name.MAXIMIZE_WINDOW, post('/session/:sessionId/window/maximize')],
|
|
299
|
+
[cmd.Name.MINIMIZE_WINDOW, post('/session/:sessionId/window/minimize')],
|
|
300
|
+
[cmd.Name.FULLSCREEN_WINDOW, post('/session/:sessionId/window/fullscreen')],
|
|
301
|
+
// Actions.
|
|
302
|
+
[cmd.Name.ACTIONS, post('/session/:sessionId/actions')],
|
|
303
|
+
[cmd.Name.CLEAR_ACTIONS, del('/session/:sessionId/actions')],
|
|
304
|
+
// Locating elements.
|
|
259
305
|
[cmd.Name.GET_ACTIVE_ELEMENT, get('/session/:sessionId/element/active')],
|
|
260
|
-
[cmd.Name.
|
|
261
|
-
[cmd.Name.
|
|
262
|
-
[cmd.Name.
|
|
263
|
-
[cmd.Name.
|
|
306
|
+
[cmd.Name.FIND_ELEMENT, post('/session/:sessionId/element')],
|
|
307
|
+
[cmd.Name.FIND_ELEMENTS, post('/session/:sessionId/elements')],
|
|
308
|
+
[cmd.Name.FIND_CHILD_ELEMENT, post('/session/:sessionId/element/:id/element')],
|
|
309
|
+
[cmd.Name.FIND_CHILD_ELEMENTS, post('/session/:sessionId/element/:id/elements')],
|
|
310
|
+
// Element interaction.
|
|
311
|
+
[cmd.Name.GET_ELEMENT_TAG_NAME, get('/session/:sessionId/element/:id/name')],
|
|
312
|
+
[cmd.Name.GET_ELEMENT_VALUE_OF_CSS_PROPERTY, get('/session/:sessionId/element/:id/css/:propertyName')],
|
|
313
|
+
[cmd.Name.GET_ELEMENT_RECT, get('/session/:sessionId/element/:id/rect')],
|
|
314
|
+
[cmd.Name.CLEAR_ELEMENT, post('/session/:sessionId/element/:id/clear')],
|
|
315
|
+
[cmd.Name.CLICK_ELEMENT, post('/session/:sessionId/element/:id/click')],
|
|
316
|
+
[cmd.Name.SEND_KEYS_TO_ELEMENT, post('/session/:sessionId/element/:id/value')],
|
|
317
|
+
[cmd.Name.GET_ELEMENT_TEXT, get('/session/:sessionId/element/:id/text')],
|
|
318
|
+
[cmd.Name.IS_ELEMENT_ENABLED, get('/session/:sessionId/element/:id/enabled')],
|
|
264
319
|
[cmd.Name.GET_ELEMENT_ATTRIBUTE, (cmd) => {
|
|
265
320
|
return toExecuteAtomCommand(cmd, Atom.GET_ATTRIBUTE, 'id', 'name');
|
|
266
321
|
}],
|
|
267
|
-
[cmd.Name.GET_ELEMENT_LOCATION, get('/session/:sessionId/element/:id/rect')],
|
|
268
|
-
[cmd.Name.GET_ELEMENT_SIZE, get('/session/:sessionId/element/:id/rect')],
|
|
269
322
|
[cmd.Name.IS_ELEMENT_DISPLAYED, (cmd) => {
|
|
270
323
|
return toExecuteAtomCommand(cmd, Atom.IS_DISPLAYED, 'id');
|
|
271
324
|
}],
|
|
272
|
-
|
|
273
|
-
[cmd.Name.
|
|
274
|
-
[cmd.Name.
|
|
275
|
-
[cmd.Name.
|
|
276
|
-
[cmd.Name.
|
|
277
|
-
[cmd.Name.
|
|
278
|
-
|
|
279
|
-
[cmd.Name.
|
|
280
|
-
[cmd.Name.
|
|
325
|
+
// Cookie management.
|
|
326
|
+
[cmd.Name.GET_ALL_COOKIES, get('/session/:sessionId/cookie')],
|
|
327
|
+
[cmd.Name.ADD_COOKIE, post('/session/:sessionId/cookie')],
|
|
328
|
+
[cmd.Name.DELETE_ALL_COOKIES, del('/session/:sessionId/cookie')],
|
|
329
|
+
[cmd.Name.GET_COOKIE, get('/session/:sessionId/cookie/:name')],
|
|
330
|
+
[cmd.Name.DELETE_COOKIE, del('/session/:sessionId/cookie/:name')],
|
|
331
|
+
// Alert management.
|
|
332
|
+
[cmd.Name.ACCEPT_ALERT, post('/session/:sessionId/alert/accept')],
|
|
333
|
+
[cmd.Name.DISMISS_ALERT, post('/session/:sessionId/alert/dismiss')],
|
|
334
|
+
[cmd.Name.GET_ALERT_TEXT, get('/session/:sessionId/alert/text')],
|
|
335
|
+
[cmd.Name.SET_ALERT_TEXT, post('/session/:sessionId/alert/text')],
|
|
336
|
+
// Screenshots.
|
|
337
|
+
[cmd.Name.SCREENSHOT, get('/session/:sessionId/screenshot')],
|
|
338
|
+
[cmd.Name.TAKE_ELEMENT_SCREENSHOT, get('/session/:sessionId/element/:id/screenshot')],
|
|
281
339
|
]);
|
|
282
340
|
|
|
283
341
|
|
|
@@ -301,35 +359,13 @@ class Client {
|
|
|
301
359
|
}
|
|
302
360
|
|
|
303
361
|
|
|
304
|
-
const CLIENTS =
|
|
305
|
-
/** !WeakMap<!Executor, !(Client|IThenable<!Client>)> */new WeakMap;
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Sends a request using the given executor.
|
|
310
|
-
* @param {!Executor} executor
|
|
311
|
-
* @param {!Request} request
|
|
312
|
-
* @return {!Promise<Response>}
|
|
313
|
-
*/
|
|
314
|
-
function doSend(executor, request) {
|
|
315
|
-
const client = CLIENTS.get(executor);
|
|
316
|
-
if (promise.isPromise(client)) {
|
|
317
|
-
return client.then(client => {
|
|
318
|
-
CLIENTS.set(executor, client);
|
|
319
|
-
return client.send(request);
|
|
320
|
-
});
|
|
321
|
-
} else {
|
|
322
|
-
return client.send(request);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
362
|
|
|
327
363
|
/**
|
|
328
364
|
* @param {Map<string, CommandSpec>} customCommands
|
|
329
365
|
* A map of custom command definitions.
|
|
330
366
|
* @param {boolean} w3c Whether to use W3C command mappings.
|
|
331
367
|
* @param {!cmd.Command} command The command to resolve.
|
|
332
|
-
* @return {!
|
|
368
|
+
* @return {!Request} A promise that will resolve with the
|
|
333
369
|
* command to execute.
|
|
334
370
|
*/
|
|
335
371
|
function buildRequest(customCommands, w3c, command) {
|
|
@@ -343,8 +379,8 @@ function buildRequest(customCommands, w3c, command) {
|
|
|
343
379
|
spec = W3C_COMMAND_MAP.get(command.getName());
|
|
344
380
|
if (typeof spec === 'function') {
|
|
345
381
|
LOG.finest(() => `Transforming command for W3C: ${command.getName()}`);
|
|
346
|
-
|
|
347
|
-
|
|
382
|
+
let newCommand = spec(command);
|
|
383
|
+
return buildRequest(customCommands, w3c, newCommand);
|
|
348
384
|
} else if (spec) {
|
|
349
385
|
return toHttpRequest(spec);
|
|
350
386
|
}
|
|
@@ -354,23 +390,26 @@ function buildRequest(customCommands, w3c, command) {
|
|
|
354
390
|
if (spec) {
|
|
355
391
|
return toHttpRequest(spec);
|
|
356
392
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
'Unrecognized command: ' + command.getName()));
|
|
393
|
+
throw new error.UnknownCommandError(
|
|
394
|
+
'Unrecognized command: ' + command.getName());
|
|
360
395
|
|
|
361
396
|
/**
|
|
362
397
|
* @param {CommandSpec} resource
|
|
363
|
-
* @return {!
|
|
398
|
+
* @return {!Request}
|
|
364
399
|
*/
|
|
365
400
|
function toHttpRequest(resource) {
|
|
366
401
|
LOG.finest(() => `Building HTTP request: ${JSON.stringify(resource)}`);
|
|
367
402
|
let parameters = command.getParameters();
|
|
368
403
|
let path = buildPath(resource.path, parameters);
|
|
369
|
-
return
|
|
404
|
+
return new Request(resource.method, path, parameters);
|
|
370
405
|
}
|
|
371
406
|
}
|
|
372
407
|
|
|
373
408
|
|
|
409
|
+
const CLIENTS =
|
|
410
|
+
/** !WeakMap<!Executor, !(Client|IThenable<!Client>)> */new WeakMap;
|
|
411
|
+
|
|
412
|
+
|
|
374
413
|
/**
|
|
375
414
|
* A command executor that communicates with the server using JSON over HTTP.
|
|
376
415
|
*
|
|
@@ -430,38 +469,41 @@ class Executor {
|
|
|
430
469
|
}
|
|
431
470
|
|
|
432
471
|
/** @override */
|
|
433
|
-
execute(command) {
|
|
472
|
+
async execute(command) {
|
|
434
473
|
let request = buildRequest(this.customCommands_, this.w3c, command);
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
474
|
+
this.log_.finer(() => `>>> ${request.method} ${request.path}`);
|
|
475
|
+
|
|
476
|
+
let client = CLIENTS.get(this);
|
|
477
|
+
if (promise.isPromise(client)) {
|
|
478
|
+
client = await client;
|
|
479
|
+
CLIENTS.set(this, client);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
let response = await client.send(request);
|
|
483
|
+
this.log_.finer(() => `>>>\n${request}\n<<<\n${response}`);
|
|
484
|
+
|
|
485
|
+
let httpResponse = /** @type {!Response} */(response);
|
|
486
|
+
let {isW3C, value} = parseHttpResponse(command, httpResponse);
|
|
487
|
+
|
|
488
|
+
if (command.getName() === cmd.Name.NEW_SESSION) {
|
|
489
|
+
if (!value || !value.sessionId) {
|
|
490
|
+
throw new error.WebDriverError(
|
|
491
|
+
`Unable to parse new session response: ${response.body}`);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// The remote end is a W3C compliant server if there is no `status`
|
|
495
|
+
// field in the response.
|
|
496
|
+
if (command.getName() === cmd.Name.NEW_SESSION) {
|
|
497
|
+
this.w3c = this.w3c || isW3C;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// No implementations use the `capabilities` key yet...
|
|
501
|
+
let capabilities = value.capabilities || value.value;
|
|
502
|
+
return new Session(
|
|
503
|
+
/** @type {{sessionId: string}} */(value).sessionId, capabilities);
|
|
504
|
+
}
|
|
461
505
|
|
|
462
|
-
|
|
463
|
-
});
|
|
464
|
-
});
|
|
506
|
+
return typeof value === 'undefined' ? null : value;
|
|
465
507
|
}
|
|
466
508
|
}
|
|
467
509
|
|
|
@@ -510,8 +552,7 @@ function parseHttpResponse(command, httpResponse) {
|
|
|
510
552
|
|
|
511
553
|
// Adjust legacy new session responses to look like W3C to simplify
|
|
512
554
|
// later processing.
|
|
513
|
-
if (command.getName() === cmd.Name.NEW_SESSION
|
|
514
|
-
|| command.getName() == cmd.Name.DESCRIBE_SESSION) {
|
|
555
|
+
if (command.getName() === cmd.Name.NEW_SESSION) {
|
|
515
556
|
value = parsed;
|
|
516
557
|
}
|
|
517
558
|
|
|
@@ -531,7 +572,7 @@ function parseHttpResponse(command, httpResponse) {
|
|
|
531
572
|
// 404 represents an unknown command; anything else > 399 is a generic unknown
|
|
532
573
|
// error.
|
|
533
574
|
if (httpResponse.status == 404) {
|
|
534
|
-
throw new error.UnsupportedOperationError(value);
|
|
575
|
+
throw new error.UnsupportedOperationError(command.getName() + ': ' + value);
|
|
535
576
|
} else if (httpResponse.status >= 400) {
|
|
536
577
|
throw new error.WebDriverError(value);
|
|
537
578
|
}
|