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.
Files changed (529) hide show
  1. package/CHANGES.md +96 -0
  2. package/NOTICE +1 -1
  3. package/README.md +57 -6
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +597 -5
  8. package/example/google_search_generator.js +2 -4
  9. package/example/logging.js +6 -2
  10. package/executors.js +11 -27
  11. package/firefox/binary.js +80 -114
  12. package/firefox/extension.js +10 -19
  13. package/firefox/index.js +175 -171
  14. package/firefox/profile.js +221 -239
  15. package/http/index.js +396 -77
  16. package/http/util.js +35 -35
  17. package/ie.js +288 -309
  18. package/index.js +34 -125
  19. package/io/exec.js +58 -39
  20. package/io/index.js +54 -48
  21. package/lib/actions.js +594 -0
  22. package/lib/by.js +276 -0
  23. package/lib/capabilities.js +404 -0
  24. package/lib/{webdriver/command.js → command.js} +89 -72
  25. package/lib/{webdriver/button.js → devmode.js} +13 -8
  26. package/lib/events.js +210 -0
  27. package/lib/firefox/amd64/libnoblur64.so +0 -0
  28. package/lib/firefox/i386/libnoblur.so +0 -0
  29. package/lib/firefox/webdriver.json +6 -1
  30. package/lib/firefox/webdriver.xpi +0 -0
  31. package/lib/{webdriver/key.js → input.js} +82 -2
  32. package/lib/logging.js +668 -0
  33. package/lib/promise.js +3093 -0
  34. package/lib/safari/client.js +697 -659
  35. package/lib/session.js +79 -0
  36. package/{test/promise_aplus_test.js → lib/symbols.js} +15 -25
  37. package/lib/test/build.js +4 -4
  38. package/lib/test/data/click_tests/disappearing_element.html +62 -0
  39. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  40. package/lib/test/data/click_tests/overlapping_elements.html +70 -0
  41. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  42. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  43. package/lib/test/data/readOnlyPage.html +3 -1
  44. package/lib/test/data/selectPage.html +18 -2
  45. package/lib/test/data/simpleTest.html +1 -0
  46. package/lib/test/fileserver.js +3 -4
  47. package/lib/test/index.js +13 -4
  48. package/lib/test/resources.js +1 -1
  49. package/lib/until.js +428 -0
  50. package/lib/webdriver.js +2351 -0
  51. package/net/portprober.js +15 -11
  52. package/opera.js +295 -314
  53. package/package.json +6 -5
  54. package/phantomjs.js +135 -140
  55. package/proxy.js +6 -4
  56. package/remote/index.js +234 -219
  57. package/safari.js +319 -310
  58. package/test/chrome/options_test.js +11 -9
  59. package/test/element_finding_test.js +51 -13
  60. package/test/error_test.js +163 -0
  61. package/test/execute_script_test.js +1 -1
  62. package/test/firefox/firefox_test.js +24 -0
  63. package/test/http/http_test.js +354 -43
  64. package/test/http/util_test.js +25 -23
  65. package/test/io_test.js +6 -1
  66. package/test/lib/by_test.js +127 -0
  67. package/test/lib/capabilities_test.js +84 -0
  68. package/test/lib/events_test.js +177 -0
  69. package/test/lib/logging_test.js +272 -0
  70. package/test/lib/promise_aplus_test.js +74 -0
  71. package/test/lib/promise_error_test.js +808 -0
  72. package/test/lib/promise_flow_test.js +2282 -0
  73. package/test/lib/promise_generator_test.js +308 -0
  74. package/test/lib/promise_test.js +996 -0
  75. package/test/lib/testutil.js +90 -0
  76. package/test/lib/until_test.js +436 -0
  77. package/test/lib/webdriver_test.js +2207 -0
  78. package/test/page_loading_test.js +7 -9
  79. package/test/stale_element_test.js +2 -2
  80. package/test/testing/assert_test.js +374 -0
  81. package/test/testing/index_test.js +9 -11
  82. package/testing/assert.js +334 -17
  83. package/testing/index.js +10 -0
  84. package/_base.js +0 -200
  85. package/docs/Changes.html +0 -317
  86. package/docs/class_bot_Error.html +0 -15
  87. package/docs/class_webdriver_ActionSequence.html +0 -115
  88. package/docs/class_webdriver_Alert.html +0 -24
  89. package/docs/class_webdriver_AlertPromise.html +0 -91
  90. package/docs/class_webdriver_Capabilities.html +0 -60
  91. package/docs/class_webdriver_Command.html +0 -15
  92. package/docs/class_webdriver_EventEmitter.html +0 -35
  93. package/docs/class_webdriver_FileDetector.html +0 -21
  94. package/docs/class_webdriver_Locator.html +0 -12
  95. package/docs/class_webdriver_Serializable.html +0 -9
  96. package/docs/class_webdriver_Session.html +0 -13
  97. package/docs/class_webdriver_TouchSequence.html +0 -49
  98. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  99. package/docs/class_webdriver_WebDriver.html +0 -313
  100. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  101. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  102. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  103. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  104. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  105. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  106. package/docs/class_webdriver_WebElement.html +0 -216
  107. package/docs/class_webdriver_WebElementPromise.html +0 -266
  108. package/docs/class_webdriver_http_Executor.html +0 -22
  109. package/docs/class_webdriver_http_Request.html +0 -12
  110. package/docs/class_webdriver_http_Response.html +0 -13
  111. package/docs/class_webdriver_logging_Entry.html +0 -15
  112. package/docs/class_webdriver_logging_Level.html +0 -55
  113. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  114. package/docs/class_webdriver_logging_Logger.html +0 -119
  115. package/docs/class_webdriver_logging_Preferences.html +0 -8
  116. package/docs/class_webdriver_promise_CancellationError.html +0 -18
  117. package/docs/class_webdriver_promise_ControlFlow.html +0 -109
  118. package/docs/class_webdriver_promise_Deferred.html +0 -84
  119. package/docs/class_webdriver_promise_Promise.html +0 -74
  120. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  121. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  122. package/docs/class_webdriver_testing_Assertion.html +0 -99
  123. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  124. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  125. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  126. package/docs/class_webdriver_until_Condition.html +0 -7
  127. package/docs/dossier.css +0 -1
  128. package/docs/dossier.js +0 -86
  129. package/docs/enum_bot_ErrorCode.html +0 -3
  130. package/docs/enum_bot_Error_State.html +0 -2
  131. package/docs/enum_webdriver_Browser.html +0 -2
  132. package/docs/enum_webdriver_Button.html +0 -2
  133. package/docs/enum_webdriver_Capability.html +0 -33
  134. package/docs/enum_webdriver_CommandName.html +0 -3
  135. package/docs/enum_webdriver_Key.html +0 -12
  136. package/docs/enum_webdriver_logging_Type.html +0 -6
  137. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  138. package/docs/index.html +0 -123
  139. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  140. package/docs/interface_webdriver_http_Client.html +0 -10
  141. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  142. package/docs/module_selenium-webdriver.html +0 -23
  143. package/docs/module_selenium-webdriver__base.html +0 -23
  144. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  145. package/docs/module_selenium-webdriver_builder.html +0 -2
  146. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  147. package/docs/module_selenium-webdriver_chrome.html +0 -90
  148. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  149. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  150. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  151. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  152. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  153. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  154. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  155. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  156. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  157. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  158. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  159. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  160. package/docs/module_selenium-webdriver_class_WebElement.html +0 -216
  161. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -266
  162. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  163. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  164. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  165. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  166. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  167. package/docs/module_selenium-webdriver_error.html +0 -4
  168. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  169. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  170. package/docs/module_selenium-webdriver_executors.html +0 -10
  171. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  172. package/docs/module_selenium-webdriver_firefox.html +0 -67
  173. package/docs/module_selenium-webdriver_firefox_binary.html +0 -4
  174. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -21
  175. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -21
  176. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  177. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  178. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  179. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  180. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  181. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  182. package/docs/module_selenium-webdriver_http.html +0 -9
  183. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  184. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  185. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  186. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  187. package/docs/module_selenium-webdriver_http_util.html +0 -17
  188. package/docs/module_selenium-webdriver_ie.html +0 -11
  189. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  190. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  191. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  192. package/docs/module_selenium-webdriver_io.html +0 -37
  193. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  194. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  195. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  196. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  197. package/docs/module_selenium-webdriver_namespace_promise.html +0 -162
  198. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  199. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  200. package/docs/module_selenium-webdriver_net.html +0 -7
  201. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  202. package/docs/module_selenium-webdriver_opera.html +0 -62
  203. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  204. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  205. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  206. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  207. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  208. package/docs/module_selenium-webdriver_proxy.html +0 -28
  209. package/docs/module_selenium-webdriver_remote.html +0 -8
  210. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  211. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  212. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -40
  213. package/docs/module_selenium-webdriver_safari.html +0 -9
  214. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  215. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  216. package/docs/module_selenium-webdriver_testing.html +0 -74
  217. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  218. package/docs/namespace_bot.html +0 -4
  219. package/docs/namespace_bot_json.html +0 -20
  220. package/docs/namespace_bot_response.html +0 -18
  221. package/docs/namespace_bot_userAgent.html +0 -33
  222. package/docs/namespace_webdriver.html +0 -30
  223. package/docs/namespace_webdriver_By.html +0 -56
  224. package/docs/namespace_webdriver_http.html +0 -6
  225. package/docs/namespace_webdriver_logging.html +0 -70
  226. package/docs/namespace_webdriver_promise.html +0 -165
  227. package/docs/namespace_webdriver_stacktrace.html +0 -17
  228. package/docs/namespace_webdriver_testing.html +0 -7
  229. package/docs/namespace_webdriver_testing_assert.html +0 -9
  230. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  231. package/docs/namespace_webdriver_until.html +0 -82
  232. package/docs/source/_base.js.src.html +0 -1
  233. package/docs/source/builder.js.src.html +0 -1
  234. package/docs/source/chrome.js.src.html +0 -1
  235. package/docs/source/error.js.src.html +0 -1
  236. package/docs/source/executors.js.src.html +0 -1
  237. package/docs/source/firefox/binary.js.src.html +0 -1
  238. package/docs/source/firefox/extension.js.src.html +0 -1
  239. package/docs/source/firefox/index.js.src.html +0 -1
  240. package/docs/source/firefox/profile.js.src.html +0 -1
  241. package/docs/source/http/index.js.src.html +0 -1
  242. package/docs/source/http/util.js.src.html +0 -1
  243. package/docs/source/ie.js.src.html +0 -1
  244. package/docs/source/index.js.src.html +0 -1
  245. package/docs/source/io/exec.js.src.html +0 -1
  246. package/docs/source/io/index.js.src.html +0 -1
  247. package/docs/source/lib/atoms/error.js.src.html +0 -1
  248. package/docs/source/lib/atoms/json.js.src.html +0 -1
  249. package/docs/source/lib/atoms/response.js.src.html +0 -1
  250. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  251. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  252. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  253. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  254. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  255. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  256. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  257. package/docs/source/lib/goog/base.js.src.html +0 -1
  258. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  259. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  260. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  261. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  262. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  263. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  264. package/docs/source/lib/goog/deps.js.src.html +0 -1
  265. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  266. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  267. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  268. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  269. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  270. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  271. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  272. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  273. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  274. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  275. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  276. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  277. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  278. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  279. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  280. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  285. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  286. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  287. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  288. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  289. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  290. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  291. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  292. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  293. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  294. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  295. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  296. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  297. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  298. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  299. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  300. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  301. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  302. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  303. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  307. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  308. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  309. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  310. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  311. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  312. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  313. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  314. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  315. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  316. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  317. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  318. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  319. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  320. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  321. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  322. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  323. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  324. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  325. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  326. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  327. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  328. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  329. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  330. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  331. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  332. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  333. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  334. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  335. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  336. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/watchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  348. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  349. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  350. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  351. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  352. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  353. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  354. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  355. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  356. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  357. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  358. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  369. package/docs/source/net/index.js.src.html +0 -1
  370. package/docs/source/net/portprober.js.src.html +0 -1
  371. package/docs/source/opera.js.src.html +0 -1
  372. package/docs/source/phantomjs.js.src.html +0 -1
  373. package/docs/source/proxy.js.src.html +0 -1
  374. package/docs/source/remote/index.js.src.html +0 -1
  375. package/docs/source/safari.js.src.html +0 -1
  376. package/docs/source/testing/assert.js.src.html +0 -1
  377. package/docs/source/testing/index.js.src.html +0 -1
  378. package/docs/types.js +0 -1
  379. package/lib/atoms/error.js +0 -202
  380. package/lib/atoms/json.js +0 -80
  381. package/lib/atoms/response.js +0 -110
  382. package/lib/atoms/userAgent.js +0 -257
  383. package/lib/goog/LICENSE +0 -176
  384. package/lib/goog/array/array.js +0 -1655
  385. package/lib/goog/asserts/asserts.js +0 -365
  386. package/lib/goog/async/freelist.js +0 -88
  387. package/lib/goog/async/nexttick.js +0 -241
  388. package/lib/goog/async/run.js +0 -139
  389. package/lib/goog/async/workqueue.js +0 -139
  390. package/lib/goog/base.js +0 -2547
  391. package/lib/goog/debug/debug.js +0 -653
  392. package/lib/goog/debug/entrypointregistry.js +0 -158
  393. package/lib/goog/debug/error.js +0 -63
  394. package/lib/goog/debug/logbuffer.js +0 -148
  395. package/lib/goog/debug/logger.js +0 -873
  396. package/lib/goog/debug/logrecord.js +0 -242
  397. package/lib/goog/deps.js +0 -151
  398. package/lib/goog/disposable/disposable.js +0 -307
  399. package/lib/goog/disposable/idisposable.js +0 -45
  400. package/lib/goog/dom/browserfeature.js +0 -72
  401. package/lib/goog/dom/dom.js +0 -2995
  402. package/lib/goog/dom/nodetype.js +0 -48
  403. package/lib/goog/dom/safe.js +0 -347
  404. package/lib/goog/dom/tagname.js +0 -160
  405. package/lib/goog/dom/tags.js +0 -42
  406. package/lib/goog/dom/vendor.js +0 -96
  407. package/lib/goog/events/browserevent.js +0 -386
  408. package/lib/goog/events/browserfeature.js +0 -85
  409. package/lib/goog/events/event.js +0 -143
  410. package/lib/goog/events/eventid.js +0 -47
  411. package/lib/goog/events/events.js +0 -984
  412. package/lib/goog/events/eventtarget.js +0 -394
  413. package/lib/goog/events/eventtype.js +0 -233
  414. package/lib/goog/events/keycodes.js +0 -420
  415. package/lib/goog/events/listenable.js +0 -335
  416. package/lib/goog/events/listener.js +0 -131
  417. package/lib/goog/events/listenermap.js +0 -308
  418. package/lib/goog/fs/url.js +0 -105
  419. package/lib/goog/functions/functions.js +0 -332
  420. package/lib/goog/html/safehtml.js +0 -756
  421. package/lib/goog/html/safescript.js +0 -234
  422. package/lib/goog/html/safestyle.js +0 -442
  423. package/lib/goog/html/safestylesheet.js +0 -276
  424. package/lib/goog/html/safeurl.js +0 -431
  425. package/lib/goog/html/trustedresourceurl.js +0 -224
  426. package/lib/goog/html/uncheckedconversions.js +0 -231
  427. package/lib/goog/i18n/bidi.js +0 -908
  428. package/lib/goog/iter/iter.js +0 -1305
  429. package/lib/goog/json/json.js +0 -365
  430. package/lib/goog/labs/testing/assertthat.js +0 -58
  431. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  432. package/lib/goog/labs/testing/matcher.js +0 -80
  433. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  434. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  435. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  436. package/lib/goog/labs/useragent/browser.js +0 -327
  437. package/lib/goog/labs/useragent/engine.js +0 -160
  438. package/lib/goog/labs/useragent/platform.js +0 -160
  439. package/lib/goog/labs/useragent/util.js +0 -148
  440. package/lib/goog/math/box.js +0 -389
  441. package/lib/goog/math/coordinate.js +0 -268
  442. package/lib/goog/math/math.js +0 -451
  443. package/lib/goog/math/rect.js +0 -476
  444. package/lib/goog/math/size.js +0 -227
  445. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  446. package/lib/goog/net/xhrlike.js +0 -124
  447. package/lib/goog/net/xmlhttp.js +0 -246
  448. package/lib/goog/net/xmlhttpfactory.js +0 -67
  449. package/lib/goog/object/object.js +0 -686
  450. package/lib/goog/promise/promise.js +0 -1310
  451. package/lib/goog/promise/resolver.js +0 -48
  452. package/lib/goog/promise/thenable.js +0 -126
  453. package/lib/goog/reflect/reflect.js +0 -78
  454. package/lib/goog/string/const.js +0 -182
  455. package/lib/goog/string/string.js +0 -1565
  456. package/lib/goog/string/typedstring.js +0 -48
  457. package/lib/goog/structs/collection.js +0 -56
  458. package/lib/goog/structs/map.js +0 -456
  459. package/lib/goog/structs/set.js +0 -279
  460. package/lib/goog/structs/structs.js +0 -354
  461. package/lib/goog/style/style.js +0 -2054
  462. package/lib/goog/testing/asserts.js +0 -1265
  463. package/lib/goog/testing/events/events.js +0 -727
  464. package/lib/goog/testing/functionmock.js +0 -176
  465. package/lib/goog/testing/jsunit.js +0 -162
  466. package/lib/goog/testing/loosemock.js +0 -242
  467. package/lib/goog/testing/mock.js +0 -645
  468. package/lib/goog/testing/mockclock.js +0 -617
  469. package/lib/goog/testing/mockcontrol.js +0 -220
  470. package/lib/goog/testing/mockinterface.js +0 -45
  471. package/lib/goog/testing/mockmatchers.js +0 -400
  472. package/lib/goog/testing/objectpropertystring.js +0 -68
  473. package/lib/goog/testing/propertyreplacer.js +0 -245
  474. package/lib/goog/testing/recordfunction.js +0 -215
  475. package/lib/goog/testing/stacktrace.js +0 -594
  476. package/lib/goog/testing/strictmock.js +0 -130
  477. package/lib/goog/testing/testcase.js +0 -1569
  478. package/lib/goog/testing/testrunner.js +0 -440
  479. package/lib/goog/testing/watchers.js +0 -46
  480. package/lib/goog/uri/uri.js +0 -1507
  481. package/lib/goog/uri/utils.js +0 -1116
  482. package/lib/goog/useragent/product.js +0 -175
  483. package/lib/goog/useragent/product_isversion.js +0 -143
  484. package/lib/goog/useragent/useragent.js +0 -538
  485. package/lib/webdriver/actionsequence.js +0 -356
  486. package/lib/webdriver/builder.js +0 -208
  487. package/lib/webdriver/capabilities.js +0 -411
  488. package/lib/webdriver/events.js +0 -179
  489. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  490. package/lib/webdriver/http/corsclient.js +0 -133
  491. package/lib/webdriver/http/http.js +0 -523
  492. package/lib/webdriver/http/xhrclient.js +0 -67
  493. package/lib/webdriver/locators.js +0 -257
  494. package/lib/webdriver/logging.js +0 -347
  495. package/lib/webdriver/promise.js +0 -2609
  496. package/lib/webdriver/serializable.js +0 -41
  497. package/lib/webdriver/session.js +0 -74
  498. package/lib/webdriver/stacktrace.js +0 -619
  499. package/lib/webdriver/test/builder_test.js +0 -53
  500. package/lib/webdriver/test/capabilities_test.js +0 -72
  501. package/lib/webdriver/test/events_test.js +0 -203
  502. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  503. package/lib/webdriver/test/http/http_test.js +0 -428
  504. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  505. package/lib/webdriver/test/locators_test.js +0 -59
  506. package/lib/webdriver/test/logging_test.js +0 -85
  507. package/lib/webdriver/test/promise_error_test.js +0 -719
  508. package/lib/webdriver/test/promise_flow_test.js +0 -1957
  509. package/lib/webdriver/test/promise_generator_test.js +0 -251
  510. package/lib/webdriver/test/promise_test.js +0 -1981
  511. package/lib/webdriver/test/stacktrace_test.js +0 -480
  512. package/lib/webdriver/test/test_bootstrap.js +0 -67
  513. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  514. package/lib/webdriver/test/testing/client_test.js +0 -88
  515. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  516. package/lib/webdriver/test/testutil.js +0 -209
  517. package/lib/webdriver/test/testutil_test.js +0 -104
  518. package/lib/webdriver/test/until_test.js +0 -411
  519. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  520. package/lib/webdriver/test/webdriver_test.js +0 -2369
  521. package/lib/webdriver/testing/asserts.js +0 -487
  522. package/lib/webdriver/testing/client.js +0 -179
  523. package/lib/webdriver/testing/jsunit.js +0 -363
  524. package/lib/webdriver/testing/testcase.js +0 -168
  525. package/lib/webdriver/testing/window.js +0 -244
  526. package/lib/webdriver/touchsequence.js +0 -248
  527. package/lib/webdriver/until.js +0 -412
  528. package/lib/webdriver/webdriver.js +0 -2492
  529. package/test/_base_test.js +0 -129
@@ -19,80 +19,67 @@
19
19
  * @fileoverview Contains several classes for handling commands.
20
20
  */
21
21
 
22
- goog.provide('webdriver.Command');
23
- goog.provide('webdriver.CommandExecutor');
24
- goog.provide('webdriver.CommandName');
22
+ 'use strict';
25
23
 
24
+ const promise = require('./promise');
26
25
 
27
26
 
28
27
  /**
29
- * Describes a command to be executed by the WebDriverJS framework.
30
- * @param {!webdriver.CommandName} name The name of this command.
31
- * @constructor
28
+ * Describes a command to execute.
29
+ * @final
32
30
  */
33
- webdriver.Command = function(name) {
31
+ class Command {
32
+ /** @param {string} name The name of this command. */
33
+ constructor(name) {
34
+ /** @private {string} */
35
+ this.name_ = name;
36
+
37
+ /** @private {!Object<*>} */
38
+ this.parameters_ = {};
39
+ }
40
+
41
+ /** @return {string} This command's name. */
42
+ getName() {
43
+ return this.name_;
44
+ }
34
45
 
35
46
  /**
36
- * The name of this command.
37
- * @private {!webdriver.CommandName}
47
+ * Sets a parameter to send with this command.
48
+ * @param {string} name The parameter name.
49
+ * @param {*} value The parameter value.
50
+ * @return {!Command} A self reference.
38
51
  */
39
- this.name_ = name;
52
+ setParameter(name, value) {
53
+ this.parameters_[name] = value;
54
+ return this;
55
+ }
40
56
 
41
57
  /**
42
- * The parameters to this command.
43
- * @private {!Object.<*>}
58
+ * Sets the parameters for this command.
59
+ * @param {!Object<*>} parameters The command parameters.
60
+ * @return {!Command} A self reference.
44
61
  */
45
- this.parameters_ = {};
46
- };
47
-
48
-
49
- /**
50
- * @return {!webdriver.CommandName} This command's name.
51
- */
52
- webdriver.Command.prototype.getName = function() {
53
- return this.name_;
54
- };
55
-
56
-
57
- /**
58
- * Sets a parameter to send with this command.
59
- * @param {string} name The parameter name.
60
- * @param {*} value The parameter value.
61
- * @return {!webdriver.Command} A self reference.
62
- */
63
- webdriver.Command.prototype.setParameter = function(name, value) {
64
- this.parameters_[name] = value;
65
- return this;
66
- };
67
-
68
-
69
- /**
70
- * Sets the parameters for this command.
71
- * @param {!Object.<*>} parameters The command parameters.
72
- * @return {!webdriver.Command} A self reference.
73
- */
74
- webdriver.Command.prototype.setParameters = function(parameters) {
75
- this.parameters_ = parameters;
76
- return this;
77
- };
78
-
79
-
80
- /**
81
- * Returns a named command parameter.
82
- * @param {string} key The parameter key to look up.
83
- * @return {*} The parameter value, or undefined if it has not been set.
84
- */
85
- webdriver.Command.prototype.getParameter = function(key) {
86
- return this.parameters_[key];
87
- };
62
+ setParameters(parameters) {
63
+ this.parameters_ = parameters;
64
+ return this;
65
+ }
88
66
 
67
+ /**
68
+ * Returns a named command parameter.
69
+ * @param {string} key The parameter key to look up.
70
+ * @return {*} The parameter value, or undefined if it has not been set.
71
+ */
72
+ getParameter(key) {
73
+ return this.parameters_[key];
74
+ }
89
75
 
90
- /**
91
- * @return {!Object.<*>} The parameters to send with this command.
92
- */
93
- webdriver.Command.prototype.getParameters = function() {
94
- return this.parameters_;
95
- };
76
+ /**
77
+ * @return {!Object<*>} The parameters to send with this command.
78
+ */
79
+ getParameters() {
80
+ return this.parameters_;
81
+ }
82
+ }
96
83
 
97
84
 
98
85
  /**
@@ -101,7 +88,7 @@ webdriver.Command.prototype.getParameters = function() {
101
88
  * @enum {string}
102
89
  */
103
90
  // TODO: Delete obsolete command names.
104
- webdriver.CommandName = {
91
+ const Name = {
105
92
  GET_SERVER_STATUS: 'getStatus',
106
93
 
107
94
  NEW_SESSION: 'newSession',
@@ -163,6 +150,7 @@ webdriver.CommandName = {
163
150
  ELEMENT_EQUALS: 'elementEquals',
164
151
 
165
152
  SCREENSHOT: 'screenshot',
153
+ TAKE_ELEMENT_SCREENSHOT: 'takeElementScreenshot',
166
154
  IMPLICITLY_WAIT: 'implicitlyWait',
167
155
  SET_SCRIPT_TIMEOUT: 'setScriptTimeout',
168
156
  SET_TIMEOUT: 'setTimeout',
@@ -228,19 +216,48 @@ webdriver.CommandName = {
228
216
 
229
217
 
230
218
  /**
231
- * Handles the execution of WebDriver {@link webdriver.Command commands}.
219
+ * Handles the execution of WebDriver {@link Command commands}.
232
220
  * @interface
233
221
  */
234
- webdriver.CommandExecutor = function() {};
222
+ class Executor {
223
+ /**
224
+ * Executes the given {@code command}. If there is an error executing the
225
+ * command, the provided callback will be invoked with the offending error.
226
+ * Otherwise, the callback will be invoked with a null Error and non-null
227
+ * response object.
228
+ *
229
+ * @param {!Command} command The command to execute.
230
+ * @return {!promise.Promise<!Object>} A promise that will be fulfilled with
231
+ * the command result.
232
+ */
233
+ execute(command) {}
234
+ }
235
235
 
236
236
 
237
237
  /**
238
- * Executes the given {@code command}. If there is an error executing the
239
- * command, the provided callback will be invoked with the offending error.
240
- * Otherwise, the callback will be invoked with a null Error and non-null
241
- * {@link bot.response.ResponseObject} object.
242
- * @param {!webdriver.Command} command The command to execute.
243
- * @param {function(Error, !bot.response.ResponseObject=)} callback the function
244
- * to invoke when the command response is ready.
238
+ * Wraps a promised {@link Executor}, ensuring no commands are executed until
239
+ * the wrapped executor has been fully resolved.
240
+ * @implements {Executor}
245
241
  */
246
- webdriver.CommandExecutor.prototype.execute = goog.abstractMethod;
242
+ class DeferredExecutor {
243
+ /**
244
+ * @param {!promise.Promise<Executor>} delegate The promised delegate, which
245
+ * may be provided by any promise-like thenable object.
246
+ */
247
+ constructor(delegate) {
248
+ /** @override */
249
+ this.execute = function(command) {
250
+ return delegate.then(executor => executor.execute(command));
251
+ };
252
+ }
253
+ }
254
+
255
+
256
+
257
+ // PUBLIC API
258
+
259
+
260
+ exports.Command = Command;
261
+ exports.Name = Name;
262
+ exports.Executor = Executor;
263
+ exports.DeferredExecutor = DeferredExecutor;
@@ -15,15 +15,20 @@
15
15
  // specific language governing permissions and limitations
16
16
  // under the License.
17
17
 
18
- goog.provide('webdriver.Button');
18
+ /**
19
+ * @fileoverview Module used to detect if scripts are loaded from the Selenium
20
+ * project repo instead of from a deployed package.
21
+ */
22
+
23
+ 'use strict';
19
24
 
25
+ const fs = require('fs');
26
+ const path = require('path');
20
27
 
21
28
  /**
22
- * Enumeration of the buttons used in the advanced interactions API.
23
- * @enum {number}
29
+ * @const {boolean}
24
30
  */
25
- webdriver.Button = {
26
- LEFT: 0,
27
- MIDDLE: 1,
28
- RIGHT: 2
29
- };
31
+ module.exports = (function() {
32
+ let buildDescFile = path.join(__dirname, '..', '..', 'build.desc');
33
+ return fs.existsSync(buildDescFile);
34
+ })();
package/lib/events.js ADDED
@@ -0,0 +1,210 @@
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
+ 'use strict';
19
+
20
+ /**
21
+ * Describes an event listener registered on an {@linkplain EventEmitter}.
22
+ */
23
+ class Listener {
24
+ /**
25
+ * @param {!Function} fn The acutal listener function.
26
+ * @param {(Object|undefined)} scope The object in whose scope to invoke the
27
+ * listener.
28
+ * @param {boolean} oneshot Whether this listener should only be used once.
29
+ */
30
+ constructor(fn, scope, oneshot) {
31
+ Object.defineProperties(this, {
32
+ fn: {value: fn},
33
+ scope: {value: scope},
34
+ oneshot: {value: oneshot}
35
+ });
36
+ }
37
+ }
38
+
39
+
40
+ /** @type {!WeakMap<!EventEmitter, !Map<string, !Set<!Listener>>>} */
41
+ const EVENTS = new WeakMap;
42
+
43
+
44
+ /**
45
+ * Object that can emit events for others to listen for.
46
+ */
47
+ class EventEmitter {
48
+ /**
49
+ * Fires an event and calls all listeners.
50
+ * @param {string} type The type of event to emit.
51
+ * @param {...*} var_args Any arguments to pass to each listener.
52
+ */
53
+ emit(type, var_args) {
54
+ let events = EVENTS.get(this);
55
+ if (!events) {
56
+ return;
57
+ }
58
+
59
+ let args = Array.prototype.slice.call(arguments, 1);
60
+
61
+ let listeners = events.get(type);
62
+ if (listeners) {
63
+ for (let listener of listeners) {
64
+ listener.fn.apply(listener.scope, args);
65
+ if (listener.oneshot) {
66
+ listeners.delete(listener);
67
+ }
68
+ }
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Returns a mutable list of listeners for a specific type of event.
74
+ * @param {string} type The type of event to retrieve the listeners for.
75
+ * @return {!Set<!Listener>} The registered listeners for the given event
76
+ * type.
77
+ */
78
+ listeners(type) {
79
+ let events = EVENTS.get(this);
80
+ if (!events) {
81
+ events = new Map;
82
+ EVENTS.set(this, events);
83
+ }
84
+
85
+ let listeners = events.get(type);
86
+ if (!listeners) {
87
+ listeners = new Set;
88
+ events.set(type, listeners);
89
+ }
90
+ return listeners;
91
+ }
92
+
93
+ /**
94
+ * Registers a listener.
95
+ * @param {string} type The type of event to listen for.
96
+ * @param {!Function} fn The function to invoke when the event is fired.
97
+ * @param {Object=} opt_self The object in whose scope to invoke the listener.
98
+ * @param {boolean=} opt_oneshot Whether the listener should b (e removed after
99
+ * the first event is fired.
100
+ * @return {!EventEmitter} A self reference.
101
+ * @private
102
+ */
103
+ addListener_(type, fn, opt_self, opt_oneshot) {
104
+ let listeners = this.listeners(type);
105
+ for (let listener of listeners) {
106
+ if (listener.fn === fn) {
107
+ return this;
108
+ }
109
+ }
110
+ listeners.add(new Listener(fn, opt_self || undefined, !!opt_oneshot));
111
+ return this;
112
+ }
113
+
114
+ /**
115
+ * Registers a listener.
116
+ * @param {string} type The type of event to listen for.
117
+ * @param {!Function} fn The function to invoke when the event is fired.
118
+ * @param {Object=} opt_self The object in whose scope to invoke the listener.
119
+ * @return {!EventEmitter} A self reference.
120
+ */
121
+ addListener(type, fn, opt_self) {
122
+ return this.addListener_(type, fn, opt_self, false);
123
+ }
124
+
125
+ /**
126
+ * Registers a one-time listener which will be called only the first time an
127
+ * event is emitted, after which it will be removed.
128
+ * @param {string} type The type of event to listen for.
129
+ * @param {!Function} fn The function to invoke when the event is fired.
130
+ * @param {Object=} opt_self The object in whose scope to invoke the listener.
131
+ * @return {!EventEmitter} A self reference.
132
+ */
133
+ once(type, fn, opt_self) {
134
+ return this.addListener_(type, fn, opt_self, true);
135
+ }
136
+
137
+ /**
138
+ * An alias for {@link #addListener() addListener()}.
139
+ * @param {string} type The type of event to listen for.
140
+ * @param {!Function} fn The function to invoke when the event is fired.
141
+ * @param {Object=} opt_self The object in whose scope to invoke the listener.
142
+ * @return {!EventEmitter} A self reference.
143
+ */
144
+ on(type, fn, opt_self) {
145
+ return this.addListener(type, fn, opt_self);
146
+ }
147
+
148
+ /**
149
+ * Removes a previously registered event listener.
150
+ * @param {string} type The type of event to unregister.
151
+ * @param {!Function} listenerFn The handler function to remove.
152
+ * @return {!EventEmitter} A self reference.
153
+ */
154
+ removeListener(type, listenerFn) {
155
+ if (typeof type !== 'string' || typeof listenerFn !== 'function') {
156
+ throw TypeError('invalid args: expected (string, function), got ('
157
+ + (typeof type) + ', ' + (typeof listenerFn) + ')');
158
+ }
159
+
160
+ let events = EVENTS.get(this);
161
+ if (!events) {
162
+ return this;
163
+ }
164
+
165
+ let listeners = events.get(type);
166
+ if (!listeners) {
167
+ return this;
168
+ }
169
+
170
+ let match;
171
+ for (let listener of listeners) {
172
+ if (listener.fn === listenerFn) {
173
+ match = listener;
174
+ break;
175
+ }
176
+ }
177
+ if (match) {
178
+ listeners.delete(match);
179
+ if (!listeners.size) {
180
+ events.delete(type);
181
+ }
182
+ }
183
+ return this;
184
+ }
185
+
186
+ /**
187
+ * Removes all listeners for a specific type of event. If no event is
188
+ * specified, all listeners across all types will be removed.
189
+ * @param {string=} opt_type The type of event to remove listeners from.
190
+ * @return {!EventEmitter} A self reference.
191
+ */
192
+ removeAllListeners(opt_type) {
193
+ let events = EVENTS.get(this);
194
+ if (events) {
195
+ if (typeof opt_type === 'string') {
196
+ events.delete(opt_type);
197
+ } else {
198
+ EVENTS.delete(this);
199
+ }
200
+ }
201
+ return this;
202
+ }
203
+ }
204
+
205
+
206
+ // PUBLIC API
207
+
208
+
209
+ exports.EventEmitter = EventEmitter;
210
+ exports.Listener = Listener;
Binary file
Binary file
@@ -28,6 +28,7 @@
28
28
  "dom.disable_open_during_load": false,
29
29
  "extensions.autoDisableScopes": 10,
30
30
  "extensions.blocklist.enabled": false,
31
+ "extensions.checkCompatibility.nightly": false,
31
32
  "extensions.logging.enabled": true,
32
33
  "extensions.update.enabled": false,
33
34
  "extensions.update.notifyUser": false,
@@ -53,20 +54,24 @@
53
54
  "toolkit.telemetry.prompted": 2,
54
55
  "toolkit.telemetry.enabled": false,
55
56
  "toolkit.telemetry.rejected": true,
56
- "xpinstall.signatures.required": false
57
+ "xpinstall.signatures.required": false,
58
+ "xpinstall.whitelist.required": false
57
59
  },
58
60
  "mutable": {
59
61
  "browser.dom.window.dump.enabled": true,
62
+ "browser.laterrun.enabled": false,
60
63
  "browser.newtab.url": "about:blank",
61
64
  "browser.newtabpage.enabled": false,
62
65
  "browser.startup.page": 0,
63
66
  "browser.startup.homepage": "about:blank",
67
+ "browser.usedOnWindows10.introURL": "about:blank",
64
68
  "dom.max_chrome_script_run_time": 30,
65
69
  "dom.max_script_run_time": 30,
66
70
  "dom.report_all_js_exceptions": true,
67
71
  "javascript.options.showInConsole": true,
68
72
  "network.http.max-connections-per-server": 10,
69
73
  "startup.homepage_welcome_url": "about:blank",
74
+ "startup.homepage_welcome_url.additional": "about:blank",
70
75
  "webdriver_accept_untrusted_certs": true,
71
76
  "webdriver_assume_untrusted_issuer": true
72
77
  }
Binary file
@@ -15,7 +15,25 @@
15
15
  // specific language governing permissions and limitations
16
16
  // under the License.
17
17
 
18
- goog.provide('webdriver.Key');
18
+ 'use strict';
19
+
20
+ /**
21
+ * @fileoverview Defines types related to user input with the WebDriver API.
22
+ */
23
+
24
+ const promise = require('./promise');
25
+
26
+
27
+ /**
28
+ * Enumeration of the buttons used in the advanced interactions API.
29
+ * @enum {number}
30
+ */
31
+ const Button = {
32
+ LEFT: 0,
33
+ MIDDLE: 1,
34
+ RIGHT: 2
35
+ };
36
+
19
37
 
20
38
 
21
39
  /**
@@ -25,7 +43,7 @@ goog.provide('webdriver.Key');
25
43
  *
26
44
  * @enum {string}
27
45
  */
28
- webdriver.Key = {
46
+ const Key = {
29
47
  NULL: '\uE000',
30
48
  CANCEL: '\uE001', // ^break
31
49
  HELP: '\uE002',
@@ -90,3 +108,65 @@ webdriver.Key = {
90
108
  COMMAND: '\uE03D', // Apple command key
91
109
  META: '\uE03D' // alias for Windows key
92
110
  };
111
+
112
+
113
+ /**
114
+ * Simulate pressing many keys at once in a "chord". Takes a sequence of
115
+ * {@linkplain Key keys} or strings, appends each of the values to a string,
116
+ * adds the chord termination key ({@link Key.NULL}) and returns the resulting
117
+ * string.
118
+ *
119
+ * Note: when the low-level webdriver key handlers see Keys.NULL, active
120
+ * modifier keys (CTRL/ALT/SHIFT/etc) release via a keyup event.
121
+ *
122
+ * @param {...string} var_args The key sequence to concatenate.
123
+ * @return {string} The null-terminated key sequence.
124
+ */
125
+ Key.chord = function(var_args) {
126
+ return Array.prototype.slice.call(arguments, 0).join('') + Key.NULL;
127
+ };
128
+
129
+
130
+ /**
131
+ * Used with {@link ./webelement.WebElement#sendKeys WebElement#sendKeys} on
132
+ * file input elements (`<input type="file">`) to detect when the entered key
133
+ * sequence defines the path to a file.
134
+ *
135
+ * By default, {@linkplain ./webelement.WebElement WebElement's} will enter all
136
+ * key sequences exactly as entered. You may set a
137
+ * {@linkplain ./webdriver.WebDriver#setFileDetector file detector} on the
138
+ * parent WebDriver instance to define custom behavior for handling file
139
+ * elements. Of particular note is the
140
+ * {@link selenium-webdriver/remote.FileDetector}, which should be used when
141
+ * running against a remote
142
+ * [Selenium Server](http://docs.seleniumhq.org/download/).
143
+ */
144
+ class FileDetector {
145
+
146
+ /**
147
+ * Handles the file specified by the given path, preparing it for use with
148
+ * the current browser. If the path does not refer to a valid file, it will
149
+ * be returned unchanged, otherwisee a path suitable for use with the current
150
+ * browser will be returned.
151
+ *
152
+ * This default implementation is a no-op. Subtypes may override this function
153
+ * for custom tailored file handling.
154
+ *
155
+ * @param {!./webdriver.WebDriver} driver The driver for the current browser.
156
+ * @param {string} path The path to process.
157
+ * @return {!./promise.Promise<string>} A promise for the processed file
158
+ * path.
159
+ * @package
160
+ */
161
+ handleFile(driver, path) {
162
+ return promise.fulfilled(path);
163
+ }
164
+ }
165
+
166
+
167
+ // PUBLIC API
168
+
169
+
170
+ exports.Button = Button;
171
+ exports.Key = Key;
172
+ exports.FileDetector = FileDetector;