selenium-webdriver 2.47.0 → 2.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.md +96 -0
- package/NOTICE +1 -1
- package/README.md +57 -6
- package/builder.js +375 -358
- package/chrome.js +549 -586
- package/edge.js +378 -0
- package/error.js +597 -5
- package/example/google_search_generator.js +2 -4
- package/example/logging.js +6 -2
- package/executors.js +11 -27
- package/firefox/binary.js +80 -114
- package/firefox/extension.js +10 -19
- package/firefox/index.js +175 -171
- package/firefox/profile.js +221 -239
- package/http/index.js +396 -77
- package/http/util.js +35 -35
- package/ie.js +288 -309
- package/index.js +34 -125
- package/io/exec.js +58 -39
- package/io/index.js +54 -48
- package/lib/actions.js +594 -0
- package/lib/by.js +276 -0
- package/lib/capabilities.js +404 -0
- package/lib/{webdriver/command.js → command.js} +89 -72
- package/lib/{webdriver/button.js → devmode.js} +13 -8
- package/lib/events.js +210 -0
- package/lib/firefox/amd64/libnoblur64.so +0 -0
- package/lib/firefox/i386/libnoblur.so +0 -0
- package/lib/firefox/webdriver.json +6 -1
- package/lib/firefox/webdriver.xpi +0 -0
- package/lib/{webdriver/key.js → input.js} +82 -2
- package/lib/logging.js +668 -0
- package/lib/promise.js +3093 -0
- package/lib/safari/client.js +697 -659
- package/lib/session.js +79 -0
- package/{test/promise_aplus_test.js → lib/symbols.js} +15 -25
- package/lib/test/build.js +4 -4
- package/lib/test/data/click_tests/disappearing_element.html +62 -0
- package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
- package/lib/test/data/click_tests/overlapping_elements.html +70 -0
- 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/readOnlyPage.html +3 -1
- package/lib/test/data/selectPage.html +18 -2
- package/lib/test/data/simpleTest.html +1 -0
- package/lib/test/fileserver.js +3 -4
- package/lib/test/index.js +13 -4
- package/lib/test/resources.js +1 -1
- package/lib/until.js +428 -0
- package/lib/webdriver.js +2351 -0
- package/net/portprober.js +15 -11
- package/opera.js +295 -314
- package/package.json +6 -5
- package/phantomjs.js +135 -140
- package/proxy.js +6 -4
- package/remote/index.js +234 -219
- package/safari.js +319 -310
- package/test/chrome/options_test.js +11 -9
- package/test/element_finding_test.js +51 -13
- package/test/error_test.js +163 -0
- package/test/execute_script_test.js +1 -1
- package/test/firefox/firefox_test.js +24 -0
- package/test/http/http_test.js +354 -43
- package/test/http/util_test.js +25 -23
- package/test/io_test.js +6 -1
- package/test/lib/by_test.js +127 -0
- package/test/lib/capabilities_test.js +84 -0
- package/test/lib/events_test.js +177 -0
- package/test/lib/logging_test.js +272 -0
- package/test/lib/promise_aplus_test.js +74 -0
- 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 +436 -0
- package/test/lib/webdriver_test.js +2207 -0
- package/test/page_loading_test.js +7 -9
- 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 +10 -0
- package/_base.js +0 -200
- package/docs/Changes.html +0 -317
- 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 -91
- 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 -216
- package/docs/class_webdriver_WebElementPromise.html +0 -266
- 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 -18
- package/docs/class_webdriver_promise_ControlFlow.html +0 -109
- package/docs/class_webdriver_promise_Deferred.html +0 -84
- package/docs/class_webdriver_promise_Promise.html +0 -74
- 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 -123
- 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 -216
- package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -266
- 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 -67
- package/docs/module_selenium-webdriver_firefox_binary.html +0 -4
- package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -21
- package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -21
- 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 -162
- 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 -40
- 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 -165
- 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/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/testing/watchers.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 -1655
- 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 -139
- package/lib/goog/async/workqueue.js +0 -139
- package/lib/goog/base.js +0 -2547
- 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 -2995
- 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 -42
- package/lib/goog/dom/vendor.js +0 -96
- package/lib/goog/events/browserevent.js +0 -386
- 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 -233
- package/lib/goog/events/keycodes.js +0 -420
- 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 -105
- package/lib/goog/functions/functions.js +0 -332
- package/lib/goog/html/safehtml.js +0 -756
- 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 -431
- package/lib/goog/html/trustedresourceurl.js +0 -224
- package/lib/goog/html/uncheckedconversions.js +0 -231
- package/lib/goog/i18n/bidi.js +0 -908
- package/lib/goog/iter/iter.js +0 -1305
- package/lib/goog/json/json.js +0 -365
- 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 -327
- 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/math/box.js +0 -389
- 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 -1310
- package/lib/goog/promise/resolver.js +0 -48
- package/lib/goog/promise/thenable.js +0 -126
- package/lib/goog/reflect/reflect.js +0 -78
- package/lib/goog/string/const.js +0 -182
- package/lib/goog/string/string.js +0 -1565
- package/lib/goog/string/typedstring.js +0 -48
- package/lib/goog/structs/collection.js +0 -56
- package/lib/goog/structs/map.js +0 -456
- package/lib/goog/structs/set.js +0 -279
- package/lib/goog/structs/structs.js +0 -354
- package/lib/goog/style/style.js +0 -2054
- package/lib/goog/testing/asserts.js +0 -1265
- package/lib/goog/testing/events/events.js +0 -727
- package/lib/goog/testing/functionmock.js +0 -176
- 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 -617
- 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 -245
- 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 -1569
- package/lib/goog/testing/testrunner.js +0 -440
- package/lib/goog/testing/watchers.js +0 -46
- package/lib/goog/uri/uri.js +0 -1507
- package/lib/goog/uri/utils.js +0 -1116
- package/lib/goog/useragent/product.js +0 -175
- package/lib/goog/useragent/product_isversion.js +0 -143
- package/lib/goog/useragent/useragent.js +0 -538
- package/lib/webdriver/actionsequence.js +0 -356
- package/lib/webdriver/builder.js +0 -208
- package/lib/webdriver/capabilities.js +0 -411
- 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 -523
- 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/promise.js +0 -2609
- package/lib/webdriver/serializable.js +0 -41
- 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 -719
- package/lib/webdriver/test/promise_flow_test.js +0 -1957
- package/lib/webdriver/test/promise_generator_test.js +0 -251
- package/lib/webdriver/test/promise_test.js +0 -1981
- 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 -2492
- package/test/_base_test.js +0 -129
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
// Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
-
// or more contributor license agreements. See the NOTICE file
|
|
3
|
-
// distributed with this work for additional information
|
|
4
|
-
// regarding copyright ownership. The SFC licenses this file
|
|
5
|
-
// to you under the Apache License, Version 2.0 (the
|
|
6
|
-
// "License"); you may not use this file except in compliance
|
|
7
|
-
// with the License. You may obtain a copy of the License at
|
|
8
|
-
//
|
|
9
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
//
|
|
11
|
-
// Unless required by applicable law or agreed to in writing,
|
|
12
|
-
// software distributed under the License is distributed on an
|
|
13
|
-
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
// KIND, either express or implied. See the License for the
|
|
15
|
-
// specific language governing permissions and limitations
|
|
16
|
-
// under the License.
|
|
17
|
-
|
|
18
|
-
goog.provide('webdriver.test.until_test');
|
|
19
|
-
goog.setTestOnly('webdriver.test.until_test');
|
|
20
|
-
|
|
21
|
-
goog.require('bot.Error');
|
|
22
|
-
goog.require('bot.ErrorCode');
|
|
23
|
-
goog.require('bot.response');
|
|
24
|
-
goog.require('goog.array');
|
|
25
|
-
goog.require('goog.string');
|
|
26
|
-
goog.require('goog.testing.jsunit');
|
|
27
|
-
goog.require('goog.userAgent');
|
|
28
|
-
goog.require('webdriver.By');
|
|
29
|
-
goog.require('webdriver.CommandName');
|
|
30
|
-
goog.require('webdriver.WebDriver');
|
|
31
|
-
goog.require('webdriver.WebElement');
|
|
32
|
-
goog.require('webdriver.WebElementPromise');
|
|
33
|
-
goog.require('webdriver.until');
|
|
34
|
-
|
|
35
|
-
function shouldRunTests() {
|
|
36
|
-
return !goog.userAgent.IE || goog.userAgent.isVersionOrHigher(10);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var By = webdriver.By;
|
|
41
|
-
var until = webdriver.until;
|
|
42
|
-
var CommandName = webdriver.CommandName;
|
|
43
|
-
|
|
44
|
-
var driver, executor;
|
|
45
|
-
|
|
46
|
-
var TestExecutor = function() {
|
|
47
|
-
this.handlers_ = {};
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
TestExecutor.prototype.on = function(cmd, handler) {
|
|
52
|
-
this.handlers_[cmd] = handler;
|
|
53
|
-
return this;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
TestExecutor.prototype.execute = function(cmd, callback) {
|
|
58
|
-
if (!this.handlers_[cmd.getName()]) {
|
|
59
|
-
throw Error('Unsupported command: ' + cmd.getName());
|
|
60
|
-
}
|
|
61
|
-
this.handlers_[cmd.getName()](cmd, callback);
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
function setUp() {
|
|
66
|
-
executor = new TestExecutor();
|
|
67
|
-
driver = new webdriver.WebDriver('session-id', executor);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
function testUntilAbleToSwitchToFrame_failsFastForNonSwitchErrors() {
|
|
72
|
-
var e = Error('boom');
|
|
73
|
-
executor.on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
74
|
-
callback(e);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
return driver.wait(until.ableToSwitchToFrame(0), 100)
|
|
78
|
-
.then(fail, function(e2) {
|
|
79
|
-
assertEquals(e, e2);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
function testUntilAbleToSwitchToFrame_byIndex() {
|
|
85
|
-
executor.on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
86
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
return driver.wait(until.ableToSwitchToFrame(0), 100);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
function testUntilAbleToSwitchToFrame_byWebElement() {
|
|
94
|
-
executor.on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
95
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 1234});
|
|
99
|
-
return driver.wait(until.ableToSwitchToFrame(el), 100);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
function testUntilAbleToSwitchToFrame_byWebElementPromise() {
|
|
104
|
-
executor.on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
105
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
var el = new webdriver.WebElementPromise(driver,
|
|
109
|
-
webdriver.promise.fulfilled(
|
|
110
|
-
new webdriver.WebElement(driver, {ELEMENT: 1234})));
|
|
111
|
-
return driver.wait(until.ableToSwitchToFrame(el), 100);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
function testUntilAbleToSwitchToFrame_byLocator() {
|
|
116
|
-
executor.on(CommandName.FIND_ELEMENTS, function(cmd, callback) {
|
|
117
|
-
callback(null, {
|
|
118
|
-
status: bot.ErrorCode.SUCCESS,
|
|
119
|
-
value: [{ELEMENT: 1234}]
|
|
120
|
-
});
|
|
121
|
-
}).on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
122
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
return driver.wait(until.ableToSwitchToFrame(By.id('foo')), 100);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
function testUntilAbleToSwitchToFrame_byLocator_elementNotInitiallyFound() {
|
|
130
|
-
var foundResponses = [[], [], [{ELEMENT: 1234}]];
|
|
131
|
-
executor.on(CommandName.FIND_ELEMENTS, function(cmd, callback) {
|
|
132
|
-
callback(null, {
|
|
133
|
-
status: bot.ErrorCode.SUCCESS,
|
|
134
|
-
value: foundResponses.shift()
|
|
135
|
-
});
|
|
136
|
-
}).on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
137
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
return driver.wait(until.ableToSwitchToFrame(By.id('foo')), 2000)
|
|
141
|
-
.then(function() {
|
|
142
|
-
assertEquals(0, foundResponses.length);
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
function testUntilAbleToSwitchToFrame_timesOutIfNeverAbletoSwitchFrames() {
|
|
148
|
-
var count = 0;
|
|
149
|
-
executor.on(CommandName.SWITCH_TO_FRAME, function(cmd, callback) {
|
|
150
|
-
count += 1;
|
|
151
|
-
callback(null, {status: bot.ErrorCode.NO_SUCH_FRAME});
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
return driver.wait(until.ableToSwitchToFrame(0), 100).then(fail, function(e) {
|
|
155
|
-
assertTrue(count > 0);
|
|
156
|
-
assertTrue('Wrong message: ' + e.message, goog.string.startsWith(
|
|
157
|
-
e.message, 'Waiting to be able to switch to frame'));
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
function testUntilAlertIsPresent_failsFastForNonAlertSwitchErrors() {
|
|
163
|
-
return driver.wait(until.alertIsPresent(), 100).then(fail, function(e) {
|
|
164
|
-
assertEquals(
|
|
165
|
-
'Unsupported command: ' + CommandName.GET_ALERT_TEXT, e.message);
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
function testUntilAlertIsPresent() {
|
|
171
|
-
var count = 0;
|
|
172
|
-
executor.on(CommandName.GET_ALERT_TEXT, function(cmd, callback) {
|
|
173
|
-
if (count++ < 3) {
|
|
174
|
-
callback(null, {status: bot.ErrorCode.NO_SUCH_ALERT});
|
|
175
|
-
} else {
|
|
176
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
177
|
-
}
|
|
178
|
-
}).on(CommandName.DISMISS_ALERT, function(cmd, callback) {
|
|
179
|
-
callback(null, {status: bot.ErrorCode.SUCCESS});
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
return driver.wait(until.alertIsPresent(), 1000).then(function(alert) {
|
|
183
|
-
assertEquals(4, count);
|
|
184
|
-
return alert.dismiss();
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
function testUntilTitleIs() {
|
|
190
|
-
var titles = ['foo', 'bar', 'baz'];
|
|
191
|
-
executor.on(CommandName.GET_TITLE, function(cmd, callback) {
|
|
192
|
-
callback(null, bot.response.createResponse(titles.shift()));
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
return driver.wait(until.titleIs('bar'), 3000).then(function() {
|
|
196
|
-
assertArrayEquals(['baz'], titles);
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
function testUntilTitleContains() {
|
|
202
|
-
var titles = ['foo', 'froogle', 'google'];
|
|
203
|
-
executor.on(CommandName.GET_TITLE, function(cmd, callback) {
|
|
204
|
-
callback(null, bot.response.createResponse(titles.shift()));
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
return driver.wait(until.titleContains('oogle'), 3000).then(function() {
|
|
208
|
-
assertArrayEquals(['google'], titles);
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
function testUntilTitleMatches() {
|
|
214
|
-
var titles = ['foo', 'froogle', 'aaaabc', 'aabbbc', 'google'];
|
|
215
|
-
executor.on(CommandName.GET_TITLE, function(cmd, callback) {
|
|
216
|
-
callback(null, bot.response.createResponse(titles.shift()));
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
return driver.wait(until.titleMatches(/^a{2,3}b+c$/), 3000).then(function() {
|
|
220
|
-
assertArrayEquals(['google'], titles);
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
function testUntilElementLocated() {
|
|
226
|
-
var responses = [[], [{ELEMENT: 'abc123'}, {ELEMENT: 'foo'}], ['end']];
|
|
227
|
-
executor.on(CommandName.FIND_ELEMENTS, function(cmd, callback) {
|
|
228
|
-
callback(null, bot.response.createResponse(responses.shift()));
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
return driver.wait(until.elementLocated(By.id('quux')), 2000)
|
|
232
|
-
.then(function(el) {
|
|
233
|
-
return el.getId();
|
|
234
|
-
}).then(function(id) {
|
|
235
|
-
assertArrayEquals([['end']], responses);
|
|
236
|
-
assertEquals('abc123', id['ELEMENT']);
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function runNoElementFoundTest(locator, locatorStr) {
|
|
241
|
-
executor.on(CommandName.FIND_ELEMENTS, function(cmd, callback) {
|
|
242
|
-
callback(null, bot.response.createResponse([]));
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
function expectedFailure() {
|
|
246
|
-
fail('expected condition to timeout');
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
return driver.wait(until.elementLocated(locator), 100)
|
|
250
|
-
.then(expectedFailure, function(error) {
|
|
251
|
-
var expected = 'Waiting for element to be located ' + locatorStr;
|
|
252
|
-
var lines = error.message.split(/\n/, 2);
|
|
253
|
-
assertEquals(expected, lines[0]);
|
|
254
|
-
assertRegExp(/^Wait timed out after \d+ms$/, lines[1]);
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
function testUntilElementLocated_elementNeverFound_byLocator() {
|
|
259
|
-
return runNoElementFoundTest(By.id('quux'), 'By.id("quux")');
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function testUntilElementLocated_elementNeverFound_byHash() {
|
|
263
|
-
return runNoElementFoundTest({id: 'quux'}, 'By.id("quux")');
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
function testUntilElementLocated_elementNeverFound_byFunction() {
|
|
267
|
-
return runNoElementFoundTest(goog.nullFunction, 'by function()');
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function testUntilElementsLocated() {
|
|
271
|
-
var responses = [[], [{ELEMENT: 'abc123'}, {ELEMENT: 'foo'}], ['end']];
|
|
272
|
-
executor.on(CommandName.FIND_ELEMENTS, function(cmd, callback) {
|
|
273
|
-
callback(null, bot.response.createResponse(responses.shift()));
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
return driver.wait(until.elementsLocated(By.id('quux')), 2000)
|
|
277
|
-
.then(function(els) {
|
|
278
|
-
return webdriver.promise.all(goog.array.map(els, function(el) {
|
|
279
|
-
return el.getId();
|
|
280
|
-
}));
|
|
281
|
-
}).then(function(ids) {
|
|
282
|
-
assertArrayEquals([['end']], responses);
|
|
283
|
-
assertEquals(2, ids.length);
|
|
284
|
-
assertEquals('abc123', ids[0]['ELEMENT']);
|
|
285
|
-
assertEquals('foo', ids[1]['ELEMENT']);
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
function runNoElementsFoundTest(locator, locatorStr) {
|
|
290
|
-
executor.on(CommandName.FIND_ELEMENTS, function(cmd, callback) {
|
|
291
|
-
callback(null, bot.response.createResponse([]));
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
function expectedFailure() {
|
|
295
|
-
fail('expected condition to timeout');
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
return driver.wait(until.elementsLocated(locator), 100)
|
|
299
|
-
.then(expectedFailure, function(error) {
|
|
300
|
-
var expected =
|
|
301
|
-
'Waiting for at least one element to be located ' + locatorStr;
|
|
302
|
-
var lines = error.message.split(/\n/, 2);
|
|
303
|
-
assertEquals(expected, lines[0]);
|
|
304
|
-
assertRegExp(/^Wait timed out after \d+ms$/, lines[1]);
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
function testUntilElementsLocated_noElementsEverFound_byLocator() {
|
|
309
|
-
return runNoElementsFoundTest(By.id('quux'), 'By.id("quux")');
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
function testUntilElementsLocated_noElementsEverFound_byHash() {
|
|
313
|
-
return runNoElementsFoundTest({id: 'quux'}, 'By.id("quux")');
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
function testUntilElementsLocated_noElementsEverFound_byFunction() {
|
|
317
|
-
return runNoElementsFoundTest(goog.nullFunction, 'by function()');
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
function testUntilStalenessOf() {
|
|
321
|
-
var responses = [
|
|
322
|
-
bot.response.createResponse('body'),
|
|
323
|
-
bot.response.createResponse('body'),
|
|
324
|
-
bot.response.createResponse('body'),
|
|
325
|
-
bot.response.createErrorResponse(
|
|
326
|
-
new bot.Error(bot.ErrorCode.STALE_ELEMENT_REFERENCE, 'now stale')),
|
|
327
|
-
['end']
|
|
328
|
-
];
|
|
329
|
-
executor.on(CommandName.GET_ELEMENT_TAG_NAME, function(cmd, callback) {
|
|
330
|
-
callback(null, responses.shift());
|
|
331
|
-
});
|
|
332
|
-
|
|
333
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
334
|
-
return driver.wait(until.stalenessOf(el), 2000).then(function() {
|
|
335
|
-
assertArrayEquals([['end']], responses);
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
function runElementStateTest(predicate, command, responses) {
|
|
340
|
-
assertTrue(responses.length > 1);
|
|
341
|
-
|
|
342
|
-
responses = goog.array.concat(responses, ['end']);
|
|
343
|
-
executor.on(command, function(cmd, callback) {
|
|
344
|
-
callback(null, bot.response.createResponse(responses.shift()));
|
|
345
|
-
});
|
|
346
|
-
return driver.wait(predicate, 2000).then(function() {
|
|
347
|
-
assertArrayEquals(['end'], responses);
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
function testUntilElementIsVisible() {
|
|
352
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
353
|
-
return runElementStateTest(until.elementIsVisible(el),
|
|
354
|
-
CommandName.IS_ELEMENT_DISPLAYED, [false, false, true]);
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
function testUntilElementIsNotVisible() {
|
|
359
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
360
|
-
return runElementStateTest(until.elementIsNotVisible(el),
|
|
361
|
-
CommandName.IS_ELEMENT_DISPLAYED, [true, true, false]);
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
function testUntilElementIsEnabled() {
|
|
366
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
367
|
-
return runElementStateTest(until.elementIsEnabled(el),
|
|
368
|
-
CommandName.IS_ELEMENT_ENABLED, [false, false, true]);
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
function testUntilElementIsDisabled() {
|
|
373
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
374
|
-
return runElementStateTest(until.elementIsDisabled(el),
|
|
375
|
-
CommandName.IS_ELEMENT_ENABLED, [true, true, false]);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
function testUntilElementIsSelected() {
|
|
380
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
381
|
-
return runElementStateTest(until.elementIsSelected(el),
|
|
382
|
-
CommandName.IS_ELEMENT_SELECTED, [false, false, true]);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
function testUntilElementIsNotSelected() {
|
|
387
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
388
|
-
return runElementStateTest(until.elementIsNotSelected(el),
|
|
389
|
-
CommandName.IS_ELEMENT_SELECTED, [true, true, false]);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
function testUntilElementTextIs() {
|
|
394
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
395
|
-
return runElementStateTest(until.elementTextIs(el, 'foobar'),
|
|
396
|
-
CommandName.GET_ELEMENT_TEXT, ['foo', 'fooba', 'foobar']);
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
function testUntilElementTextContains() {
|
|
401
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
402
|
-
return runElementStateTest(until.elementTextContains(el, 'bar'),
|
|
403
|
-
CommandName.GET_ELEMENT_TEXT, ['foo', 'foobaz', 'foobarbaz']);
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
function testUntilElementTextMatches() {
|
|
408
|
-
var el = new webdriver.WebElement(driver, {ELEMENT: 'foo'});
|
|
409
|
-
return runElementStateTest(until.elementTextMatches(el, /fo+bar{3}/),
|
|
410
|
-
CommandName.GET_ELEMENT_TEXT, ['foo', 'foobar', 'fooobarrr']);
|
|
411
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
-
// or more contributor license agreements. See the NOTICE file
|
|
3
|
-
// distributed with this work for additional information
|
|
4
|
-
// regarding copyright ownership. The SFC licenses this file
|
|
5
|
-
// to you under the Apache License, Version 2.0 (the
|
|
6
|
-
// "License"); you may not use this file except in compliance
|
|
7
|
-
// with the License. You may obtain a copy of the License at
|
|
8
|
-
//
|
|
9
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
//
|
|
11
|
-
// Unless required by applicable law or agreed to in writing,
|
|
12
|
-
// software distributed under the License is distributed on an
|
|
13
|
-
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
// KIND, either express or implied. See the License for the
|
|
15
|
-
// specific language governing permissions and limitations
|
|
16
|
-
// under the License.
|
|
17
|
-
|
|
18
|
-
goog.provide('webdriver.test.WebDriver.generator.test');
|
|
19
|
-
goog.setTestOnly('webdriver.test.WebDriver.generator.test');
|
|
20
|
-
|
|
21
|
-
goog.require('goog.testing.jsunit');
|
|
22
|
-
goog.require('webdriver.Session');
|
|
23
|
-
goog.require('webdriver.WebDriver');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var driver;
|
|
27
|
-
|
|
28
|
-
function setUp() {
|
|
29
|
-
driver = new webdriver.WebDriver(
|
|
30
|
-
new webdriver.Session('test-session', {}),
|
|
31
|
-
new ExplodingExecutor());
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
function testCanUseGeneratorsWithWebDriverCall() {
|
|
36
|
-
return driver.call(function* () {
|
|
37
|
-
var x = yield webdriver.promise.fulfilled(1);
|
|
38
|
-
var y = yield webdriver.promise.fulfilled(2);
|
|
39
|
-
return x + y;
|
|
40
|
-
}).then(function(value) {
|
|
41
|
-
assertEquals(3, value);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
function testCanDefineScopeOnGeneratorCall() {
|
|
47
|
-
return driver.call(function* () {
|
|
48
|
-
var x = yield webdriver.promise.fulfilled(1);
|
|
49
|
-
return this.name + x;
|
|
50
|
-
}, {name: 'Bob'}).then(function(value) {
|
|
51
|
-
assertEquals('Bob1', value);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
function testCanSpecifyArgsOnGeneratorCall() {
|
|
57
|
-
return driver.call(function* (a, b) {
|
|
58
|
-
var x = yield webdriver.promise.fulfilled(1);
|
|
59
|
-
var y = yield webdriver.promise.fulfilled(2);
|
|
60
|
-
return [x + y, a, b];
|
|
61
|
-
}, null, 'abc', 123).then(function(value) {
|
|
62
|
-
assertArrayEquals([3, 'abc', 123], value);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
function testCanUseGeneratorWithWebDriverWait() {
|
|
68
|
-
var values = [];
|
|
69
|
-
return driver.wait(function* () {
|
|
70
|
-
yield values.push(1);
|
|
71
|
-
values.push(yield webdriver.promise.delayed(10).then(function() {
|
|
72
|
-
return 2;
|
|
73
|
-
}));
|
|
74
|
-
yield values.push(3);
|
|
75
|
-
return values.length === 6;
|
|
76
|
-
}, 250).then(function() {
|
|
77
|
-
assertArrayEquals([1, 2, 3, 1, 2, 3], values);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* @constructor
|
|
84
|
-
* @implements {webdriver.CommandExecutor}
|
|
85
|
-
*/
|
|
86
|
-
function ExplodingExecutor() {}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
/** @override */
|
|
90
|
-
ExplodingExecutor.prototype.execute = function(command, cb) {
|
|
91
|
-
cb(Error('Unsupported operation'));
|
|
92
|
-
};
|