selenium-webdriver 2.48.2 → 2.53.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/CHANGES.md +116 -0
  2. package/NOTICE +1 -1
  3. package/README.md +59 -9
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +9 -6
  8. package/example/google_search.js +1 -1
  9. package/example/google_search_generator.js +2 -4
  10. package/example/logging.js +6 -2
  11. package/example/sample.js +21 -0
  12. package/executors.js +11 -27
  13. package/firefox/binary.js +149 -98
  14. package/firefox/extension.js +15 -19
  15. package/firefox/index.js +256 -163
  16. package/firefox/profile.js +223 -243
  17. package/http/index.js +487 -81
  18. package/http/util.js +40 -36
  19. package/ie.js +288 -309
  20. package/index.js +34 -125
  21. package/io/exec.js +58 -39
  22. package/io/index.js +72 -60
  23. package/lib/README +4 -0
  24. package/lib/actions.js +596 -0
  25. package/lib/by.js +277 -0
  26. package/lib/capabilities.js +450 -0
  27. package/lib/{webdriver/command.js → command.js} +91 -72
  28. package/lib/{webdriver/button.js → devmode.js} +13 -8
  29. package/lib/error.js +690 -0
  30. package/lib/events.js +212 -0
  31. package/lib/firefox/amd64/libnoblur64.so +0 -0
  32. package/lib/firefox/i386/libnoblur.so +0 -0
  33. package/lib/firefox/webdriver.json +5 -1
  34. package/lib/firefox/webdriver.xpi +0 -0
  35. package/lib/{webdriver/key.js → input.js} +84 -2
  36. package/lib/logging.js +670 -0
  37. package/lib/{webdriver/promise.js → promise.js} +817 -644
  38. package/lib/safari/client.js +266 -214
  39. package/lib/session.js +80 -0
  40. package/lib/{webdriver/serializable.js → symbols.js} +16 -19
  41. package/lib/test/build.js +4 -4
  42. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  43. package/lib/test/data/click_tests/overlapping_elements.html +15 -4
  44. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  45. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  46. package/lib/test/data/hidden_partially.html +45 -0
  47. package/lib/test/data/readOnlyPage.html +1 -1
  48. package/lib/test/data/selectPage.html +18 -2
  49. package/lib/test/fileserver.js +3 -4
  50. package/lib/test/index.js +7 -3
  51. package/lib/test/resources.js +1 -1
  52. package/lib/until.js +376 -0
  53. package/lib/webdriver.js +2440 -0
  54. package/net/index.js +4 -0
  55. package/net/portprober.js +16 -12
  56. package/opera.js +295 -314
  57. package/package.json +6 -5
  58. package/phantomjs.js +144 -147
  59. package/proxy.js +10 -6
  60. package/remote/index.js +289 -238
  61. package/safari.js +326 -311
  62. package/test/chrome/options_test.js +11 -9
  63. package/test/element_finding_test.js +51 -13
  64. package/test/execute_script_test.js +17 -3
  65. package/test/firefox/firefox_test.js +0 -32
  66. package/test/http/http_test.js +671 -61
  67. package/test/http/util_test.js +25 -23
  68. package/test/io_test.js +67 -1
  69. package/test/lib/by_test.js +139 -0
  70. package/test/lib/capabilities_test.js +111 -0
  71. package/test/lib/error_test.js +325 -0
  72. package/test/lib/events_test.js +177 -0
  73. package/test/lib/logging_test.js +272 -0
  74. package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
  75. package/test/lib/promise_error_test.js +808 -0
  76. package/test/lib/promise_flow_test.js +2282 -0
  77. package/test/lib/promise_generator_test.js +308 -0
  78. package/test/lib/promise_test.js +996 -0
  79. package/test/lib/testutil.js +90 -0
  80. package/test/lib/until_test.js +400 -0
  81. package/test/lib/webdriver_test.js +2157 -0
  82. package/test/page_loading_test.js +7 -9
  83. package/test/remote_test.js +50 -3
  84. package/test/session_test.js +53 -0
  85. package/test/stale_element_test.js +2 -2
  86. package/test/testing/assert_test.js +374 -0
  87. package/test/testing/index_test.js +9 -11
  88. package/testing/assert.js +334 -17
  89. package/testing/index.js +12 -2
  90. package/_base.js +0 -200
  91. package/docs/Changes.html +0 -356
  92. package/docs/class_bot_Error.html +0 -15
  93. package/docs/class_webdriver_ActionSequence.html +0 -115
  94. package/docs/class_webdriver_Alert.html +0 -24
  95. package/docs/class_webdriver_AlertPromise.html +0 -92
  96. package/docs/class_webdriver_Capabilities.html +0 -60
  97. package/docs/class_webdriver_Command.html +0 -15
  98. package/docs/class_webdriver_EventEmitter.html +0 -35
  99. package/docs/class_webdriver_FileDetector.html +0 -21
  100. package/docs/class_webdriver_Locator.html +0 -12
  101. package/docs/class_webdriver_Serializable.html +0 -9
  102. package/docs/class_webdriver_Session.html +0 -13
  103. package/docs/class_webdriver_TouchSequence.html +0 -49
  104. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  105. package/docs/class_webdriver_WebDriver.html +0 -313
  106. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  107. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  108. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  109. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  110. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  111. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  112. package/docs/class_webdriver_WebElement.html +0 -223
  113. package/docs/class_webdriver_WebElementPromise.html +0 -274
  114. package/docs/class_webdriver_http_Executor.html +0 -22
  115. package/docs/class_webdriver_http_Request.html +0 -12
  116. package/docs/class_webdriver_http_Response.html +0 -13
  117. package/docs/class_webdriver_logging_Entry.html +0 -15
  118. package/docs/class_webdriver_logging_Level.html +0 -55
  119. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  120. package/docs/class_webdriver_logging_Logger.html +0 -119
  121. package/docs/class_webdriver_logging_Preferences.html +0 -8
  122. package/docs/class_webdriver_promise_CancellationError.html +0 -17
  123. package/docs/class_webdriver_promise_ControlFlow.html +0 -153
  124. package/docs/class_webdriver_promise_Deferred.html +0 -84
  125. package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
  126. package/docs/class_webdriver_promise_Promise.html +0 -75
  127. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  128. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  129. package/docs/class_webdriver_testing_Assertion.html +0 -99
  130. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  131. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  132. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  133. package/docs/class_webdriver_until_Condition.html +0 -7
  134. package/docs/dossier.css +0 -1
  135. package/docs/dossier.js +0 -86
  136. package/docs/enum_bot_ErrorCode.html +0 -3
  137. package/docs/enum_bot_Error_State.html +0 -2
  138. package/docs/enum_webdriver_Browser.html +0 -2
  139. package/docs/enum_webdriver_Button.html +0 -2
  140. package/docs/enum_webdriver_Capability.html +0 -33
  141. package/docs/enum_webdriver_CommandName.html +0 -3
  142. package/docs/enum_webdriver_Key.html +0 -12
  143. package/docs/enum_webdriver_logging_Type.html +0 -6
  144. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  145. package/docs/index.html +0 -125
  146. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  147. package/docs/interface_webdriver_http_Client.html +0 -10
  148. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  149. package/docs/module_selenium-webdriver.html +0 -23
  150. package/docs/module_selenium-webdriver__base.html +0 -23
  151. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  152. package/docs/module_selenium-webdriver_builder.html +0 -2
  153. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  154. package/docs/module_selenium-webdriver_chrome.html +0 -90
  155. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  156. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  157. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  158. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  159. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  160. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  161. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  162. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  163. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  164. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  165. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  166. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  167. package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
  168. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
  169. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  170. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  171. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  172. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  173. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  174. package/docs/module_selenium-webdriver_error.html +0 -4
  175. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  176. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  177. package/docs/module_selenium-webdriver_executors.html +0 -10
  178. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  179. package/docs/module_selenium-webdriver_firefox.html +0 -68
  180. package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
  181. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
  182. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
  183. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  184. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  185. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  186. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  187. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  188. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  189. package/docs/module_selenium-webdriver_http.html +0 -9
  190. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  191. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  192. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  193. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  194. package/docs/module_selenium-webdriver_http_util.html +0 -17
  195. package/docs/module_selenium-webdriver_ie.html +0 -11
  196. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  197. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  198. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  199. package/docs/module_selenium-webdriver_io.html +0 -37
  200. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  201. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  202. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  203. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  204. package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
  205. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  206. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  207. package/docs/module_selenium-webdriver_net.html +0 -7
  208. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  209. package/docs/module_selenium-webdriver_opera.html +0 -62
  210. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  211. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  212. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  213. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  214. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  215. package/docs/module_selenium-webdriver_proxy.html +0 -28
  216. package/docs/module_selenium-webdriver_remote.html +0 -8
  217. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  218. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  219. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
  220. package/docs/module_selenium-webdriver_safari.html +0 -9
  221. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  222. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  223. package/docs/module_selenium-webdriver_testing.html +0 -74
  224. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  225. package/docs/namespace_bot.html +0 -4
  226. package/docs/namespace_bot_json.html +0 -20
  227. package/docs/namespace_bot_response.html +0 -18
  228. package/docs/namespace_bot_userAgent.html +0 -33
  229. package/docs/namespace_webdriver.html +0 -30
  230. package/docs/namespace_webdriver_By.html +0 -56
  231. package/docs/namespace_webdriver_http.html +0 -6
  232. package/docs/namespace_webdriver_logging.html +0 -70
  233. package/docs/namespace_webdriver_promise.html +0 -688
  234. package/docs/namespace_webdriver_stacktrace.html +0 -17
  235. package/docs/namespace_webdriver_testing.html +0 -7
  236. package/docs/namespace_webdriver_testing_assert.html +0 -9
  237. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  238. package/docs/namespace_webdriver_until.html +0 -82
  239. package/docs/source/_base.js.src.html +0 -1
  240. package/docs/source/builder.js.src.html +0 -1
  241. package/docs/source/chrome.js.src.html +0 -1
  242. package/docs/source/error.js.src.html +0 -1
  243. package/docs/source/executors.js.src.html +0 -1
  244. package/docs/source/firefox/binary.js.src.html +0 -1
  245. package/docs/source/firefox/extension.js.src.html +0 -1
  246. package/docs/source/firefox/index.js.src.html +0 -1
  247. package/docs/source/firefox/profile.js.src.html +0 -1
  248. package/docs/source/http/index.js.src.html +0 -1
  249. package/docs/source/http/util.js.src.html +0 -1
  250. package/docs/source/ie.js.src.html +0 -1
  251. package/docs/source/index.js.src.html +0 -1
  252. package/docs/source/io/exec.js.src.html +0 -1
  253. package/docs/source/io/index.js.src.html +0 -1
  254. package/docs/source/lib/atoms/error.js.src.html +0 -1
  255. package/docs/source/lib/atoms/json.js.src.html +0 -1
  256. package/docs/source/lib/atoms/response.js.src.html +0 -1
  257. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  258. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  259. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  260. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  261. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  262. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  263. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  264. package/docs/source/lib/goog/base.js.src.html +0 -1
  265. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  266. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  267. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  268. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  269. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  270. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  271. package/docs/source/lib/goog/deps.js.src.html +0 -1
  272. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  273. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  274. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  275. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  276. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  277. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  278. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  279. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  280. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  285. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  286. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  287. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  288. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  289. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  290. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  291. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  292. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  293. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  294. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  295. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  296. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  297. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  298. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  299. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  300. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  301. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  302. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  303. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  307. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  308. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  309. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  310. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  311. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  312. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  313. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  314. package/docs/source/lib/goog/log/log.js.src.html +0 -1
  315. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  316. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  317. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  318. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  319. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  320. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  321. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  322. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  323. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  324. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  325. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  326. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  327. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  328. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  329. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  330. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  331. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  332. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  333. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  334. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  335. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  336. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  348. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  349. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  350. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  351. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  352. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  353. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  354. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  355. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  356. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  357. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  358. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  369. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  370. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  371. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  372. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  373. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  374. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  375. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  376. package/docs/source/net/index.js.src.html +0 -1
  377. package/docs/source/net/portprober.js.src.html +0 -1
  378. package/docs/source/opera.js.src.html +0 -1
  379. package/docs/source/phantomjs.js.src.html +0 -1
  380. package/docs/source/proxy.js.src.html +0 -1
  381. package/docs/source/remote/index.js.src.html +0 -1
  382. package/docs/source/safari.js.src.html +0 -1
  383. package/docs/source/testing/assert.js.src.html +0 -1
  384. package/docs/source/testing/index.js.src.html +0 -1
  385. package/docs/types.js +0 -1
  386. package/lib/atoms/error.js +0 -202
  387. package/lib/atoms/json.js +0 -80
  388. package/lib/atoms/response.js +0 -110
  389. package/lib/atoms/userAgent.js +0 -257
  390. package/lib/goog/LICENSE +0 -176
  391. package/lib/goog/array/array.js +0 -1654
  392. package/lib/goog/asserts/asserts.js +0 -365
  393. package/lib/goog/async/freelist.js +0 -88
  394. package/lib/goog/async/nexttick.js +0 -241
  395. package/lib/goog/async/run.js +0 -133
  396. package/lib/goog/async/workqueue.js +0 -139
  397. package/lib/goog/base.js +0 -2548
  398. package/lib/goog/debug/debug.js +0 -653
  399. package/lib/goog/debug/entrypointregistry.js +0 -158
  400. package/lib/goog/debug/error.js +0 -63
  401. package/lib/goog/debug/logbuffer.js +0 -148
  402. package/lib/goog/debug/logger.js +0 -873
  403. package/lib/goog/debug/logrecord.js +0 -242
  404. package/lib/goog/deps.js +0 -151
  405. package/lib/goog/disposable/disposable.js +0 -307
  406. package/lib/goog/disposable/idisposable.js +0 -45
  407. package/lib/goog/dom/browserfeature.js +0 -72
  408. package/lib/goog/dom/dom.js +0 -2991
  409. package/lib/goog/dom/nodetype.js +0 -48
  410. package/lib/goog/dom/safe.js +0 -347
  411. package/lib/goog/dom/tagname.js +0 -160
  412. package/lib/goog/dom/tags.js +0 -41
  413. package/lib/goog/dom/vendor.js +0 -96
  414. package/lib/goog/events/browserevent.js +0 -400
  415. package/lib/goog/events/browserfeature.js +0 -85
  416. package/lib/goog/events/event.js +0 -143
  417. package/lib/goog/events/eventid.js +0 -47
  418. package/lib/goog/events/events.js +0 -984
  419. package/lib/goog/events/eventtarget.js +0 -394
  420. package/lib/goog/events/eventtype.js +0 -237
  421. package/lib/goog/events/keycodes.js +0 -427
  422. package/lib/goog/events/listenable.js +0 -335
  423. package/lib/goog/events/listener.js +0 -131
  424. package/lib/goog/events/listenermap.js +0 -308
  425. package/lib/goog/fs/url.js +0 -109
  426. package/lib/goog/functions/functions.js +0 -442
  427. package/lib/goog/html/safehtml.js +0 -757
  428. package/lib/goog/html/safescript.js +0 -234
  429. package/lib/goog/html/safestyle.js +0 -442
  430. package/lib/goog/html/safestylesheet.js +0 -276
  431. package/lib/goog/html/safeurl.js +0 -398
  432. package/lib/goog/html/trustedresourceurl.js +0 -224
  433. package/lib/goog/html/uncheckedconversions.js +0 -232
  434. package/lib/goog/i18n/bidi.js +0 -908
  435. package/lib/goog/iter/iter.js +0 -1302
  436. package/lib/goog/json/json.js +0 -363
  437. package/lib/goog/labs/testing/assertthat.js +0 -58
  438. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  439. package/lib/goog/labs/testing/matcher.js +0 -80
  440. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  441. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  442. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  443. package/lib/goog/labs/useragent/browser.js +0 -341
  444. package/lib/goog/labs/useragent/engine.js +0 -160
  445. package/lib/goog/labs/useragent/platform.js +0 -160
  446. package/lib/goog/labs/useragent/util.js +0 -148
  447. package/lib/goog/log/log.js +0 -197
  448. package/lib/goog/math/box.js +0 -398
  449. package/lib/goog/math/coordinate.js +0 -268
  450. package/lib/goog/math/math.js +0 -451
  451. package/lib/goog/math/rect.js +0 -476
  452. package/lib/goog/math/size.js +0 -227
  453. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  454. package/lib/goog/net/xhrlike.js +0 -124
  455. package/lib/goog/net/xmlhttp.js +0 -246
  456. package/lib/goog/net/xmlhttpfactory.js +0 -67
  457. package/lib/goog/object/object.js +0 -686
  458. package/lib/goog/promise/promise.js +0 -1350
  459. package/lib/goog/promise/resolver.js +0 -48
  460. package/lib/goog/promise/thenable.js +0 -126
  461. package/lib/goog/reflect/reflect.js +0 -77
  462. package/lib/goog/string/const.js +0 -182
  463. package/lib/goog/string/string.js +0 -1599
  464. package/lib/goog/string/typedstring.js +0 -48
  465. package/lib/goog/structs/collection.js +0 -56
  466. package/lib/goog/structs/map.js +0 -457
  467. package/lib/goog/structs/set.js +0 -279
  468. package/lib/goog/structs/structs.js +0 -354
  469. package/lib/goog/style/style.js +0 -2037
  470. package/lib/goog/testing/asserts.js +0 -1278
  471. package/lib/goog/testing/events/events.js +0 -767
  472. package/lib/goog/testing/functionmock.js +0 -175
  473. package/lib/goog/testing/jsunit.js +0 -162
  474. package/lib/goog/testing/loosemock.js +0 -242
  475. package/lib/goog/testing/mock.js +0 -645
  476. package/lib/goog/testing/mockclock.js +0 -606
  477. package/lib/goog/testing/mockcontrol.js +0 -220
  478. package/lib/goog/testing/mockinterface.js +0 -45
  479. package/lib/goog/testing/mockmatchers.js +0 -400
  480. package/lib/goog/testing/objectpropertystring.js +0 -68
  481. package/lib/goog/testing/propertyreplacer.js +0 -262
  482. package/lib/goog/testing/recordfunction.js +0 -215
  483. package/lib/goog/testing/stacktrace.js +0 -594
  484. package/lib/goog/testing/strictmock.js +0 -130
  485. package/lib/goog/testing/testcase.js +0 -1629
  486. package/lib/goog/testing/testrunner.js +0 -440
  487. package/lib/goog/uri/uri.js +0 -1524
  488. package/lib/goog/uri/utils.js +0 -1064
  489. package/lib/goog/useragent/product.js +0 -183
  490. package/lib/goog/useragent/product_isversion.js +0 -144
  491. package/lib/goog/useragent/useragent.js +0 -572
  492. package/lib/webdriver/actionsequence.js +0 -356
  493. package/lib/webdriver/builder.js +0 -207
  494. package/lib/webdriver/capabilities.js +0 -412
  495. package/lib/webdriver/events.js +0 -179
  496. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  497. package/lib/webdriver/http/corsclient.js +0 -133
  498. package/lib/webdriver/http/http.js +0 -525
  499. package/lib/webdriver/http/xhrclient.js +0 -67
  500. package/lib/webdriver/locators.js +0 -257
  501. package/lib/webdriver/logging.js +0 -347
  502. package/lib/webdriver/session.js +0 -74
  503. package/lib/webdriver/stacktrace.js +0 -619
  504. package/lib/webdriver/test/builder_test.js +0 -53
  505. package/lib/webdriver/test/capabilities_test.js +0 -72
  506. package/lib/webdriver/test/events_test.js +0 -203
  507. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  508. package/lib/webdriver/test/http/http_test.js +0 -428
  509. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  510. package/lib/webdriver/test/locators_test.js +0 -59
  511. package/lib/webdriver/test/logging_test.js +0 -85
  512. package/lib/webdriver/test/promise_error_test.js +0 -892
  513. package/lib/webdriver/test/promise_flow_test.js +0 -2365
  514. package/lib/webdriver/test/promise_generator_test.js +0 -323
  515. package/lib/webdriver/test/promise_test.js +0 -2012
  516. package/lib/webdriver/test/stacktrace_test.js +0 -480
  517. package/lib/webdriver/test/test_bootstrap.js +0 -67
  518. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  519. package/lib/webdriver/test/testing/client_test.js +0 -88
  520. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  521. package/lib/webdriver/test/testutil.js +0 -209
  522. package/lib/webdriver/test/testutil_test.js +0 -104
  523. package/lib/webdriver/test/until_test.js +0 -411
  524. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  525. package/lib/webdriver/test/webdriver_test.js +0 -2369
  526. package/lib/webdriver/testing/asserts.js +0 -487
  527. package/lib/webdriver/testing/client.js +0 -179
  528. package/lib/webdriver/testing/jsunit.js +0 -363
  529. package/lib/webdriver/testing/testcase.js +0 -168
  530. package/lib/webdriver/testing/window.js +0 -244
  531. package/lib/webdriver/touchsequence.js +0 -248
  532. package/lib/webdriver/until.js +0 -412
  533. package/lib/webdriver/webdriver.js +0 -2511
  534. package/test/_base_test.js +0 -129
package/ie.js CHANGED
@@ -27,21 +27,19 @@
27
27
 
28
28
  'use strict';
29
29
 
30
- var fs = require('fs'),
30
+ const fs = require('fs'),
31
31
  util = require('util');
32
32
 
33
- var webdriver = require('./index'),
34
- executors = require('./executors'),
33
+ const executors = require('./executors'),
35
34
  io = require('./io'),
35
+ capabilities = require('./lib/capabilities'),
36
+ promise = require('./lib/promise'),
37
+ webdriver = require('./lib/webdriver'),
36
38
  portprober = require('./net/portprober'),
37
39
  remote = require('./remote');
38
40
 
39
41
 
40
- /**
41
- * @const
42
- * @final
43
- */
44
- var IEDRIVER_EXE = 'IEDriverServer.exe';
42
+ const IEDRIVER_EXE = 'IEDriverServer.exe';
45
43
 
46
44
 
47
45
 
@@ -49,7 +47,7 @@ var IEDRIVER_EXE = 'IEDriverServer.exe';
49
47
  * IEDriverServer logging levels.
50
48
  * @enum {string}
51
49
  */
52
- var Level = {
50
+ const Level = {
53
51
  FATAL: 'FATAL',
54
52
  ERROR: 'ERROR',
55
53
  WARN: 'WARN',
@@ -65,7 +63,7 @@ var Level = {
65
63
  * https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities#ie-specific
66
64
  * @enum {string}
67
65
  */
68
- var Key = {
66
+ const Key = {
69
67
  IGNORE_PROTECTED_MODE_SETTINGS: 'ignoreProtectedModeSettings',
70
68
  IGNORE_ZOOM_SETTING: 'ignoreZoomSetting',
71
69
  INITIAL_BROWSER_URL: 'initialBrowserUrl',
@@ -87,290 +85,271 @@ var Key = {
87
85
 
88
86
  /**
89
87
  * Class for managing IEDriver specific options.
90
- * @constructor
91
88
  */
92
- var Options = function() {
93
- /** @private {!Object<(boolean|number|string)>} */
94
- this.options_ = {};
95
-
96
- /** @private {(webdriver.ProxyConfig|null)} */
97
- this.proxy_ = null;
98
- };
99
-
89
+ class Options {
90
+ constructor() {
91
+ /** @private {!Object<(boolean|number|string|!Array<string>)>} */
92
+ this.options_ = {};
100
93
 
94
+ /** @private {(capabilities.ProxyConfig|null)} */
95
+ this.proxy_ = null;
96
+ }
101
97
 
102
- /**
103
- * Extracts the IEDriver specific options from the given capabilities
104
- * object.
105
- * @param {!webdriver.Capabilities} capabilities The capabilities object.
106
- * @return {!Options} The IEDriver options.
107
- */
108
- Options.fromCapabilities = function(capabilities) {
109
- var options = new Options();
110
- var map = options.options_;
111
-
112
- Object.keys(Key).forEach(function(key) {
113
- key = Key[key];
114
- if (capabilities.has(key)) {
115
- map[key] = capabilities.get(key);
98
+ /**
99
+ * Extracts the IEDriver specific options from the given capabilities
100
+ * object.
101
+ * @param {!capabilities.Capabilities} caps The capabilities object.
102
+ * @return {!Options} The IEDriver options.
103
+ */
104
+ static fromCapabilities(caps) {
105
+ var options = new Options();
106
+ var map = options.options_;
107
+
108
+ Object.keys(Key).forEach(function(key) {
109
+ key = Key[key];
110
+ if (caps.has(key)) {
111
+ map[key] = caps.get(key);
112
+ }
113
+ });
114
+
115
+ if (caps.has(capabilities.Capability.PROXY)) {
116
+ options.setProxy(caps.get(capabilities.Capability.PROXY));
116
117
  }
117
- });
118
118
 
119
- if (capabilities.has(webdriver.Capability.PROXY)) {
120
- options.setProxy(capabilities.get(webdriver.Capability.PROXY));
119
+ return options;
121
120
  }
122
121
 
123
- return options;
124
- };
125
-
126
-
127
- /**
128
- * Whether to disable the protected mode settings check when the session is
129
- * created. Disbling this setting may lead to significant instability as the
130
- * browser may become unresponsive/hang. Only "best effort" support is provided
131
- * when using this capability.
132
- *
133
- * For more information, refer to the IEDriver's
134
- * [required system configuration](http://goo.gl/eH0Yi3).
135
- *
136
- * @param {boolean} ignoreSettings Whether to ignore protected mode settings.
137
- * @return {!Options} A self reference.
138
- */
139
- Options.prototype.introduceFlakinessByIgnoringProtectedModeSettings =
140
- function(ignoreSettings) {
141
- this.options_[Key.IGNORE_PROTECTED_MODE_SETTINGS] = !!ignoreSettings;
142
- return this;
143
- };
144
-
145
-
146
- /**
147
- * Indicates whether to skip the check that the browser's zoom level is set to
148
- * 100%.
149
- *
150
- * @parm {boolean} ignore Whether to ignore the browser's zoom level settings.
151
- * @return {!Options} A self reference.
152
- */
153
- Options.prototype.ignoreZoomSetting = function(ignore) {
154
- this.options_[Key.IGNORE_ZOOM_SETTING] = !!ignore;
155
- return this;
156
- };
157
-
158
-
159
- /**
160
- * Sets the initial URL loaded when IE starts. This is intended to be used with
161
- * {@link #ignoreProtectedModeSettings} to allow the user to initialize IE in
162
- * the proper Protected Mode zone. Setting this option may cause browser
163
- * instability or flaky and unresponsive code. Only "best effort" support is
164
- * provided when using this option.
165
- *
166
- * @param {string} url The initial browser URL.
167
- * @return {!Options} A self reference.
168
- */
169
- Options.prototype.initialBrowserUrl = function(url) {
170
- this.options_[Key.INITIAL_BROWSER_URL] = url;
171
- return this;
172
- };
173
-
174
-
175
- /**
176
- * Configures whether to enable persistent mouse hovering (true by default).
177
- * Persistent hovering is achieved by continuously firing mouse over events at
178
- * the last location the mouse cursor has been moved to.
179
- *
180
- * @param {boolean} enable Whether to enable persistent hovering.
181
- * @return {!Options} A self reference.
182
- */
183
- Options.prototype.enablePersistentHover = function(enable) {
184
- this.options_[Key.ENABLE_PERSISTENT_HOVER] = !!enable;
185
- return this;
186
- };
187
-
188
-
189
- /**
190
- * Configures whether the driver should attempt to remove obsolete
191
- * {@linkplain webdriver.WebElement WebElements} from its internal cache on
192
- * page navigation (true by default). Disabling this option will cause the
193
- * driver to run with a larger memory footprint.
194
- *
195
- * @param {boolean} enable Whether to enable element reference cleanup.
196
- * @return {!Options} A self reference.
197
- */
198
- Options.prototype.enableElementCacheCleanup = function(enable) {
199
- this.options_[Key.ENABLE_ELEMENT_CACHE_CLEANUP] = !!enable;
200
- return this;
201
- };
202
-
203
-
204
- /**
205
- * Configures whether to require the IE window to have input focus before
206
- * performing any user interactions (i.e. mouse or keyboard events). This
207
- * option is disabled by default, but delivers much more accurate interaction
208
- * events when enabled.
209
- *
210
- * @param {boolean} require Whether to require window focus.
211
- * @return {!Options} A self reference.
212
- */
213
- Options.prototype.requireWindowFocus = function(require) {
214
- this.options_[Key.REQUIRE_WINDOW_FOCUS] = !!require;
215
- return this;
216
- };
217
-
218
-
219
- /**
220
- * Configures the timeout, in milliseconds, that the driver will attempt to
221
- * located and attach to a newly opened instance of Internet Explorer. The
222
- * default is zero, which indicates waiting indefinitely.
223
- *
224
- * @param {number} timeout How long to wait for IE.
225
- * @return {!Options} A self reference.
226
- */
227
- Options.prototype.browserAttachTimeout = function(timeout) {
228
- this.options_[Key.BROWSER_ATTACH_TIMEOUT] = Math.max(timeout, 0);
229
- return this;
230
- };
231
-
232
-
233
- /**
234
- * Configures whether to launch Internet Explorer using the CreateProcess API.
235
- * If this option is not specified, IE is launched using IELaunchURL, if
236
- * available. For IE 8 and above, this option requires the TabProcGrowth
237
- * registry value to be set to 0.
238
- *
239
- * @param {boolean} force Whether to use the CreateProcess API.
240
- * @return {!Options} A self reference.
241
- */
242
- Options.prototype.forceCreateProcessApi = function(force) {
243
- this.options_[Key.FORCE_CREATE_PROCESS] = !!force;
244
- return this;
245
- };
246
-
247
-
248
- /**
249
- * Specifies command-line switches to use when launching Internet Explorer.
250
- * This is only valid when used with {@link #forceCreateProcessApi}.
251
- *
252
- * @param {...(string|!Array.<string>)} var_args The arguments to add.
253
- * @return {!Options} A self reference.
254
- */
255
- Options.prototype.addArguments = function(var_args) {
256
- var args = this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] || [];
257
- args = args.concat.apply(args, arguments);
258
- this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] = args;
259
- return this;
260
- };
261
-
122
+ /**
123
+ * Whether to disable the protected mode settings check when the session is
124
+ * created. Disbling this setting may lead to significant instability as the
125
+ * browser may become unresponsive/hang. Only "best effort" support is provided
126
+ * when using this capability.
127
+ *
128
+ * For more information, refer to the IEDriver's
129
+ * [required system configuration](http://goo.gl/eH0Yi3).
130
+ *
131
+ * @param {boolean} ignoreSettings Whether to ignore protected mode settings.
132
+ * @return {!Options} A self reference.
133
+ */
134
+ introduceFlakinessByIgnoringProtectedModeSettings(ignoreSettings) {
135
+ this.options_[Key.IGNORE_PROTECTED_MODE_SETTINGS] = !!ignoreSettings;
136
+ return this;
137
+ }
262
138
 
263
- /**
264
- * Configures whether proxies should be configured on a per-process basis. If
265
- * not set, setting a {@linkplain #setProxy proxy} will configure the system
266
- * proxy. The default behavior is to use the system proxy.
267
- *
268
- * @param {boolean} enable Whether to enable per-process proxy settings.
269
- * @return {!Options} A self reference.
270
- */
271
- Options.prototype.usePerProcessProxy = function(enable) {
272
- this.options_[Key.USE_PER_PROCESS_PROXY] = !!enable;
273
- return this;
274
- };
139
+ /**
140
+ * Indicates whether to skip the check that the browser's zoom level is set to
141
+ * 100%.
142
+ *
143
+ * @param {boolean} ignore Whether to ignore the browser's zoom level settings.
144
+ * @return {!Options} A self reference.
145
+ */
146
+ ignoreZoomSetting(ignore) {
147
+ this.options_[Key.IGNORE_ZOOM_SETTING] = !!ignore;
148
+ return this;
149
+ }
275
150
 
151
+ /**
152
+ * Sets the initial URL loaded when IE starts. This is intended to be used with
153
+ * {@link #ignoreProtectedModeSettings} to allow the user to initialize IE in
154
+ * the proper Protected Mode zone. Setting this option may cause browser
155
+ * instability or flaky and unresponsive code. Only "best effort" support is
156
+ * provided when using this option.
157
+ *
158
+ * @param {string} url The initial browser URL.
159
+ * @return {!Options} A self reference.
160
+ */
161
+ initialBrowserUrl(url) {
162
+ this.options_[Key.INITIAL_BROWSER_URL] = url;
163
+ return this;
164
+ }
276
165
 
277
- /**
278
- * Configures whether to clear the cache, cookies, history, and saved form data
279
- * before starting the browser. _Using this capability will clear session data
280
- * for all running instances of Internet Explorer, including those started
281
- * manually._
282
- *
283
- * @param {boolean} cleanSession Whether to clear all session data on startup.
284
- * @return {!Options} A self reference.
285
- */
286
- Options.prototype.ensureCleanSession = function(cleanSession) {
287
- this.options_[Key.ENSURE_CLEAN_SESSION] = !!cleanSession;
288
- return this;
289
- };
166
+ /**
167
+ * Configures whether to enable persistent mouse hovering (true by default).
168
+ * Persistent hovering is achieved by continuously firing mouse over events at
169
+ * the last location the mouse cursor has been moved to.
170
+ *
171
+ * @param {boolean} enable Whether to enable persistent hovering.
172
+ * @return {!Options} A self reference.
173
+ */
174
+ enablePersistentHover(enable) {
175
+ this.options_[Key.ENABLE_PERSISTENT_HOVER] = !!enable;
176
+ return this;
177
+ }
290
178
 
179
+ /**
180
+ * Configures whether the driver should attempt to remove obsolete
181
+ * {@linkplain webdriver.WebElement WebElements} from its internal cache on
182
+ * page navigation (true by default). Disabling this option will cause the
183
+ * driver to run with a larger memory footprint.
184
+ *
185
+ * @param {boolean} enable Whether to enable element reference cleanup.
186
+ * @return {!Options} A self reference.
187
+ */
188
+ enableElementCacheCleanup(enable) {
189
+ this.options_[Key.ENABLE_ELEMENT_CACHE_CLEANUP] = !!enable;
190
+ return this;
191
+ }
291
192
 
292
- /**
293
- * Sets the path to the log file the driver should log to.
294
- * @param {string} path The log file path.
295
- * @return {!Options} A self reference.
296
- */
297
- Options.prototype.setLogFile = function(file) {
298
- this.options_[Key.LOG_FILE] = file;
299
- return this;
300
- };
193
+ /**
194
+ * Configures whether to require the IE window to have input focus before
195
+ * performing any user interactions (i.e. mouse or keyboard events). This
196
+ * option is disabled by default, but delivers much more accurate interaction
197
+ * events when enabled.
198
+ *
199
+ * @param {boolean} require Whether to require window focus.
200
+ * @return {!Options} A self reference.
201
+ */
202
+ requireWindowFocus(require) {
203
+ this.options_[Key.REQUIRE_WINDOW_FOCUS] = !!require;
204
+ return this;
205
+ }
301
206
 
207
+ /**
208
+ * Configures the timeout, in milliseconds, that the driver will attempt to
209
+ * located and attach to a newly opened instance of Internet Explorer. The
210
+ * default is zero, which indicates waiting indefinitely.
211
+ *
212
+ * @param {number} timeout How long to wait for IE.
213
+ * @return {!Options} A self reference.
214
+ */
215
+ browserAttachTimeout(timeout) {
216
+ this.options_[Key.BROWSER_ATTACH_TIMEOUT] = Math.max(timeout, 0);
217
+ return this;
218
+ }
302
219
 
303
- /**
304
- * Sets the IEDriverServer's logging {@linkplain Level level}.
305
- * @param {Level} level The logging level.
306
- * @return {!Options} A self reference.
307
- */
308
- Options.prototype.setLogLevel = function(level) {
309
- this.options_[Key.LOG_LEVEL] = level;
310
- return this;
311
- };
220
+ /**
221
+ * Configures whether to launch Internet Explorer using the CreateProcess API.
222
+ * If this option is not specified, IE is launched using IELaunchURL, if
223
+ * available. For IE 8 and above, this option requires the TabProcGrowth
224
+ * registry value to be set to 0.
225
+ *
226
+ * @param {boolean} force Whether to use the CreateProcess API.
227
+ * @return {!Options} A self reference.
228
+ */
229
+ forceCreateProcessApi(force) {
230
+ this.options_[Key.FORCE_CREATE_PROCESS] = !!force;
231
+ return this;
232
+ }
312
233
 
234
+ /**
235
+ * Specifies command-line switches to use when launching Internet Explorer.
236
+ * This is only valid when used with {@link #forceCreateProcessApi}.
237
+ *
238
+ * @param {...(string|!Array.<string>)} var_args The arguments to add.
239
+ * @return {!Options} A self reference.
240
+ */
241
+ addArguments(var_args) {
242
+ var args = this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] || [];
243
+ args = args.concat.apply(args, arguments);
244
+ this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] = args;
245
+ return this;
246
+ }
313
247
 
314
- /**
315
- * Sets the IP address of the driver's host adapter.
316
- * @param {string} host The IP address to use.
317
- * @return {!Options} A self reference.
318
- */
319
- Options.prototype.setHost = function(host) {
320
- this.options_[Key.HOST] = host;
321
- return this;
322
- };
248
+ /**
249
+ * Configures whether proxies should be configured on a per-process basis. If
250
+ * not set, setting a {@linkplain #setProxy proxy} will configure the system
251
+ * proxy. The default behavior is to use the system proxy.
252
+ *
253
+ * @param {boolean} enable Whether to enable per-process proxy settings.
254
+ * @return {!Options} A self reference.
255
+ */
256
+ usePerProcessProxy(enable) {
257
+ this.options_[Key.USE_PER_PROCESS_PROXY] = !!enable;
258
+ return this;
259
+ }
323
260
 
261
+ /**
262
+ * Configures whether to clear the cache, cookies, history, and saved form data
263
+ * before starting the browser. _Using this capability will clear session data
264
+ * for all running instances of Internet Explorer, including those started
265
+ * manually._
266
+ *
267
+ * @param {boolean} cleanSession Whether to clear all session data on startup.
268
+ * @return {!Options} A self reference.
269
+ */
270
+ ensureCleanSession(cleanSession) {
271
+ this.options_[Key.ENSURE_CLEAN_SESSION] = !!cleanSession;
272
+ return this;
273
+ }
324
274
 
325
- /**
326
- * Sets the path of the temporary data directory to use.
327
- * @param {string} path The log file path.
328
- * @return {!Options} A self reference.
329
- */
330
- Options.prototype.setExtractPath = function(path) {
331
- this.options_[Key.EXTRACT_PATH] = path;
332
- return this;
333
- };
275
+ /**
276
+ * Sets the path to the log file the driver should log to.
277
+ * @param {string} file The log file path.
278
+ * @return {!Options} A self reference.
279
+ */
280
+ setLogFile(file) {
281
+ this.options_[Key.LOG_FILE] = file;
282
+ return this;
283
+ }
334
284
 
285
+ /**
286
+ * Sets the IEDriverServer's logging {@linkplain Level level}.
287
+ * @param {Level} level The logging level.
288
+ * @return {!Options} A self reference.
289
+ */
290
+ setLogLevel(level) {
291
+ this.options_[Key.LOG_LEVEL] = level;
292
+ return this;
293
+ }
335
294
 
336
- /**
337
- * Sets whether the driver should start in silent mode.
338
- * @param {boolean} silent Whether to run in silent mode.
339
- * @return {!Options} A self reference.
340
- */
341
- Options.prototype.silent = function(silent) {
342
- this.options_[Key.SILENT] = silent;
343
- return this;
344
- };
295
+ /**
296
+ * Sets the IP address of the driver's host adapter.
297
+ * @param {string} host The IP address to use.
298
+ * @return {!Options} A self reference.
299
+ */
300
+ setHost(host) {
301
+ this.options_[Key.HOST] = host;
302
+ return this;
303
+ }
345
304
 
305
+ /**
306
+ * Sets the path of the temporary data directory to use.
307
+ * @param {string} path The log file path.
308
+ * @return {!Options} A self reference.
309
+ */
310
+ setExtractPath(path) {
311
+ this.options_[Key.EXTRACT_PATH] = path;
312
+ return this;
313
+ }
346
314
 
347
- /**
348
- * Sets the proxy settings for the new session.
349
- * @param {webdriver.ProxyConfig} proxy The proxy configuration to use.
350
- * @return {!Options} A self reference.
351
- */
352
- Options.prototype.setProxy = function(proxy) {
353
- this.proxy_ = proxy;
354
- return this;
355
- };
315
+ /**
316
+ * Sets whether the driver should start in silent mode.
317
+ * @param {boolean} silent Whether to run in silent mode.
318
+ * @return {!Options} A self reference.
319
+ */
320
+ silent(silent) {
321
+ this.options_[Key.SILENT] = silent;
322
+ return this;
323
+ }
356
324
 
325
+ /**
326
+ * Sets the proxy settings for the new session.
327
+ * @param {capabilities.ProxyConfig} proxy The proxy configuration to use.
328
+ * @return {!Options} A self reference.
329
+ */
330
+ setProxy(proxy) {
331
+ this.proxy_ = proxy;
332
+ return this;
333
+ }
357
334
 
358
- /**
359
- * Converts this options instance to a {@link webdriver.Capabilities} object.
360
- * @param {webdriver.Capabilities=} opt_capabilities The capabilities to merge
361
- * these options into, if any.
362
- * @return {!webdriver.Capabilities} The capabilities.
363
- */
364
- Options.prototype.toCapabilities = function(opt_capabilities) {
365
- var capabilities = opt_capabilities || webdriver.Capabilities.ie();
366
- if (this.proxy_) {
367
- capabilities.set(webdriver.Capability.PROXY, this.proxy_);
335
+ /**
336
+ * Converts this options instance to a {@link capabilities.Capabilities}
337
+ * object.
338
+ * @param {capabilities.Capabilities=} opt_capabilities The capabilities to
339
+ * merge these options into, if any.
340
+ * @return {!capabilities.Capabilities} The capabilities.
341
+ */
342
+ toCapabilities(opt_capabilities) {
343
+ var caps = opt_capabilities || capabilities.Capabilities.ie();
344
+ if (this.proxy_) {
345
+ caps.set(capabilities.Capability.PROXY, this.proxy_);
346
+ }
347
+ Object.keys(this.options_).forEach(function(key) {
348
+ caps.set(key, this.options_[key]);
349
+ }, this);
350
+ return caps;
368
351
  }
369
- Object.keys(this.options_).forEach(function(key) {
370
- capabilities.set(key, this.options_[key]);
371
- }, this);
372
- return capabilities;
373
- };
352
+ }
374
353
 
375
354
 
376
355
  function createServiceFromCapabilities(capabilities) {
@@ -381,11 +360,15 @@ function createServiceFromCapabilities(capabilities) {
381
360
  'WebDriver server?');
382
361
  }
383
362
 
384
- var exe = io.findInPath(IEDRIVER_EXE, true);
385
- if (!fs.existsSync(exe)) {
386
- throw Error('File does not exist: ' + exe);
363
+ let exe = io.findInPath(IEDRIVER_EXE, true);
364
+ if (!exe || !fs.existsSync(exe)) {
365
+ throw Error(
366
+ `${IEDRIVER_EXE} could not be found on the current PATH. Please ` +
367
+ `download the latest version of ${IEDRIVER_EXE} from ` +
368
+ 'http://selenium-release.storage.googleapis.com/index.html and ' +
369
+ 'ensure it can be found on your system PATH.');
387
370
  }
388
-
371
+
389
372
  var args = [];
390
373
  if (capabilities.has(Key.HOST)) {
391
374
  args.push('--host=' + capabilities.get(Key.HOST));
@@ -417,44 +400,40 @@ function createServiceFromCapabilities(capabilities) {
417
400
 
418
401
  /**
419
402
  * A WebDriver client for Microsoft's Internet Explorer.
420
- *
421
- * @param {(webdriver.Capabilities|Options)=} opt_config The configuration
422
- * options.
423
- * @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or
424
- * {@code null} to use the currently active flow.
425
- * @constructor
426
- * @extends {webdriver.WebDriver}
427
403
  */
428
- var Driver = function(opt_config, opt_flow) {
429
- var capabilities = opt_config instanceof Options ?
430
- opt_config.toCapabilities() :
431
- (opt_config || webdriver.Capabilities.ie());
432
-
433
- var service = createServiceFromCapabilities(capabilities);
434
- var executor = executors.createExecutor(service.start());
435
- var driver = webdriver.WebDriver.createSession(
436
- executor, capabilities, opt_flow);
437
-
438
- webdriver.WebDriver.call(
439
- this, driver.getSession(), executor, driver.controlFlow());
440
-
441
- var boundQuit = this.quit.bind(this);
442
-
443
- /** @override */
444
- this.quit = function() {
445
- return boundQuit().thenFinally(service.kill.bind(service));
446
- };
447
- };
448
- util.inherits(Driver, webdriver.WebDriver);
449
-
404
+ class Driver extends webdriver.WebDriver {
405
+ /**
406
+ * @param {(capabilities.Capabilities|Options)=} opt_config The configuration
407
+ * options.
408
+ * @param {promise.ControlFlow=} opt_flow The control flow to use,
409
+ * or {@code null} to use the currently active flow.
410
+ */
411
+ constructor(opt_config, opt_flow) {
412
+ var caps = opt_config instanceof Options ?
413
+ opt_config.toCapabilities() :
414
+ (opt_config || capabilities.Capabilities.ie());
415
+
416
+ var service = createServiceFromCapabilities(caps);
417
+ var executor = executors.createExecutor(service.start());
418
+ var driver = webdriver.WebDriver.createSession(executor, caps, opt_flow);
419
+
420
+ super(driver.getSession(), executor, driver.controlFlow());
421
+
422
+ let boundQuit = this.quit.bind(this);
423
+
424
+ /** @override */
425
+ this.quit = function() {
426
+ return boundQuit().thenFinally(service.kill.bind(service));
427
+ };
428
+ }
450
429
 
451
- /**
452
- * This function is a no-op as file detectors are not supported by this
453
- * implementation.
454
- * @override
455
- */
456
- Driver.prototype.setFileDetector = function() {
457
- };
430
+ /**
431
+ * This function is a no-op as file detectors are not supported by this
432
+ * implementation.
433
+ * @override
434
+ */
435
+ setFileDetector() {}
436
+ }
458
437
 
459
438
 
460
439
  // PUBLIC API