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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "selenium-webdriver",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.53.3",
|
|
4
4
|
"description": "The official WebDriver JavaScript bindings from the Selenium project",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
"url": "https://github.com/SeleniumHQ/selenium.git"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": ">=
|
|
23
|
+
"node": ">= 4.2.x"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"adm-zip": "0.4.4",
|
|
27
27
|
"rimraf": "^2.2.8",
|
|
28
28
|
"tmp": "0.0.24",
|
|
29
|
-
"ws": "^0.
|
|
29
|
+
"ws": "^1.0.1",
|
|
30
30
|
"xml2js": "0.4.4"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
@@ -34,9 +34,10 @@
|
|
|
34
34
|
"mocha": ">= 1.21.x",
|
|
35
35
|
"multer": "^0.1.7",
|
|
36
36
|
"promises-aplus-tests": "^2.1.0",
|
|
37
|
-
"serve-index": "^1.6.1"
|
|
37
|
+
"serve-index": "^1.6.1",
|
|
38
|
+
"sinon": "^1.17.2"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
|
-
"test": "
|
|
41
|
+
"test": "mocha --harmony -t 600000 --recursive test"
|
|
41
42
|
}
|
|
42
43
|
}
|
package/phantomjs.js
CHANGED
|
@@ -17,13 +17,16 @@
|
|
|
17
17
|
|
|
18
18
|
'use strict';
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
util = require('util');
|
|
20
|
+
const fs = require('fs');
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
executors = require('./executors'),
|
|
22
|
+
const executors = require('./executors'),
|
|
25
23
|
http = require('./http'),
|
|
26
24
|
io = require('./io'),
|
|
25
|
+
capabilities = require('./lib/capabilities'),
|
|
26
|
+
command = require('./lib/command'),
|
|
27
|
+
logging = require('./lib/logging'),
|
|
28
|
+
promise = require('./lib/promise'),
|
|
29
|
+
webdriver = require('./lib/webdriver'),
|
|
27
30
|
portprober = require('./net/portprober'),
|
|
28
31
|
remote = require('./remote');
|
|
29
32
|
|
|
@@ -33,7 +36,7 @@ var webdriver = require('./index'),
|
|
|
33
36
|
* @type {string}
|
|
34
37
|
* @const
|
|
35
38
|
*/
|
|
36
|
-
|
|
39
|
+
const PHANTOMJS_EXE =
|
|
37
40
|
process.platform === 'win32' ? 'phantomjs.exe' : 'phantomjs';
|
|
38
41
|
|
|
39
42
|
|
|
@@ -42,7 +45,7 @@ var PHANTOMJS_EXE =
|
|
|
42
45
|
* @type {string}
|
|
43
46
|
* @const
|
|
44
47
|
*/
|
|
45
|
-
|
|
48
|
+
const BINARY_PATH_CAPABILITY = 'phantomjs.binary.path';
|
|
46
49
|
|
|
47
50
|
|
|
48
51
|
/**
|
|
@@ -50,22 +53,14 @@ var BINARY_PATH_CAPABILITY = 'phantomjs.binary.path';
|
|
|
50
53
|
* @type {string}
|
|
51
54
|
* @const
|
|
52
55
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Default log file to use if one is not specified through CLI args.
|
|
58
|
-
* @type {string}
|
|
59
|
-
* @const
|
|
60
|
-
*/
|
|
61
|
-
var DEFAULT_LOG_FILE = 'phantomjsdriver.log';
|
|
56
|
+
const CLI_ARGS_CAPABILITY = 'phantomjs.cli.args';
|
|
62
57
|
|
|
63
58
|
|
|
64
59
|
/**
|
|
65
60
|
* Custom command names supported by PhantomJS.
|
|
66
61
|
* @enum {string}
|
|
67
62
|
*/
|
|
68
|
-
|
|
63
|
+
const Command = {
|
|
69
64
|
EXECUTE_PHANTOM_SCRIPT: 'executePhantomScript'
|
|
70
65
|
};
|
|
71
66
|
|
|
@@ -96,24 +91,20 @@ function findExecutable(opt_exe) {
|
|
|
96
91
|
|
|
97
92
|
/**
|
|
98
93
|
* Maps WebDriver logging level name to those recognised by PhantomJS.
|
|
99
|
-
* @
|
|
100
|
-
* @const
|
|
94
|
+
* @const {!Map<string, string>}
|
|
101
95
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
map[webdriver.logging.Level.SEVERE.name] = 'ERROR';
|
|
109
|
-
return map;
|
|
110
|
-
})();
|
|
96
|
+
const WEBDRIVER_TO_PHANTOMJS_LEVEL = new Map([
|
|
97
|
+
[logging.Level.ALL.name, 'DEBUG'],
|
|
98
|
+
[logging.Level.DEBUG.name, 'DEBUG'],
|
|
99
|
+
[logging.Level.INFO.name, 'INFO'],
|
|
100
|
+
[logging.Level.WARNING.name, 'WARN'],
|
|
101
|
+
[logging.Level.SEVERE.name, 'ERROR']]);
|
|
111
102
|
|
|
112
103
|
|
|
113
104
|
/**
|
|
114
105
|
* Creates a command executor with support for PhantomJS' custom commands.
|
|
115
|
-
* @param {!
|
|
116
|
-
* @return {!
|
|
106
|
+
* @param {!promise.Promise<string>} url The server's URL.
|
|
107
|
+
* @return {!command.Executor} The new command executor.
|
|
117
108
|
*/
|
|
118
109
|
function createExecutor(url) {
|
|
119
110
|
return new executors.DeferredExecutor(url.then(function(url) {
|
|
@@ -130,134 +121,140 @@ function createExecutor(url) {
|
|
|
130
121
|
|
|
131
122
|
/**
|
|
132
123
|
* Creates a new WebDriver client for PhantomJS.
|
|
133
|
-
*
|
|
134
|
-
* @param {webdriver.Capabilities=} opt_capabilities The desired capabilities.
|
|
135
|
-
* @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or
|
|
136
|
-
* {@code null} to use the currently active flow.
|
|
137
|
-
* @constructor
|
|
138
|
-
* @extends {webdriver.WebDriver}
|
|
139
124
|
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
125
|
+
class Driver extends webdriver.WebDriver {
|
|
126
|
+
/**
|
|
127
|
+
* @param {capabilities.Capabilities=} opt_capabilities The desired
|
|
128
|
+
* capabilities.
|
|
129
|
+
* @param {promise.ControlFlow=} opt_flow The control flow to use,
|
|
130
|
+
* or {@code null} to use the currently active flow.
|
|
131
|
+
* @param {string=} opt_logFile Path to the log file for the phantomjs
|
|
132
|
+
* executable's output. For convenience, this may be set at runtime with
|
|
133
|
+
* the `SELENIUM_PHANTOMJS_LOG` environment variable.
|
|
134
|
+
*/
|
|
135
|
+
constructor(opt_capabilities, opt_flow, opt_logFile) {
|
|
136
|
+
// TODO: add an Options class for consistency with the other driver types.
|
|
137
|
+
|
|
138
|
+
var caps = opt_capabilities || capabilities.Capabilities.phantomjs();
|
|
139
|
+
var exe = findExecutable(caps.get(BINARY_PATH_CAPABILITY));
|
|
140
|
+
var args = [];
|
|
141
|
+
|
|
142
|
+
var logPrefs = caps.get(capabilities.Capability.LOGGING_PREFS);
|
|
143
|
+
if (logPrefs instanceof logging.Preferences) {
|
|
144
|
+
logPrefs = logPrefs.toJSON();
|
|
145
|
+
}
|
|
149
146
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
147
|
+
if (logPrefs && logPrefs[logging.Type.DRIVER]) {
|
|
148
|
+
let level = WEBDRIVER_TO_PHANTOMJS_LEVEL.get(
|
|
149
|
+
logPrefs[logging.Type.DRIVER]);
|
|
150
|
+
if (level) {
|
|
151
|
+
args.push('--webdriver-loglevel=' + level);
|
|
152
|
+
}
|
|
155
153
|
}
|
|
156
|
-
}
|
|
157
154
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
case 'manual':
|
|
162
|
-
if (proxy.httpProxy) {
|
|
163
|
-
args.push(
|
|
164
|
-
'--proxy-type=http',
|
|
165
|
-
'--proxy=http://' + proxy.httpProxy);
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
case 'pac':
|
|
169
|
-
throw Error('PhantomJS does not support Proxy PAC files');
|
|
170
|
-
case 'system':
|
|
171
|
-
args.push('--proxy-type=system');
|
|
172
|
-
break;
|
|
173
|
-
case 'direct':
|
|
174
|
-
args.push('--proxy-type=none');
|
|
175
|
-
break;
|
|
155
|
+
opt_logFile = process.env['SELENIUM_PHANTOMJS_LOG'] || opt_logFile;
|
|
156
|
+
if (typeof opt_logFile === 'string') {
|
|
157
|
+
args.push('--webdriver-logfile=' + opt_logFile);
|
|
176
158
|
}
|
|
177
|
-
}
|
|
178
|
-
args = args.concat(capabilities.get(CLI_ARGS_CAPABILITY) || []);
|
|
179
|
-
|
|
180
|
-
var port = portprober.findFreePort();
|
|
181
|
-
var service = new remote.DriverService(exe, {
|
|
182
|
-
port: port,
|
|
183
|
-
args: webdriver.promise.when(port, function(port) {
|
|
184
|
-
args.push('--webdriver=' + port);
|
|
185
|
-
return args;
|
|
186
|
-
})
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
var executor = createExecutor(service.start());
|
|
190
|
-
var driver = webdriver.WebDriver.createSession(
|
|
191
|
-
executor, capabilities, opt_flow);
|
|
192
|
-
|
|
193
|
-
webdriver.WebDriver.call(
|
|
194
|
-
this, driver.getSession(), executor, driver.controlFlow());
|
|
195
|
-
|
|
196
|
-
var boundQuit = this.quit.bind(this);
|
|
197
|
-
|
|
198
|
-
/** @override */
|
|
199
|
-
this.quit = function() {
|
|
200
|
-
return boundQuit().thenFinally(service.kill.bind(service));
|
|
201
|
-
};
|
|
202
|
-
};
|
|
203
|
-
util.inherits(Driver, webdriver.WebDriver);
|
|
204
159
|
|
|
160
|
+
var proxy = caps.get(capabilities.Capability.PROXY);
|
|
161
|
+
if (proxy) {
|
|
162
|
+
switch (proxy.proxyType) {
|
|
163
|
+
case 'manual':
|
|
164
|
+
if (proxy.httpProxy) {
|
|
165
|
+
args.push(
|
|
166
|
+
'--proxy-type=http',
|
|
167
|
+
'--proxy=http://' + proxy.httpProxy);
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
case 'pac':
|
|
171
|
+
throw Error('PhantomJS does not support Proxy PAC files');
|
|
172
|
+
case 'system':
|
|
173
|
+
args.push('--proxy-type=system');
|
|
174
|
+
break;
|
|
175
|
+
case 'direct':
|
|
176
|
+
args.push('--proxy-type=none');
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
args = args.concat(caps.get(CLI_ARGS_CAPABILITY) || []);
|
|
205
181
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
182
|
+
var port = portprober.findFreePort();
|
|
183
|
+
var service = new remote.DriverService(exe, {
|
|
184
|
+
port: port,
|
|
185
|
+
args: promise.when(port, function(port) {
|
|
186
|
+
args.push('--webdriver=' + port);
|
|
187
|
+
return args;
|
|
188
|
+
})
|
|
189
|
+
});
|
|
213
190
|
|
|
191
|
+
var executor = createExecutor(service.start());
|
|
192
|
+
var driver = webdriver.WebDriver.createSession(executor, caps, opt_flow);
|
|
214
193
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
* method, one will be created.</p>
|
|
224
|
-
*
|
|
225
|
-
* <p>Be sure to wrap callback definitions in a try/catch block, as failures
|
|
226
|
-
* may cause future WebDriver calls to fail.</p>
|
|
227
|
-
*
|
|
228
|
-
* <p>Certain callbacks are used by GhostDriver (the PhantomJS WebDriver
|
|
229
|
-
* implementation) and overriding these may cause the script to fail. It is
|
|
230
|
-
* recommended that you check for existing callbacks before defining your own.
|
|
231
|
-
* </p>
|
|
232
|
-
*
|
|
233
|
-
* As with {@link #executeScript}, the injected script may be defined as
|
|
234
|
-
* a string for an anonymous function body (e.g. "return 123;"), or as a
|
|
235
|
-
* function. If a function is provided, it will be decompiled to its original
|
|
236
|
-
* source. Note that injecting functions is provided as a convenience to
|
|
237
|
-
* simplify defining complex scripts. Care must be taken that the function
|
|
238
|
-
* only references variables that will be defined in the page's scope and
|
|
239
|
-
* that the function does not override {@code Function.prototype.toString}
|
|
240
|
-
* (overriding toString() will interfere with how the function is
|
|
241
|
-
* decompiled.
|
|
242
|
-
*
|
|
243
|
-
* @param {(string|!Function)} script The script to execute.
|
|
244
|
-
* @param {...*} var_args The arguments to pass to the script.
|
|
245
|
-
* @return {!webdriver.promise.Promise<T>} A promise that resolve to the
|
|
246
|
-
* script's return value.
|
|
247
|
-
* @template T
|
|
248
|
-
*/
|
|
249
|
-
Driver.prototype.executePhantomJS = function(script, args) {
|
|
250
|
-
if (typeof script === 'function') {
|
|
251
|
-
script = 'return (' + script + ').apply(this, arguments);';
|
|
194
|
+
super(driver.getSession(), executor, driver.controlFlow());
|
|
195
|
+
|
|
196
|
+
var boundQuit = this.quit.bind(this);
|
|
197
|
+
|
|
198
|
+
/** @override */
|
|
199
|
+
this.quit = function() {
|
|
200
|
+
return boundQuit().thenFinally(service.kill.bind(service));
|
|
201
|
+
};
|
|
252
202
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* This function is a no-op as file detectors are not supported by this
|
|
206
|
+
* implementation.
|
|
207
|
+
* @override
|
|
208
|
+
*/
|
|
209
|
+
setFileDetector() {}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Executes a PhantomJS fragment. This method is similar to
|
|
213
|
+
* {@link #executeScript}, except it exposes the
|
|
214
|
+
* <a href="http://phantomjs.org/api/">PhantomJS API</a> to the injected
|
|
215
|
+
* script.
|
|
216
|
+
*
|
|
217
|
+
* <p>The injected script will execute in the context of PhantomJS's
|
|
218
|
+
* {@code page} variable. If a page has not been loaded before calling this
|
|
219
|
+
* method, one will be created.</p>
|
|
220
|
+
*
|
|
221
|
+
* <p>Be sure to wrap callback definitions in a try/catch block, as failures
|
|
222
|
+
* may cause future WebDriver calls to fail.</p>
|
|
223
|
+
*
|
|
224
|
+
* <p>Certain callbacks are used by GhostDriver (the PhantomJS WebDriver
|
|
225
|
+
* implementation) and overriding these may cause the script to fail. It is
|
|
226
|
+
* recommended that you check for existing callbacks before defining your own.
|
|
227
|
+
* </p>
|
|
228
|
+
*
|
|
229
|
+
* As with {@link #executeScript}, the injected script may be defined as
|
|
230
|
+
* a string for an anonymous function body (e.g. "return 123;"), or as a
|
|
231
|
+
* function. If a function is provided, it will be decompiled to its original
|
|
232
|
+
* source. Note that injecting functions is provided as a convenience to
|
|
233
|
+
* simplify defining complex scripts. Care must be taken that the function
|
|
234
|
+
* only references variables that will be defined in the page's scope and
|
|
235
|
+
* that the function does not override {@code Function.prototype.toString}
|
|
236
|
+
* (overriding toString() will interfere with how the function is
|
|
237
|
+
* decompiled.
|
|
238
|
+
*
|
|
239
|
+
* @param {(string|!Function)} script The script to execute.
|
|
240
|
+
* @param {...*} var_args The arguments to pass to the script.
|
|
241
|
+
* @return {!promise.Promise<T>} A promise that resolve to the
|
|
242
|
+
* script's return value.
|
|
243
|
+
* @template T
|
|
244
|
+
*/
|
|
245
|
+
executePhantomJS(script, var_args) {
|
|
246
|
+
if (typeof script === 'function') {
|
|
247
|
+
script = 'return (' + script + ').apply(this, arguments);';
|
|
248
|
+
}
|
|
249
|
+
var args = arguments.length > 1
|
|
250
|
+
? Array.prototype.slice.call(arguments, 1) : [];
|
|
251
|
+
return this.schedule(
|
|
252
|
+
new command.Command(Command.EXECUTE_PHANTOM_SCRIPT)
|
|
253
|
+
.setParameter('script', script)
|
|
254
|
+
.setParameter('args', args),
|
|
255
|
+
'Driver.executePhantomJS()');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
261
258
|
|
|
262
259
|
|
|
263
260
|
// PUBLIC API
|
package/proxy.js
CHANGED
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
|
|
32
32
|
var util = require('util');
|
|
33
33
|
|
|
34
|
+
var ProxyConfig = require('./lib/capabilities').ProxyConfig;
|
|
35
|
+
|
|
34
36
|
|
|
35
37
|
|
|
36
38
|
// PUBLIC API
|
|
@@ -38,7 +40,7 @@ var util = require('util');
|
|
|
38
40
|
|
|
39
41
|
/**
|
|
40
42
|
* Configures WebDriver to bypass all browser proxies.
|
|
41
|
-
* @return {!
|
|
43
|
+
* @return {!ProxyConfig} A new proxy configuration object.
|
|
42
44
|
*/
|
|
43
45
|
exports.direct = function() {
|
|
44
46
|
return {proxyType: 'direct'};
|
|
@@ -64,17 +66,19 @@ exports.direct = function() {
|
|
|
64
66
|
* https: (string|undefined),
|
|
65
67
|
* bypass: (string|!Array.<string>|undefined)}} options Proxy
|
|
66
68
|
* configuration options.
|
|
67
|
-
* @return {!
|
|
69
|
+
* @return {!ProxyConfig} A new proxy configuration object.
|
|
68
70
|
*/
|
|
69
71
|
exports.manual = function(options) {
|
|
70
|
-
|
|
72
|
+
// TODO(jleyba): Figure out why the Closure compiler does not think this is
|
|
73
|
+
// a ProxyConfig record without the cast.
|
|
74
|
+
return /** @type {!ProxyConfig} */({
|
|
71
75
|
proxyType: 'manual',
|
|
72
76
|
ftpProxy: options.ftp,
|
|
73
77
|
httpProxy: options.http,
|
|
74
78
|
sslProxy: options.https,
|
|
75
79
|
noProxy: util.isArray(options.bypass) ?
|
|
76
80
|
options.bypass.join(',') : options.bypass
|
|
77
|
-
};
|
|
81
|
+
});
|
|
78
82
|
};
|
|
79
83
|
|
|
80
84
|
|
|
@@ -82,7 +86,7 @@ exports.manual = function(options) {
|
|
|
82
86
|
* Configures WebDriver to configure the browser proxy using the PAC file at
|
|
83
87
|
* the given URL.
|
|
84
88
|
* @param {string} url URL for the PAC proxy to use.
|
|
85
|
-
* @return {!
|
|
89
|
+
* @return {!ProxyConfig} A new proxy configuration object.
|
|
86
90
|
*/
|
|
87
91
|
exports.pac = function(url) {
|
|
88
92
|
return {
|
|
@@ -94,7 +98,7 @@ exports.pac = function(url) {
|
|
|
94
98
|
|
|
95
99
|
/**
|
|
96
100
|
* Configures WebDriver to use the current system's proxy.
|
|
97
|
-
* @return {!
|
|
101
|
+
* @return {!ProxyConfig} A new proxy configuration object.
|
|
98
102
|
*/
|
|
99
103
|
exports.system = function() {
|
|
100
104
|
return {proxyType: 'system'};
|