selenium-webdriver 2.48.2 → 2.53.3
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 +116 -0
- package/NOTICE +1 -1
- package/README.md +59 -9
- package/builder.js +375 -358
- package/chrome.js +549 -586
- package/edge.js +378 -0
- package/error.js +9 -6
- package/example/google_search.js +1 -1
- package/example/google_search_generator.js +2 -4
- package/example/logging.js +6 -2
- package/example/sample.js +21 -0
- package/executors.js +11 -27
- package/firefox/binary.js +149 -98
- package/firefox/extension.js +15 -19
- package/firefox/index.js +256 -163
- package/firefox/profile.js +223 -243
- package/http/index.js +487 -81
- package/http/util.js +40 -36
- package/ie.js +288 -309
- package/index.js +34 -125
- package/io/exec.js +58 -39
- package/io/index.js +72 -60
- package/lib/README +4 -0
- package/lib/actions.js +596 -0
- package/lib/by.js +277 -0
- package/lib/capabilities.js +450 -0
- package/lib/{webdriver/command.js → command.js} +91 -72
- package/lib/{webdriver/button.js → devmode.js} +13 -8
- package/lib/error.js +690 -0
- package/lib/events.js +212 -0
- package/lib/firefox/amd64/libnoblur64.so +0 -0
- package/lib/firefox/i386/libnoblur.so +0 -0
- package/lib/firefox/webdriver.json +5 -1
- package/lib/firefox/webdriver.xpi +0 -0
- package/lib/{webdriver/key.js → input.js} +84 -2
- package/lib/logging.js +670 -0
- package/lib/{webdriver/promise.js → promise.js} +817 -644
- package/lib/safari/client.js +266 -214
- package/lib/session.js +80 -0
- package/lib/{webdriver/serializable.js → symbols.js} +16 -19
- package/lib/test/build.js +4 -4
- package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
- package/lib/test/data/click_tests/overlapping_elements.html +15 -4
- package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
- package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
- package/lib/test/data/hidden_partially.html +45 -0
- package/lib/test/data/readOnlyPage.html +1 -1
- package/lib/test/data/selectPage.html +18 -2
- package/lib/test/fileserver.js +3 -4
- package/lib/test/index.js +7 -3
- package/lib/test/resources.js +1 -1
- package/lib/until.js +376 -0
- package/lib/webdriver.js +2440 -0
- package/net/index.js +4 -0
- package/net/portprober.js +16 -12
- package/opera.js +295 -314
- package/package.json +6 -5
- package/phantomjs.js +144 -147
- package/proxy.js +10 -6
- package/remote/index.js +289 -238
- package/safari.js +326 -311
- package/test/chrome/options_test.js +11 -9
- package/test/element_finding_test.js +51 -13
- package/test/execute_script_test.js +17 -3
- package/test/firefox/firefox_test.js +0 -32
- package/test/http/http_test.js +671 -61
- package/test/http/util_test.js +25 -23
- package/test/io_test.js +67 -1
- package/test/lib/by_test.js +139 -0
- package/test/lib/capabilities_test.js +111 -0
- package/test/lib/error_test.js +325 -0
- package/test/lib/events_test.js +177 -0
- package/test/lib/logging_test.js +272 -0
- package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
- package/test/lib/promise_error_test.js +808 -0
- package/test/lib/promise_flow_test.js +2282 -0
- package/test/lib/promise_generator_test.js +308 -0
- package/test/lib/promise_test.js +996 -0
- package/test/lib/testutil.js +90 -0
- package/test/lib/until_test.js +400 -0
- package/test/lib/webdriver_test.js +2157 -0
- package/test/page_loading_test.js +7 -9
- package/test/remote_test.js +50 -3
- package/test/session_test.js +53 -0
- package/test/stale_element_test.js +2 -2
- package/test/testing/assert_test.js +374 -0
- package/test/testing/index_test.js +9 -11
- package/testing/assert.js +334 -17
- package/testing/index.js +12 -2
- package/_base.js +0 -200
- package/docs/Changes.html +0 -356
- package/docs/class_bot_Error.html +0 -15
- package/docs/class_webdriver_ActionSequence.html +0 -115
- package/docs/class_webdriver_Alert.html +0 -24
- package/docs/class_webdriver_AlertPromise.html +0 -92
- package/docs/class_webdriver_Capabilities.html +0 -60
- package/docs/class_webdriver_Command.html +0 -15
- package/docs/class_webdriver_EventEmitter.html +0 -35
- package/docs/class_webdriver_FileDetector.html +0 -21
- package/docs/class_webdriver_Locator.html +0 -12
- package/docs/class_webdriver_Serializable.html +0 -9
- package/docs/class_webdriver_Session.html +0 -13
- package/docs/class_webdriver_TouchSequence.html +0 -49
- package/docs/class_webdriver_UnhandledAlertError.html +0 -18
- package/docs/class_webdriver_WebDriver.html +0 -313
- package/docs/class_webdriver_WebDriver_Logs.html +0 -15
- package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
- package/docs/class_webdriver_WebDriver_Options.html +0 -41
- package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
- package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
- package/docs/class_webdriver_WebDriver_Window.html +0 -27
- package/docs/class_webdriver_WebElement.html +0 -223
- package/docs/class_webdriver_WebElementPromise.html +0 -274
- package/docs/class_webdriver_http_Executor.html +0 -22
- package/docs/class_webdriver_http_Request.html +0 -12
- package/docs/class_webdriver_http_Response.html +0 -13
- package/docs/class_webdriver_logging_Entry.html +0 -15
- package/docs/class_webdriver_logging_Level.html +0 -55
- package/docs/class_webdriver_logging_LogRecord.html +0 -45
- package/docs/class_webdriver_logging_Logger.html +0 -119
- package/docs/class_webdriver_logging_Preferences.html +0 -8
- package/docs/class_webdriver_promise_CancellationError.html +0 -17
- package/docs/class_webdriver_promise_ControlFlow.html +0 -153
- package/docs/class_webdriver_promise_Deferred.html +0 -84
- package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
- package/docs/class_webdriver_promise_Promise.html +0 -75
- package/docs/class_webdriver_stacktrace_Frame.html +0 -20
- package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
- package/docs/class_webdriver_testing_Assertion.html +0 -99
- package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
- package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
- package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
- package/docs/class_webdriver_until_Condition.html +0 -7
- package/docs/dossier.css +0 -1
- package/docs/dossier.js +0 -86
- package/docs/enum_bot_ErrorCode.html +0 -3
- package/docs/enum_bot_Error_State.html +0 -2
- package/docs/enum_webdriver_Browser.html +0 -2
- package/docs/enum_webdriver_Button.html +0 -2
- package/docs/enum_webdriver_Capability.html +0 -33
- package/docs/enum_webdriver_CommandName.html +0 -3
- package/docs/enum_webdriver_Key.html +0 -12
- package/docs/enum_webdriver_logging_Type.html +0 -6
- package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
- package/docs/index.html +0 -125
- package/docs/interface_webdriver_CommandExecutor.html +0 -9
- package/docs/interface_webdriver_http_Client.html +0 -10
- package/docs/interface_webdriver_promise_Thenable.html +0 -77
- package/docs/module_selenium-webdriver.html +0 -23
- package/docs/module_selenium-webdriver__base.html +0 -23
- package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
- package/docs/module_selenium-webdriver_builder.html +0 -2
- package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
- package/docs/module_selenium-webdriver_chrome.html +0 -90
- package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
- package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
- package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
- package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
- package/docs/module_selenium-webdriver_class_Builder.html +0 -138
- package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
- package/docs/module_selenium-webdriver_class_Command.html +0 -15
- package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
- package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
- package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
- package/docs/module_selenium-webdriver_class_Session.html +0 -13
- package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
- package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
- package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
- package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
- package/docs/module_selenium-webdriver_enum_Button.html +0 -2
- package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
- package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
- package/docs/module_selenium-webdriver_enum_Key.html +0 -12
- package/docs/module_selenium-webdriver_error.html +0 -4
- package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
- package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
- package/docs/module_selenium-webdriver_executors.html +0 -10
- package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
- package/docs/module_selenium-webdriver_firefox.html +0 -68
- package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
- package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
- package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
- package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
- package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
- package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
- package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
- package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
- package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
- package/docs/module_selenium-webdriver_http.html +0 -9
- package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
- package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
- package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
- package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
- package/docs/module_selenium-webdriver_http_util.html +0 -17
- package/docs/module_selenium-webdriver_ie.html +0 -11
- package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
- package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
- package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
- package/docs/module_selenium-webdriver_io.html +0 -37
- package/docs/module_selenium-webdriver_io_exec.html +0 -6
- package/docs/module_selenium-webdriver_namespace_By.html +0 -56
- package/docs/module_selenium-webdriver_namespace_error.html +0 -4
- package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
- package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
- package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
- package/docs/module_selenium-webdriver_namespace_until.html +0 -82
- package/docs/module_selenium-webdriver_net.html +0 -7
- package/docs/module_selenium-webdriver_net_portprober.html +0 -12
- package/docs/module_selenium-webdriver_opera.html +0 -62
- package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
- package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
- package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
- package/docs/module_selenium-webdriver_phantomjs.html +0 -2
- package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
- package/docs/module_selenium-webdriver_proxy.html +0 -28
- package/docs/module_selenium-webdriver_remote.html +0 -8
- package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
- package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
- package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
- package/docs/module_selenium-webdriver_safari.html +0 -9
- package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
- package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
- package/docs/module_selenium-webdriver_testing.html +0 -74
- package/docs/module_selenium-webdriver_testing_assert.html +0 -9
- package/docs/namespace_bot.html +0 -4
- package/docs/namespace_bot_json.html +0 -20
- package/docs/namespace_bot_response.html +0 -18
- package/docs/namespace_bot_userAgent.html +0 -33
- package/docs/namespace_webdriver.html +0 -30
- package/docs/namespace_webdriver_By.html +0 -56
- package/docs/namespace_webdriver_http.html +0 -6
- package/docs/namespace_webdriver_logging.html +0 -70
- package/docs/namespace_webdriver_promise.html +0 -688
- package/docs/namespace_webdriver_stacktrace.html +0 -17
- package/docs/namespace_webdriver_testing.html +0 -7
- package/docs/namespace_webdriver_testing_assert.html +0 -9
- package/docs/namespace_webdriver_testing_asserts.html +0 -18
- package/docs/namespace_webdriver_until.html +0 -82
- package/docs/source/_base.js.src.html +0 -1
- package/docs/source/builder.js.src.html +0 -1
- package/docs/source/chrome.js.src.html +0 -1
- package/docs/source/error.js.src.html +0 -1
- package/docs/source/executors.js.src.html +0 -1
- package/docs/source/firefox/binary.js.src.html +0 -1
- package/docs/source/firefox/extension.js.src.html +0 -1
- package/docs/source/firefox/index.js.src.html +0 -1
- package/docs/source/firefox/profile.js.src.html +0 -1
- package/docs/source/http/index.js.src.html +0 -1
- package/docs/source/http/util.js.src.html +0 -1
- package/docs/source/ie.js.src.html +0 -1
- package/docs/source/index.js.src.html +0 -1
- package/docs/source/io/exec.js.src.html +0 -1
- package/docs/source/io/index.js.src.html +0 -1
- package/docs/source/lib/atoms/error.js.src.html +0 -1
- package/docs/source/lib/atoms/json.js.src.html +0 -1
- package/docs/source/lib/atoms/response.js.src.html +0 -1
- package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
- package/docs/source/lib/goog/array/array.js.src.html +0 -1
- package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
- package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
- package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
- package/docs/source/lib/goog/async/run.js.src.html +0 -1
- package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
- package/docs/source/lib/goog/base.js.src.html +0 -1
- package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
- package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
- package/docs/source/lib/goog/debug/error.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
- package/docs/source/lib/goog/deps.js.src.html +0 -1
- package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
- package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
- package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
- package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
- package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
- package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
- package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
- package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
- package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
- package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
- package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
- package/docs/source/lib/goog/events/event.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
- package/docs/source/lib/goog/events/events.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
- package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
- package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
- package/docs/source/lib/goog/events/listener.js.src.html +0 -1
- package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
- package/docs/source/lib/goog/fs/url.js.src.html +0 -1
- package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
- package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
- package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
- package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
- package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
- package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
- package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
- package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
- package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
- package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
- package/docs/source/lib/goog/json/json.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
- package/docs/source/lib/goog/log/log.js.src.html +0 -1
- package/docs/source/lib/goog/math/box.js.src.html +0 -1
- package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
- package/docs/source/lib/goog/math/math.js.src.html +0 -1
- package/docs/source/lib/goog/math/rect.js.src.html +0 -1
- package/docs/source/lib/goog/math/size.js.src.html +0 -1
- package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
- package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
- package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
- package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
- package/docs/source/lib/goog/object/object.js.src.html +0 -1
- package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
- package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
- package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
- package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
- package/docs/source/lib/goog/string/const.js.src.html +0 -1
- package/docs/source/lib/goog/string/string.js.src.html +0 -1
- package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
- package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
- package/docs/source/lib/goog/structs/map.js.src.html +0 -1
- package/docs/source/lib/goog/structs/set.js.src.html +0 -1
- package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
- package/docs/source/lib/goog/style/style.js.src.html +0 -1
- package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
- package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
- package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
- package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
- package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
- package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
- package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
- package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
- package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
- package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
- package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
- package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
- package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
- package/docs/source/lib/webdriver/button.js.src.html +0 -1
- package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
- package/docs/source/lib/webdriver/command.js.src.html +0 -1
- package/docs/source/lib/webdriver/events.js.src.html +0 -1
- package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
- package/docs/source/lib/webdriver/key.js.src.html +0 -1
- package/docs/source/lib/webdriver/locators.js.src.html +0 -1
- package/docs/source/lib/webdriver/logging.js.src.html +0 -1
- package/docs/source/lib/webdriver/promise.js.src.html +0 -1
- package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
- package/docs/source/lib/webdriver/session.js.src.html +0 -1
- package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
- package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
- package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
- package/docs/source/lib/webdriver/until.js.src.html +0 -1
- package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
- package/docs/source/net/index.js.src.html +0 -1
- package/docs/source/net/portprober.js.src.html +0 -1
- package/docs/source/opera.js.src.html +0 -1
- package/docs/source/phantomjs.js.src.html +0 -1
- package/docs/source/proxy.js.src.html +0 -1
- package/docs/source/remote/index.js.src.html +0 -1
- package/docs/source/safari.js.src.html +0 -1
- package/docs/source/testing/assert.js.src.html +0 -1
- package/docs/source/testing/index.js.src.html +0 -1
- package/docs/types.js +0 -1
- package/lib/atoms/error.js +0 -202
- package/lib/atoms/json.js +0 -80
- package/lib/atoms/response.js +0 -110
- package/lib/atoms/userAgent.js +0 -257
- package/lib/goog/LICENSE +0 -176
- package/lib/goog/array/array.js +0 -1654
- package/lib/goog/asserts/asserts.js +0 -365
- package/lib/goog/async/freelist.js +0 -88
- package/lib/goog/async/nexttick.js +0 -241
- package/lib/goog/async/run.js +0 -133
- package/lib/goog/async/workqueue.js +0 -139
- package/lib/goog/base.js +0 -2548
- package/lib/goog/debug/debug.js +0 -653
- package/lib/goog/debug/entrypointregistry.js +0 -158
- package/lib/goog/debug/error.js +0 -63
- package/lib/goog/debug/logbuffer.js +0 -148
- package/lib/goog/debug/logger.js +0 -873
- package/lib/goog/debug/logrecord.js +0 -242
- package/lib/goog/deps.js +0 -151
- package/lib/goog/disposable/disposable.js +0 -307
- package/lib/goog/disposable/idisposable.js +0 -45
- package/lib/goog/dom/browserfeature.js +0 -72
- package/lib/goog/dom/dom.js +0 -2991
- package/lib/goog/dom/nodetype.js +0 -48
- package/lib/goog/dom/safe.js +0 -347
- package/lib/goog/dom/tagname.js +0 -160
- package/lib/goog/dom/tags.js +0 -41
- package/lib/goog/dom/vendor.js +0 -96
- package/lib/goog/events/browserevent.js +0 -400
- package/lib/goog/events/browserfeature.js +0 -85
- package/lib/goog/events/event.js +0 -143
- package/lib/goog/events/eventid.js +0 -47
- package/lib/goog/events/events.js +0 -984
- package/lib/goog/events/eventtarget.js +0 -394
- package/lib/goog/events/eventtype.js +0 -237
- package/lib/goog/events/keycodes.js +0 -427
- package/lib/goog/events/listenable.js +0 -335
- package/lib/goog/events/listener.js +0 -131
- package/lib/goog/events/listenermap.js +0 -308
- package/lib/goog/fs/url.js +0 -109
- package/lib/goog/functions/functions.js +0 -442
- package/lib/goog/html/safehtml.js +0 -757
- package/lib/goog/html/safescript.js +0 -234
- package/lib/goog/html/safestyle.js +0 -442
- package/lib/goog/html/safestylesheet.js +0 -276
- package/lib/goog/html/safeurl.js +0 -398
- package/lib/goog/html/trustedresourceurl.js +0 -224
- package/lib/goog/html/uncheckedconversions.js +0 -232
- package/lib/goog/i18n/bidi.js +0 -908
- package/lib/goog/iter/iter.js +0 -1302
- package/lib/goog/json/json.js +0 -363
- package/lib/goog/labs/testing/assertthat.js +0 -58
- package/lib/goog/labs/testing/logicmatcher.js +0 -212
- package/lib/goog/labs/testing/matcher.js +0 -80
- package/lib/goog/labs/testing/numbermatcher.js +0 -346
- package/lib/goog/labs/testing/objectmatcher.js +0 -317
- package/lib/goog/labs/testing/stringmatcher.js +0 -415
- package/lib/goog/labs/useragent/browser.js +0 -341
- package/lib/goog/labs/useragent/engine.js +0 -160
- package/lib/goog/labs/useragent/platform.js +0 -160
- package/lib/goog/labs/useragent/util.js +0 -148
- package/lib/goog/log/log.js +0 -197
- package/lib/goog/math/box.js +0 -398
- package/lib/goog/math/coordinate.js +0 -268
- package/lib/goog/math/math.js +0 -451
- package/lib/goog/math/rect.js +0 -476
- package/lib/goog/math/size.js +0 -227
- package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
- package/lib/goog/net/xhrlike.js +0 -124
- package/lib/goog/net/xmlhttp.js +0 -246
- package/lib/goog/net/xmlhttpfactory.js +0 -67
- package/lib/goog/object/object.js +0 -686
- package/lib/goog/promise/promise.js +0 -1350
- package/lib/goog/promise/resolver.js +0 -48
- package/lib/goog/promise/thenable.js +0 -126
- package/lib/goog/reflect/reflect.js +0 -77
- package/lib/goog/string/const.js +0 -182
- package/lib/goog/string/string.js +0 -1599
- package/lib/goog/string/typedstring.js +0 -48
- package/lib/goog/structs/collection.js +0 -56
- package/lib/goog/structs/map.js +0 -457
- package/lib/goog/structs/set.js +0 -279
- package/lib/goog/structs/structs.js +0 -354
- package/lib/goog/style/style.js +0 -2037
- package/lib/goog/testing/asserts.js +0 -1278
- package/lib/goog/testing/events/events.js +0 -767
- package/lib/goog/testing/functionmock.js +0 -175
- package/lib/goog/testing/jsunit.js +0 -162
- package/lib/goog/testing/loosemock.js +0 -242
- package/lib/goog/testing/mock.js +0 -645
- package/lib/goog/testing/mockclock.js +0 -606
- package/lib/goog/testing/mockcontrol.js +0 -220
- package/lib/goog/testing/mockinterface.js +0 -45
- package/lib/goog/testing/mockmatchers.js +0 -400
- package/lib/goog/testing/objectpropertystring.js +0 -68
- package/lib/goog/testing/propertyreplacer.js +0 -262
- package/lib/goog/testing/recordfunction.js +0 -215
- package/lib/goog/testing/stacktrace.js +0 -594
- package/lib/goog/testing/strictmock.js +0 -130
- package/lib/goog/testing/testcase.js +0 -1629
- package/lib/goog/testing/testrunner.js +0 -440
- package/lib/goog/uri/uri.js +0 -1524
- package/lib/goog/uri/utils.js +0 -1064
- package/lib/goog/useragent/product.js +0 -183
- package/lib/goog/useragent/product_isversion.js +0 -144
- package/lib/goog/useragent/useragent.js +0 -572
- package/lib/webdriver/actionsequence.js +0 -356
- package/lib/webdriver/builder.js +0 -207
- package/lib/webdriver/capabilities.js +0 -412
- package/lib/webdriver/events.js +0 -179
- package/lib/webdriver/firefoxdomexecutor.js +0 -175
- package/lib/webdriver/http/corsclient.js +0 -133
- package/lib/webdriver/http/http.js +0 -525
- package/lib/webdriver/http/xhrclient.js +0 -67
- package/lib/webdriver/locators.js +0 -257
- package/lib/webdriver/logging.js +0 -347
- package/lib/webdriver/session.js +0 -74
- package/lib/webdriver/stacktrace.js +0 -619
- package/lib/webdriver/test/builder_test.js +0 -53
- package/lib/webdriver/test/capabilities_test.js +0 -72
- package/lib/webdriver/test/events_test.js +0 -203
- package/lib/webdriver/test/http/corsclient_test.js +0 -151
- package/lib/webdriver/test/http/http_test.js +0 -428
- package/lib/webdriver/test/http/xhrclient_test.js +0 -196
- package/lib/webdriver/test/locators_test.js +0 -59
- package/lib/webdriver/test/logging_test.js +0 -85
- package/lib/webdriver/test/promise_error_test.js +0 -892
- package/lib/webdriver/test/promise_flow_test.js +0 -2365
- package/lib/webdriver/test/promise_generator_test.js +0 -323
- package/lib/webdriver/test/promise_test.js +0 -2012
- package/lib/webdriver/test/stacktrace_test.js +0 -480
- package/lib/webdriver/test/test_bootstrap.js +0 -67
- package/lib/webdriver/test/testing/asserts_test.js +0 -117
- package/lib/webdriver/test/testing/client_test.js +0 -88
- package/lib/webdriver/test/testing/testcase_test.js +0 -229
- package/lib/webdriver/test/testutil.js +0 -209
- package/lib/webdriver/test/testutil_test.js +0 -104
- package/lib/webdriver/test/until_test.js +0 -411
- package/lib/webdriver/test/webdriver_generator_test.js +0 -92
- package/lib/webdriver/test/webdriver_test.js +0 -2369
- package/lib/webdriver/testing/asserts.js +0 -487
- package/lib/webdriver/testing/client.js +0 -179
- package/lib/webdriver/testing/jsunit.js +0 -363
- package/lib/webdriver/testing/testcase.js +0 -168
- package/lib/webdriver/testing/window.js +0 -244
- package/lib/webdriver/touchsequence.js +0 -248
- package/lib/webdriver/until.js +0 -412
- package/lib/webdriver/webdriver.js +0 -2511
- package/test/_base_test.js +0 -129
package/opera.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* Opera web browser (v26+). Before using this module, you must download the
|
|
21
21
|
* latest OperaDriver
|
|
22
22
|
* [release](https://github.com/operasoftware/operachromiumdriver/releases) and
|
|
23
|
-
* ensure it can be found on your system
|
|
23
|
+
* ensure it can be found on your system
|
|
24
24
|
* [PATH](http://en.wikipedia.org/wiki/PATH_%28variable%29).
|
|
25
25
|
*
|
|
26
26
|
* There are three primary classes exported by this module:
|
|
@@ -72,12 +72,14 @@
|
|
|
72
72
|
|
|
73
73
|
'use strict';
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
util = require('util');
|
|
75
|
+
const fs = require('fs');
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
executors = require('./executors'),
|
|
77
|
+
const executors = require('./executors'),
|
|
80
78
|
io = require('./io'),
|
|
79
|
+
capabilities = require('./lib/capabilities'),
|
|
80
|
+
promise = require('./lib/promise'),
|
|
81
|
+
Symbols = require('./lib/symbols'),
|
|
82
|
+
webdriver = require('./lib/webdriver'),
|
|
81
83
|
portprober = require('./net/portprober'),
|
|
82
84
|
remote = require('./remote');
|
|
83
85
|
|
|
@@ -87,7 +89,7 @@ var webdriver = require('./index'),
|
|
|
87
89
|
* @type {string}
|
|
88
90
|
* @const
|
|
89
91
|
*/
|
|
90
|
-
|
|
92
|
+
const OPERADRIVER_EXE =
|
|
91
93
|
process.platform === 'win32' ? 'operadriver.exe' : 'operadriver';
|
|
92
94
|
|
|
93
95
|
|
|
@@ -95,140 +97,135 @@ var OPERADRIVER_EXE =
|
|
|
95
97
|
* Creates {@link remote.DriverService} instances that manages an
|
|
96
98
|
* [OperaDriver](https://github.com/operasoftware/operachromiumdriver)
|
|
97
99
|
* server in a child process.
|
|
98
|
-
*
|
|
99
|
-
* @param {string=} opt_exe Path to the server executable to use. If omitted,
|
|
100
|
-
* the builder will attempt to locate the operadriver on the current
|
|
101
|
-
* PATH.
|
|
102
|
-
* @throws {Error} If provided executable does not exist, or the operadriver
|
|
103
|
-
* cannot be found on the PATH.
|
|
104
|
-
* @constructor
|
|
105
100
|
*/
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
this.stdio_ = 'ignore';
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
/** @private {number} */
|
|
128
|
-
ServiceBuilder.prototype.port_ = 0;
|
|
129
|
-
|
|
101
|
+
class ServiceBuilder {
|
|
102
|
+
/**
|
|
103
|
+
* @param {string=} opt_exe Path to the server executable to use. If omitted,
|
|
104
|
+
* the builder will attempt to locate the operadriver on the current
|
|
105
|
+
* PATH.
|
|
106
|
+
* @throws {Error} If provided executable does not exist, or the operadriver
|
|
107
|
+
* cannot be found on the PATH.
|
|
108
|
+
*/
|
|
109
|
+
constructor(opt_exe) {
|
|
110
|
+
let exe = opt_exe || io.findInPath(OPERADRIVER_EXE, true);
|
|
111
|
+
if (!exe) {
|
|
112
|
+
throw Error(
|
|
113
|
+
'The OperaDriver could not be found on the current PATH. Please ' +
|
|
114
|
+
'download the latest version of the OperaDriver from ' +
|
|
115
|
+
'https://github.com/operasoftware/operachromiumdriver/releases and ' +
|
|
116
|
+
'ensure it can be found on your PATH.');
|
|
117
|
+
}
|
|
130
118
|
|
|
131
|
-
/** @private {
|
|
132
|
-
|
|
119
|
+
/** @private {string} */
|
|
120
|
+
this.exe_ = /** @type {string} */(exe);
|
|
121
|
+
if (!fs.existsSync(this.exe_)) {
|
|
122
|
+
throw Error('File does not exist: ' + this.exe_);
|
|
123
|
+
}
|
|
133
124
|
|
|
125
|
+
/** @private {!Array.<string>} */
|
|
126
|
+
this.args_ = [];
|
|
134
127
|
|
|
135
|
-
/** @private {
|
|
136
|
-
|
|
128
|
+
/** @private {number} */
|
|
129
|
+
this.port_ = 0;
|
|
137
130
|
|
|
131
|
+
/**
|
|
132
|
+
* @private {(string|!Array<string|number|!stream.Stream|null|undefined>)}
|
|
133
|
+
*/
|
|
134
|
+
this.stdio_ = 'ignore';
|
|
138
135
|
|
|
139
|
-
/**
|
|
140
|
-
|
|
141
|
-
* @param {number} port The port to use, or 0 for any free port.
|
|
142
|
-
* @return {!ServiceBuilder} A self reference.
|
|
143
|
-
* @throws {Error} If the port is invalid.
|
|
144
|
-
*/
|
|
145
|
-
ServiceBuilder.prototype.usingPort = function(port) {
|
|
146
|
-
if (port < 0) {
|
|
147
|
-
throw Error('port must be >= 0: ' + port);
|
|
136
|
+
/** @private {Object.<string, string>} */
|
|
137
|
+
this.env_ = null;
|
|
148
138
|
}
|
|
149
|
-
this.port_ = port;
|
|
150
|
-
return this;
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Sets the path of the log file the driver should log to. If a log file is
|
|
156
|
-
* not specified, the driver will log to stderr.
|
|
157
|
-
* @param {string} path Path of the log file to use.
|
|
158
|
-
* @return {!ServiceBuilder} A self reference.
|
|
159
|
-
*/
|
|
160
|
-
ServiceBuilder.prototype.loggingTo = function(path) {
|
|
161
|
-
this.args_.push('--log-path=' + path);
|
|
162
|
-
return this;
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Enables verbose logging.
|
|
168
|
-
* @return {!ServiceBuilder} A self reference.
|
|
169
|
-
*/
|
|
170
|
-
ServiceBuilder.prototype.enableVerboseLogging = function() {
|
|
171
|
-
this.args_.push('--verbose');
|
|
172
|
-
return this;
|
|
173
|
-
};
|
|
174
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Sets the port to start the OperaDriver on.
|
|
142
|
+
* @param {number} port The port to use, or 0 for any free port.
|
|
143
|
+
* @return {!ServiceBuilder} A self reference.
|
|
144
|
+
* @throws {Error} If the port is invalid.
|
|
145
|
+
*/
|
|
146
|
+
usingPort(port) {
|
|
147
|
+
if (port < 0) {
|
|
148
|
+
throw Error('port must be >= 0: ' + port);
|
|
149
|
+
}
|
|
150
|
+
this.port_ = port;
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
175
153
|
|
|
176
|
-
/**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
ServiceBuilder
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Sets the path of the log file the driver should log to. If a log file is
|
|
156
|
+
* not specified, the driver will log to stderr.
|
|
157
|
+
* @param {string} path Path of the log file to use.
|
|
158
|
+
* @return {!ServiceBuilder} A self reference.
|
|
159
|
+
*/
|
|
160
|
+
loggingTo(path) {
|
|
161
|
+
this.args_.push('--log-path=' + path);
|
|
162
|
+
return this;
|
|
163
|
+
}
|
|
184
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Enables verbose logging.
|
|
167
|
+
* @return {!ServiceBuilder} A self reference.
|
|
168
|
+
*/
|
|
169
|
+
enableVerboseLogging() {
|
|
170
|
+
this.args_.push('--verbose');
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
185
173
|
|
|
186
|
-
/**
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
this.stdio_ = config;
|
|
195
|
-
return this;
|
|
196
|
-
};
|
|
174
|
+
/**
|
|
175
|
+
* Silence sthe drivers output.
|
|
176
|
+
* @return {!ServiceBuilder} A self reference.
|
|
177
|
+
*/
|
|
178
|
+
silent() {
|
|
179
|
+
this.args_.push('--silent');
|
|
180
|
+
return this;
|
|
181
|
+
}
|
|
197
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Defines the stdio configuration for the driver service. See
|
|
185
|
+
* {@code child_process.spawn} for more information.
|
|
186
|
+
* @param {(string|!Array<string|number|!stream.Stream|null|undefined>)}
|
|
187
|
+
* config The configuration to use.
|
|
188
|
+
* @return {!ServiceBuilder} A self reference.
|
|
189
|
+
*/
|
|
190
|
+
setStdio(config) {
|
|
191
|
+
this.stdio_ = config;
|
|
192
|
+
return this;
|
|
193
|
+
}
|
|
198
194
|
|
|
199
|
-
/**
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
195
|
+
/**
|
|
196
|
+
* Defines the environment to start the server under. This settings will be
|
|
197
|
+
* inherited by every browser session started by the server.
|
|
198
|
+
* @param {!Object.<string, string>} env The environment to use.
|
|
199
|
+
* @return {!ServiceBuilder} A self reference.
|
|
200
|
+
*/
|
|
201
|
+
withEnvironment(env) {
|
|
202
|
+
this.env_ = env;
|
|
203
|
+
return this;
|
|
204
|
+
}
|
|
209
205
|
|
|
206
|
+
/**
|
|
207
|
+
* Creates a new DriverService using this instance's current configuration.
|
|
208
|
+
* @return {!remote.DriverService} A new driver service using this instance's
|
|
209
|
+
* current configuration.
|
|
210
|
+
* @throws {Error} If the driver exectuable was not specified and a default
|
|
211
|
+
* could not be found on the current PATH.
|
|
212
|
+
*/
|
|
213
|
+
build() {
|
|
214
|
+
var port = this.port_ || portprober.findFreePort();
|
|
215
|
+
var args = this.args_.concat(); // Defensive copy.
|
|
216
|
+
|
|
217
|
+
return new remote.DriverService(this.exe_, {
|
|
218
|
+
loopback: true,
|
|
219
|
+
port: port,
|
|
220
|
+
args: promise.when(port, function(port) {
|
|
221
|
+
return args.concat('--port=' + port);
|
|
222
|
+
}),
|
|
223
|
+
env: this.env_,
|
|
224
|
+
stdio: this.stdio_
|
|
225
|
+
});
|
|
226
|
+
};
|
|
227
|
+
}
|
|
210
228
|
|
|
211
|
-
/**
|
|
212
|
-
* Creates a new DriverService using this instance's current configuration.
|
|
213
|
-
* @return {remote.DriverService} A new driver service using this instance's
|
|
214
|
-
* current configuration.
|
|
215
|
-
* @throws {Error} If the driver exectuable was not specified and a default
|
|
216
|
-
* could not be found on the current PATH.
|
|
217
|
-
*/
|
|
218
|
-
ServiceBuilder.prototype.build = function() {
|
|
219
|
-
var port = this.port_ || portprober.findFreePort();
|
|
220
|
-
var args = this.args_.concat(); // Defensive copy.
|
|
221
|
-
|
|
222
|
-
return new remote.DriverService(this.exe_, {
|
|
223
|
-
loopback: true,
|
|
224
|
-
port: port,
|
|
225
|
-
args: webdriver.promise.when(port, function(port) {
|
|
226
|
-
return args.concat('--port=' + port);
|
|
227
|
-
}),
|
|
228
|
-
env: this.env_,
|
|
229
|
-
stdio: this.stdio_
|
|
230
|
-
});
|
|
231
|
-
};
|
|
232
229
|
|
|
233
230
|
|
|
234
231
|
/** @type {remote.DriverService} */
|
|
@@ -272,221 +269,205 @@ var OPTIONS_CAPABILITY_KEY = 'chromeOptions';
|
|
|
272
269
|
|
|
273
270
|
|
|
274
271
|
/**
|
|
275
|
-
* Class for managing {@
|
|
276
|
-
* @constructor
|
|
277
|
-
* @extends {webdriver.Serializable}
|
|
272
|
+
* Class for managing {@linkplain Driver OperaDriver} specific options.
|
|
278
273
|
*/
|
|
279
|
-
|
|
280
|
-
|
|
274
|
+
class Options {
|
|
275
|
+
constructor() {
|
|
276
|
+
/** @private {!Array.<string>} */
|
|
277
|
+
this.args_ = [];
|
|
281
278
|
|
|
282
|
-
|
|
283
|
-
|
|
279
|
+
/** @private {?string} */
|
|
280
|
+
this.binary_ = null;
|
|
284
281
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
};
|
|
288
|
-
util.inherits(Options, webdriver.Serializable);
|
|
282
|
+
/** @private {!Array.<(string|!Buffer)>} */
|
|
283
|
+
this.extensions_ = [];
|
|
289
284
|
|
|
285
|
+
/** @private {./lib/logging.Preferences} */
|
|
286
|
+
this.logPrefs_ = null;
|
|
290
287
|
|
|
291
|
-
/**
|
|
292
|
-
|
|
293
|
-
* object.
|
|
294
|
-
* @param {!webdriver.Capabilities} capabilities The capabilities object.
|
|
295
|
-
* @return {!Options} The OperaDriver options.
|
|
296
|
-
*/
|
|
297
|
-
Options.fromCapabilities = function(capabilities) {
|
|
298
|
-
var options;
|
|
299
|
-
var o = capabilities.get(OPTIONS_CAPABILITY_KEY);
|
|
300
|
-
if (o instanceof Options) {
|
|
301
|
-
options = o;
|
|
302
|
-
} else if (o) {
|
|
303
|
-
options.
|
|
304
|
-
addArguments(o.args || []).
|
|
305
|
-
addExtensions(o.extensions || []).
|
|
306
|
-
setOperaBinaryPath(o.binary);
|
|
307
|
-
} else {
|
|
308
|
-
options = new Options;
|
|
288
|
+
/** @private {?capabilities.ProxyConfig} */
|
|
289
|
+
this.proxy_ = null;
|
|
309
290
|
}
|
|
310
291
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
* @return {!Options} A self reference.
|
|
331
|
-
*/
|
|
332
|
-
Options.prototype.addArguments = function(var_args) {
|
|
333
|
-
this.args_ = this.args_.concat.apply(this.args_, arguments);
|
|
334
|
-
return this;
|
|
335
|
-
};
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
/**
|
|
339
|
-
* Add additional extensions to install when launching Opera. Each extension
|
|
340
|
-
* should be specified as the path to the packed CRX file, or a Buffer for an
|
|
341
|
-
* extension.
|
|
342
|
-
* @param {...(string|!Buffer|!Array.<(string|!Buffer)>)} var_args The
|
|
343
|
-
* extensions to add.
|
|
344
|
-
* @return {!Options} A self reference.
|
|
345
|
-
*/
|
|
346
|
-
Options.prototype.addExtensions = function(var_args) {
|
|
347
|
-
this.extensions_ = this.extensions_.concat.apply(
|
|
348
|
-
this.extensions_, arguments);
|
|
349
|
-
return this;
|
|
350
|
-
};
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
/**
|
|
354
|
-
* Sets the path to the Opera binary to use. On Mac OS X, this path should
|
|
355
|
-
* reference the actual Opera executable, not just the application binary. The
|
|
356
|
-
* binary path be absolute or relative to the operadriver server executable, but
|
|
357
|
-
* it must exist on the machine that will launch Opera.
|
|
358
|
-
*
|
|
359
|
-
* @param {string} path The path to the Opera binary to use.
|
|
360
|
-
* @return {!Options} A self reference.
|
|
361
|
-
*/
|
|
362
|
-
Options.prototype.setOperaBinaryPath = function(path) {
|
|
363
|
-
this.binary_ = path;
|
|
364
|
-
return this;
|
|
365
|
-
};
|
|
366
|
-
|
|
292
|
+
/**
|
|
293
|
+
* Extracts the OperaDriver specific options from the given capabilities
|
|
294
|
+
* object.
|
|
295
|
+
* @param {!capabilities.Capabilities} caps The capabilities object.
|
|
296
|
+
* @return {!Options} The OperaDriver options.
|
|
297
|
+
*/
|
|
298
|
+
static fromCapabilities(caps) {
|
|
299
|
+
var options;
|
|
300
|
+
var o = caps.get(OPTIONS_CAPABILITY_KEY);
|
|
301
|
+
if (o instanceof Options) {
|
|
302
|
+
options = o;
|
|
303
|
+
} else if (o) {
|
|
304
|
+
options = new Options()
|
|
305
|
+
.addArguments(o.args || [])
|
|
306
|
+
.addExtensions(o.extensions || [])
|
|
307
|
+
.setOperaBinaryPath(o.binary);
|
|
308
|
+
} else {
|
|
309
|
+
options = new Options;
|
|
310
|
+
}
|
|
367
311
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
* @return {!Options} A self reference.
|
|
372
|
-
*/
|
|
373
|
-
Options.prototype.setLoggingPrefs = function(prefs) {
|
|
374
|
-
this.logPrefs_ = prefs;
|
|
375
|
-
return this;
|
|
376
|
-
};
|
|
312
|
+
if (caps.has(capabilities.Capability.PROXY)) {
|
|
313
|
+
options.setProxy(caps.get(capabilities.Capability.PROXY));
|
|
314
|
+
}
|
|
377
315
|
|
|
316
|
+
if (caps.has(capabilities.Capability.LOGGING_PREFS)) {
|
|
317
|
+
options.setLoggingPrefs(
|
|
318
|
+
caps.get(capabilities.Capability.LOGGING_PREFS));
|
|
319
|
+
}
|
|
378
320
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
* @param {webdriver.ProxyConfig} proxy The proxy configuration to use.
|
|
382
|
-
* @return {!Options} A self reference.
|
|
383
|
-
*/
|
|
384
|
-
Options.prototype.setProxy = function(proxy) {
|
|
385
|
-
this.proxy_ = proxy;
|
|
386
|
-
return this;
|
|
387
|
-
};
|
|
321
|
+
return options;
|
|
322
|
+
}
|
|
388
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Add additional command line arguments to use when launching the Opera
|
|
326
|
+
* browser. Each argument may be specified with or without the "--" prefix
|
|
327
|
+
* (e.g. "--foo" and "foo"). Arguments with an associated value should be
|
|
328
|
+
* delimited by an "=": "foo=bar".
|
|
329
|
+
* @param {...(string|!Array.<string>)} var_args The arguments to add.
|
|
330
|
+
* @return {!Options} A self reference.
|
|
331
|
+
*/
|
|
332
|
+
addArguments(var_args) {
|
|
333
|
+
this.args_ = this.args_.concat.apply(this.args_, arguments);
|
|
334
|
+
return this;
|
|
335
|
+
}
|
|
389
336
|
|
|
390
|
-
/**
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
Options
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
};
|
|
337
|
+
/**
|
|
338
|
+
* Add additional extensions to install when launching Opera. Each extension
|
|
339
|
+
* should be specified as the path to the packed CRX file, or a Buffer for an
|
|
340
|
+
* extension.
|
|
341
|
+
* @param {...(string|!Buffer|!Array.<(string|!Buffer)>)} var_args The
|
|
342
|
+
* extensions to add.
|
|
343
|
+
* @return {!Options} A self reference.
|
|
344
|
+
*/
|
|
345
|
+
addExtensions(var_args) {
|
|
346
|
+
this.extensions_ = this.extensions_.concat.apply(
|
|
347
|
+
this.extensions_, arguments);
|
|
348
|
+
return this;
|
|
349
|
+
}
|
|
404
350
|
|
|
351
|
+
/**
|
|
352
|
+
* Sets the path to the Opera binary to use. On Mac OS X, this path should
|
|
353
|
+
* reference the actual Opera executable, not just the application binary. The
|
|
354
|
+
* binary path be absolute or relative to the operadriver server executable, but
|
|
355
|
+
* it must exist on the machine that will launch Opera.
|
|
356
|
+
*
|
|
357
|
+
* @param {string} path The path to the Opera binary to use.
|
|
358
|
+
* @return {!Options} A self reference.
|
|
359
|
+
*/
|
|
360
|
+
setOperaBinaryPath(path) {
|
|
361
|
+
this.binary_ = path;
|
|
362
|
+
return this;
|
|
363
|
+
}
|
|
405
364
|
|
|
406
|
-
/**
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
* logPath: (string|undefined),
|
|
415
|
-
* prefs: (Object|undefined)}} The JSON wire protocol representation
|
|
416
|
-
* of this instance.
|
|
417
|
-
* @override
|
|
418
|
-
*/
|
|
419
|
-
Options.prototype.serialize = function() {
|
|
420
|
-
var json = {
|
|
421
|
-
args: this.args_,
|
|
422
|
-
extensions: this.extensions_.map(function(extension) {
|
|
423
|
-
if (Buffer.isBuffer(extension)) {
|
|
424
|
-
return extension.toString('base64');
|
|
425
|
-
}
|
|
426
|
-
return webdriver.promise.checkedNodeCall(
|
|
427
|
-
fs.readFile, extension, 'base64');
|
|
428
|
-
})
|
|
429
|
-
};
|
|
430
|
-
if (this.binary_) {
|
|
431
|
-
json.binary = this.binary_;
|
|
365
|
+
/**
|
|
366
|
+
* Sets the logging preferences for the new session.
|
|
367
|
+
* @param {!./lib/logging.Preferences} prefs The logging preferences.
|
|
368
|
+
* @return {!Options} A self reference.
|
|
369
|
+
*/
|
|
370
|
+
setLoggingPrefs(prefs) {
|
|
371
|
+
this.logPrefs_ = prefs;
|
|
372
|
+
return this;
|
|
432
373
|
}
|
|
433
|
-
|
|
434
|
-
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Sets the proxy settings for the new session.
|
|
377
|
+
* @param {capabilities.ProxyConfig} proxy The proxy configuration to use.
|
|
378
|
+
* @return {!Options} A self reference.
|
|
379
|
+
*/
|
|
380
|
+
setProxy(proxy) {
|
|
381
|
+
this.proxy_ = proxy;
|
|
382
|
+
return this;
|
|
435
383
|
}
|
|
436
|
-
|
|
437
|
-
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Converts this options instance to a {@link capabilities.Capabilities}
|
|
387
|
+
* object.
|
|
388
|
+
* @param {capabilities.Capabilities=} opt_capabilities The capabilities to
|
|
389
|
+
* merge these options into, if any.
|
|
390
|
+
* @return {!capabilities.Capabilities} The capabilities.
|
|
391
|
+
*/
|
|
392
|
+
toCapabilities(opt_capabilities) {
|
|
393
|
+
var caps = opt_capabilities || capabilities.Capabilities.opera();
|
|
394
|
+
caps.
|
|
395
|
+
set(capabilities.Capability.PROXY, this.proxy_).
|
|
396
|
+
set(capabilities.Capability.LOGGING_PREFS, this.logPrefs_).
|
|
397
|
+
set(OPTIONS_CAPABILITY_KEY, this);
|
|
398
|
+
return caps;
|
|
438
399
|
}
|
|
439
400
|
|
|
440
|
-
|
|
441
|
-
|
|
401
|
+
/**
|
|
402
|
+
* Converts this instance to its JSON wire protocol representation. Note this
|
|
403
|
+
* function is an implementation not intended for general use.
|
|
404
|
+
* @return {!Object} The JSON wire protocol representation of this instance.
|
|
405
|
+
*/
|
|
406
|
+
[Symbols.serialize]() {
|
|
407
|
+
var json = {
|
|
408
|
+
args: this.args_,
|
|
409
|
+
extensions: this.extensions_.map(function(extension) {
|
|
410
|
+
if (Buffer.isBuffer(extension)) {
|
|
411
|
+
return extension.toString('base64');
|
|
412
|
+
}
|
|
413
|
+
return promise.checkedNodeCall(
|
|
414
|
+
fs.readFile, extension, 'base64');
|
|
415
|
+
})
|
|
416
|
+
};
|
|
417
|
+
if (this.binary_) {
|
|
418
|
+
json.binary = this.binary_;
|
|
419
|
+
}
|
|
420
|
+
return json;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
442
423
|
|
|
443
424
|
|
|
444
425
|
/**
|
|
445
426
|
* Creates a new WebDriver client for Opera.
|
|
446
|
-
*
|
|
447
|
-
* @param {(webdriver.Capabilities|Options)=} opt_config The configuration
|
|
448
|
-
* options.
|
|
449
|
-
* @param {remote.DriverService=} opt_service The session to use; will use
|
|
450
|
-
* the {@link getDefaultService default service} by default.
|
|
451
|
-
* @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or
|
|
452
|
-
* {@code null} to use the currently active flow.
|
|
453
|
-
* @constructor
|
|
454
|
-
* @extends {webdriver.WebDriver}
|
|
455
427
|
*/
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
var
|
|
468
|
-
|
|
469
|
-
|
|
428
|
+
class Driver extends webdriver.WebDriver {
|
|
429
|
+
/**
|
|
430
|
+
* @param {(capabilities.Capabilities|Options)=} opt_config The configuration
|
|
431
|
+
* options.
|
|
432
|
+
* @param {remote.DriverService=} opt_service The session to use; will use
|
|
433
|
+
* the {@link getDefaultService default service} by default.
|
|
434
|
+
* @param {promise.ControlFlow=} opt_flow The control flow to use,
|
|
435
|
+
* or {@code null} to use the currently active flow.
|
|
436
|
+
*/
|
|
437
|
+
constructor(opt_config, opt_service, opt_flow) {
|
|
438
|
+
var service = opt_service || getDefaultService();
|
|
439
|
+
var executor = executors.createExecutor(service.start());
|
|
440
|
+
|
|
441
|
+
var caps =
|
|
442
|
+
opt_config instanceof Options ? opt_config.toCapabilities() :
|
|
443
|
+
(opt_config || capabilities.Capabilities.opera());
|
|
444
|
+
|
|
445
|
+
// On Linux, the OperaDriver does not look for Opera on the PATH, so we
|
|
446
|
+
// must explicitly find it. See: operachromiumdriver #9.
|
|
447
|
+
if (process.platform === 'linux') {
|
|
448
|
+
var options = Options.fromCapabilities(caps);
|
|
449
|
+
if (!options.binary_) {
|
|
450
|
+
let exe = io.findInPath('opera', true);
|
|
451
|
+
if (!exe) {
|
|
452
|
+
throw Error(
|
|
453
|
+
'The opera executable could not be found on the current PATH');
|
|
454
|
+
}
|
|
455
|
+
options.setOperaBinaryPath(exe);
|
|
456
|
+
}
|
|
457
|
+
caps = options.toCapabilities(caps);
|
|
470
458
|
}
|
|
471
|
-
capabilities = options.toCapabilities(capabilities);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
var driver = webdriver.WebDriver.createSession(
|
|
475
|
-
executor, capabilities, opt_flow);
|
|
476
|
-
|
|
477
|
-
webdriver.WebDriver.call(
|
|
478
|
-
this, driver.getSession(), executor, driver.controlFlow());
|
|
479
|
-
};
|
|
480
|
-
util.inherits(Driver, webdriver.WebDriver);
|
|
481
459
|
|
|
460
|
+
var driver = webdriver.WebDriver.createSession(executor, caps, opt_flow);
|
|
461
|
+
super(driver.getSession(), executor, driver.controlFlow());
|
|
462
|
+
}
|
|
482
463
|
|
|
483
|
-
/**
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
}
|
|
464
|
+
/**
|
|
465
|
+
* This function is a no-op as file detectors are not supported by this
|
|
466
|
+
* implementation.
|
|
467
|
+
* @override
|
|
468
|
+
*/
|
|
469
|
+
setFileDetector() {}
|
|
470
|
+
}
|
|
490
471
|
|
|
491
472
|
|
|
492
473
|
// PUBLIC API
|