selenium-webdriver 2.48.2 → 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 (524) hide show
  1. package/CHANGES.md +57 -0
  2. package/NOTICE +1 -1
  3. package/README.md +56 -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 +79 -87
  12. package/firefox/extension.js +10 -18
  13. package/firefox/index.js +173 -173
  14. package/firefox/profile.js +220 -240
  15. package/http/index.js +396 -79
  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} +88 -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 +5 -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/{webdriver/promise.js → promise.js} +688 -644
  34. package/lib/session.js +79 -0
  35. package/lib/{webdriver/serializable.js → symbols.js} +11 -16
  36. package/lib/test/build.js +4 -4
  37. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  38. package/lib/test/data/click_tests/overlapping_elements.html +15 -4
  39. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  40. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  41. package/lib/test/data/readOnlyPage.html +1 -1
  42. package/lib/test/data/selectPage.html +18 -2
  43. package/lib/test/fileserver.js +3 -4
  44. package/lib/test/index.js +7 -3
  45. package/lib/test/resources.js +1 -1
  46. package/lib/until.js +428 -0
  47. package/lib/webdriver.js +2351 -0
  48. package/net/portprober.js +15 -11
  49. package/opera.js +295 -314
  50. package/package.json +6 -5
  51. package/phantomjs.js +135 -140
  52. package/proxy.js +6 -4
  53. package/remote/index.js +229 -221
  54. package/safari.js +319 -310
  55. package/test/chrome/options_test.js +11 -9
  56. package/test/element_finding_test.js +51 -13
  57. package/test/error_test.js +163 -0
  58. package/test/execute_script_test.js +1 -1
  59. package/test/http/http_test.js +317 -55
  60. package/test/http/util_test.js +25 -23
  61. package/test/io_test.js +6 -1
  62. package/test/lib/by_test.js +127 -0
  63. package/test/lib/capabilities_test.js +84 -0
  64. package/test/lib/events_test.js +177 -0
  65. package/test/lib/logging_test.js +272 -0
  66. package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
  67. package/test/lib/promise_error_test.js +808 -0
  68. package/test/lib/promise_flow_test.js +2282 -0
  69. package/test/lib/promise_generator_test.js +308 -0
  70. package/test/lib/promise_test.js +996 -0
  71. package/test/lib/testutil.js +90 -0
  72. package/test/lib/until_test.js +436 -0
  73. package/test/lib/webdriver_test.js +2207 -0
  74. package/test/page_loading_test.js +7 -9
  75. package/test/stale_element_test.js +2 -2
  76. package/test/testing/assert_test.js +374 -0
  77. package/test/testing/index_test.js +9 -11
  78. package/testing/assert.js +334 -17
  79. package/testing/index.js +10 -0
  80. package/_base.js +0 -200
  81. package/docs/Changes.html +0 -356
  82. package/docs/class_bot_Error.html +0 -15
  83. package/docs/class_webdriver_ActionSequence.html +0 -115
  84. package/docs/class_webdriver_Alert.html +0 -24
  85. package/docs/class_webdriver_AlertPromise.html +0 -92
  86. package/docs/class_webdriver_Capabilities.html +0 -60
  87. package/docs/class_webdriver_Command.html +0 -15
  88. package/docs/class_webdriver_EventEmitter.html +0 -35
  89. package/docs/class_webdriver_FileDetector.html +0 -21
  90. package/docs/class_webdriver_Locator.html +0 -12
  91. package/docs/class_webdriver_Serializable.html +0 -9
  92. package/docs/class_webdriver_Session.html +0 -13
  93. package/docs/class_webdriver_TouchSequence.html +0 -49
  94. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  95. package/docs/class_webdriver_WebDriver.html +0 -313
  96. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  97. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  98. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  99. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  100. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  101. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  102. package/docs/class_webdriver_WebElement.html +0 -223
  103. package/docs/class_webdriver_WebElementPromise.html +0 -274
  104. package/docs/class_webdriver_http_Executor.html +0 -22
  105. package/docs/class_webdriver_http_Request.html +0 -12
  106. package/docs/class_webdriver_http_Response.html +0 -13
  107. package/docs/class_webdriver_logging_Entry.html +0 -15
  108. package/docs/class_webdriver_logging_Level.html +0 -55
  109. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  110. package/docs/class_webdriver_logging_Logger.html +0 -119
  111. package/docs/class_webdriver_logging_Preferences.html +0 -8
  112. package/docs/class_webdriver_promise_CancellationError.html +0 -17
  113. package/docs/class_webdriver_promise_ControlFlow.html +0 -153
  114. package/docs/class_webdriver_promise_Deferred.html +0 -84
  115. package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
  116. package/docs/class_webdriver_promise_Promise.html +0 -75
  117. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  118. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  119. package/docs/class_webdriver_testing_Assertion.html +0 -99
  120. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  121. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  122. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  123. package/docs/class_webdriver_until_Condition.html +0 -7
  124. package/docs/dossier.css +0 -1
  125. package/docs/dossier.js +0 -86
  126. package/docs/enum_bot_ErrorCode.html +0 -3
  127. package/docs/enum_bot_Error_State.html +0 -2
  128. package/docs/enum_webdriver_Browser.html +0 -2
  129. package/docs/enum_webdriver_Button.html +0 -2
  130. package/docs/enum_webdriver_Capability.html +0 -33
  131. package/docs/enum_webdriver_CommandName.html +0 -3
  132. package/docs/enum_webdriver_Key.html +0 -12
  133. package/docs/enum_webdriver_logging_Type.html +0 -6
  134. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  135. package/docs/index.html +0 -125
  136. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  137. package/docs/interface_webdriver_http_Client.html +0 -10
  138. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  139. package/docs/module_selenium-webdriver.html +0 -23
  140. package/docs/module_selenium-webdriver__base.html +0 -23
  141. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  142. package/docs/module_selenium-webdriver_builder.html +0 -2
  143. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  144. package/docs/module_selenium-webdriver_chrome.html +0 -90
  145. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  146. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  147. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  148. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  149. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  150. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  151. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  152. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  153. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  154. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  155. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  156. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  157. package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
  158. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
  159. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  160. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  161. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  162. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  163. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  164. package/docs/module_selenium-webdriver_error.html +0 -4
  165. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  166. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  167. package/docs/module_selenium-webdriver_executors.html +0 -10
  168. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  169. package/docs/module_selenium-webdriver_firefox.html +0 -68
  170. package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
  171. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
  172. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
  173. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  174. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  175. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  176. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  177. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  178. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  179. package/docs/module_selenium-webdriver_http.html +0 -9
  180. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  181. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  182. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  183. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  184. package/docs/module_selenium-webdriver_http_util.html +0 -17
  185. package/docs/module_selenium-webdriver_ie.html +0 -11
  186. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  187. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  188. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  189. package/docs/module_selenium-webdriver_io.html +0 -37
  190. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  191. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  192. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  193. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  194. package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
  195. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  196. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  197. package/docs/module_selenium-webdriver_net.html +0 -7
  198. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  199. package/docs/module_selenium-webdriver_opera.html +0 -62
  200. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  201. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  202. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  203. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  204. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  205. package/docs/module_selenium-webdriver_proxy.html +0 -28
  206. package/docs/module_selenium-webdriver_remote.html +0 -8
  207. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  208. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  209. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
  210. package/docs/module_selenium-webdriver_safari.html +0 -9
  211. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  212. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  213. package/docs/module_selenium-webdriver_testing.html +0 -74
  214. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  215. package/docs/namespace_bot.html +0 -4
  216. package/docs/namespace_bot_json.html +0 -20
  217. package/docs/namespace_bot_response.html +0 -18
  218. package/docs/namespace_bot_userAgent.html +0 -33
  219. package/docs/namespace_webdriver.html +0 -30
  220. package/docs/namespace_webdriver_By.html +0 -56
  221. package/docs/namespace_webdriver_http.html +0 -6
  222. package/docs/namespace_webdriver_logging.html +0 -70
  223. package/docs/namespace_webdriver_promise.html +0 -688
  224. package/docs/namespace_webdriver_stacktrace.html +0 -17
  225. package/docs/namespace_webdriver_testing.html +0 -7
  226. package/docs/namespace_webdriver_testing_assert.html +0 -9
  227. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  228. package/docs/namespace_webdriver_until.html +0 -82
  229. package/docs/source/_base.js.src.html +0 -1
  230. package/docs/source/builder.js.src.html +0 -1
  231. package/docs/source/chrome.js.src.html +0 -1
  232. package/docs/source/error.js.src.html +0 -1
  233. package/docs/source/executors.js.src.html +0 -1
  234. package/docs/source/firefox/binary.js.src.html +0 -1
  235. package/docs/source/firefox/extension.js.src.html +0 -1
  236. package/docs/source/firefox/index.js.src.html +0 -1
  237. package/docs/source/firefox/profile.js.src.html +0 -1
  238. package/docs/source/http/index.js.src.html +0 -1
  239. package/docs/source/http/util.js.src.html +0 -1
  240. package/docs/source/ie.js.src.html +0 -1
  241. package/docs/source/index.js.src.html +0 -1
  242. package/docs/source/io/exec.js.src.html +0 -1
  243. package/docs/source/io/index.js.src.html +0 -1
  244. package/docs/source/lib/atoms/error.js.src.html +0 -1
  245. package/docs/source/lib/atoms/json.js.src.html +0 -1
  246. package/docs/source/lib/atoms/response.js.src.html +0 -1
  247. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  248. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  249. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  250. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  251. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  252. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  253. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  254. package/docs/source/lib/goog/base.js.src.html +0 -1
  255. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  256. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  257. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  258. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  259. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  260. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  261. package/docs/source/lib/goog/deps.js.src.html +0 -1
  262. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  263. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  264. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  265. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  266. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  267. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  268. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  269. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  270. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  271. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  272. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  273. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  274. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  275. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  276. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  277. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  278. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  279. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  280. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  282. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  283. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  284. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  285. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  286. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  287. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  288. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  289. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  290. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  291. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  292. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  293. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  294. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  295. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  296. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  297. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  298. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  299. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  300. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  301. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  302. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  303. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  304. package/docs/source/lib/goog/log/log.js.src.html +0 -1
  305. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  306. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  307. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  308. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  309. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  310. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  311. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  312. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  313. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  314. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  315. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  316. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  317. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  318. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  319. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  320. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  321. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  322. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  323. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  324. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  325. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  326. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  327. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  328. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  329. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  330. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  331. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  332. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  333. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  334. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  335. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  336. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  344. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  345. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  346. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  347. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  348. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  349. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  350. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  351. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  352. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  353. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  354. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  355. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  356. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  357. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  358. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  366. package/docs/source/net/index.js.src.html +0 -1
  367. package/docs/source/net/portprober.js.src.html +0 -1
  368. package/docs/source/opera.js.src.html +0 -1
  369. package/docs/source/phantomjs.js.src.html +0 -1
  370. package/docs/source/proxy.js.src.html +0 -1
  371. package/docs/source/remote/index.js.src.html +0 -1
  372. package/docs/source/safari.js.src.html +0 -1
  373. package/docs/source/testing/assert.js.src.html +0 -1
  374. package/docs/source/testing/index.js.src.html +0 -1
  375. package/docs/types.js +0 -1
  376. package/lib/atoms/error.js +0 -202
  377. package/lib/atoms/json.js +0 -80
  378. package/lib/atoms/response.js +0 -110
  379. package/lib/atoms/userAgent.js +0 -257
  380. package/lib/goog/LICENSE +0 -176
  381. package/lib/goog/array/array.js +0 -1654
  382. package/lib/goog/asserts/asserts.js +0 -365
  383. package/lib/goog/async/freelist.js +0 -88
  384. package/lib/goog/async/nexttick.js +0 -241
  385. package/lib/goog/async/run.js +0 -133
  386. package/lib/goog/async/workqueue.js +0 -139
  387. package/lib/goog/base.js +0 -2548
  388. package/lib/goog/debug/debug.js +0 -653
  389. package/lib/goog/debug/entrypointregistry.js +0 -158
  390. package/lib/goog/debug/error.js +0 -63
  391. package/lib/goog/debug/logbuffer.js +0 -148
  392. package/lib/goog/debug/logger.js +0 -873
  393. package/lib/goog/debug/logrecord.js +0 -242
  394. package/lib/goog/deps.js +0 -151
  395. package/lib/goog/disposable/disposable.js +0 -307
  396. package/lib/goog/disposable/idisposable.js +0 -45
  397. package/lib/goog/dom/browserfeature.js +0 -72
  398. package/lib/goog/dom/dom.js +0 -2991
  399. package/lib/goog/dom/nodetype.js +0 -48
  400. package/lib/goog/dom/safe.js +0 -347
  401. package/lib/goog/dom/tagname.js +0 -160
  402. package/lib/goog/dom/tags.js +0 -41
  403. package/lib/goog/dom/vendor.js +0 -96
  404. package/lib/goog/events/browserevent.js +0 -400
  405. package/lib/goog/events/browserfeature.js +0 -85
  406. package/lib/goog/events/event.js +0 -143
  407. package/lib/goog/events/eventid.js +0 -47
  408. package/lib/goog/events/events.js +0 -984
  409. package/lib/goog/events/eventtarget.js +0 -394
  410. package/lib/goog/events/eventtype.js +0 -237
  411. package/lib/goog/events/keycodes.js +0 -427
  412. package/lib/goog/events/listenable.js +0 -335
  413. package/lib/goog/events/listener.js +0 -131
  414. package/lib/goog/events/listenermap.js +0 -308
  415. package/lib/goog/fs/url.js +0 -109
  416. package/lib/goog/functions/functions.js +0 -442
  417. package/lib/goog/html/safehtml.js +0 -757
  418. package/lib/goog/html/safescript.js +0 -234
  419. package/lib/goog/html/safestyle.js +0 -442
  420. package/lib/goog/html/safestylesheet.js +0 -276
  421. package/lib/goog/html/safeurl.js +0 -398
  422. package/lib/goog/html/trustedresourceurl.js +0 -224
  423. package/lib/goog/html/uncheckedconversions.js +0 -232
  424. package/lib/goog/i18n/bidi.js +0 -908
  425. package/lib/goog/iter/iter.js +0 -1302
  426. package/lib/goog/json/json.js +0 -363
  427. package/lib/goog/labs/testing/assertthat.js +0 -58
  428. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  429. package/lib/goog/labs/testing/matcher.js +0 -80
  430. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  431. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  432. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  433. package/lib/goog/labs/useragent/browser.js +0 -341
  434. package/lib/goog/labs/useragent/engine.js +0 -160
  435. package/lib/goog/labs/useragent/platform.js +0 -160
  436. package/lib/goog/labs/useragent/util.js +0 -148
  437. package/lib/goog/log/log.js +0 -197
  438. package/lib/goog/math/box.js +0 -398
  439. package/lib/goog/math/coordinate.js +0 -268
  440. package/lib/goog/math/math.js +0 -451
  441. package/lib/goog/math/rect.js +0 -476
  442. package/lib/goog/math/size.js +0 -227
  443. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  444. package/lib/goog/net/xhrlike.js +0 -124
  445. package/lib/goog/net/xmlhttp.js +0 -246
  446. package/lib/goog/net/xmlhttpfactory.js +0 -67
  447. package/lib/goog/object/object.js +0 -686
  448. package/lib/goog/promise/promise.js +0 -1350
  449. package/lib/goog/promise/resolver.js +0 -48
  450. package/lib/goog/promise/thenable.js +0 -126
  451. package/lib/goog/reflect/reflect.js +0 -77
  452. package/lib/goog/string/const.js +0 -182
  453. package/lib/goog/string/string.js +0 -1599
  454. package/lib/goog/string/typedstring.js +0 -48
  455. package/lib/goog/structs/collection.js +0 -56
  456. package/lib/goog/structs/map.js +0 -457
  457. package/lib/goog/structs/set.js +0 -279
  458. package/lib/goog/structs/structs.js +0 -354
  459. package/lib/goog/style/style.js +0 -2037
  460. package/lib/goog/testing/asserts.js +0 -1278
  461. package/lib/goog/testing/events/events.js +0 -767
  462. package/lib/goog/testing/functionmock.js +0 -175
  463. package/lib/goog/testing/jsunit.js +0 -162
  464. package/lib/goog/testing/loosemock.js +0 -242
  465. package/lib/goog/testing/mock.js +0 -645
  466. package/lib/goog/testing/mockclock.js +0 -606
  467. package/lib/goog/testing/mockcontrol.js +0 -220
  468. package/lib/goog/testing/mockinterface.js +0 -45
  469. package/lib/goog/testing/mockmatchers.js +0 -400
  470. package/lib/goog/testing/objectpropertystring.js +0 -68
  471. package/lib/goog/testing/propertyreplacer.js +0 -262
  472. package/lib/goog/testing/recordfunction.js +0 -215
  473. package/lib/goog/testing/stacktrace.js +0 -594
  474. package/lib/goog/testing/strictmock.js +0 -130
  475. package/lib/goog/testing/testcase.js +0 -1629
  476. package/lib/goog/testing/testrunner.js +0 -440
  477. package/lib/goog/uri/uri.js +0 -1524
  478. package/lib/goog/uri/utils.js +0 -1064
  479. package/lib/goog/useragent/product.js +0 -183
  480. package/lib/goog/useragent/product_isversion.js +0 -144
  481. package/lib/goog/useragent/useragent.js +0 -572
  482. package/lib/webdriver/actionsequence.js +0 -356
  483. package/lib/webdriver/builder.js +0 -207
  484. package/lib/webdriver/capabilities.js +0 -412
  485. package/lib/webdriver/events.js +0 -179
  486. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  487. package/lib/webdriver/http/corsclient.js +0 -133
  488. package/lib/webdriver/http/http.js +0 -525
  489. package/lib/webdriver/http/xhrclient.js +0 -67
  490. package/lib/webdriver/locators.js +0 -257
  491. package/lib/webdriver/logging.js +0 -347
  492. package/lib/webdriver/session.js +0 -74
  493. package/lib/webdriver/stacktrace.js +0 -619
  494. package/lib/webdriver/test/builder_test.js +0 -53
  495. package/lib/webdriver/test/capabilities_test.js +0 -72
  496. package/lib/webdriver/test/events_test.js +0 -203
  497. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  498. package/lib/webdriver/test/http/http_test.js +0 -428
  499. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  500. package/lib/webdriver/test/locators_test.js +0 -59
  501. package/lib/webdriver/test/logging_test.js +0 -85
  502. package/lib/webdriver/test/promise_error_test.js +0 -892
  503. package/lib/webdriver/test/promise_flow_test.js +0 -2365
  504. package/lib/webdriver/test/promise_generator_test.js +0 -323
  505. package/lib/webdriver/test/promise_test.js +0 -2012
  506. package/lib/webdriver/test/stacktrace_test.js +0 -480
  507. package/lib/webdriver/test/test_bootstrap.js +0 -67
  508. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  509. package/lib/webdriver/test/testing/client_test.js +0 -88
  510. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  511. package/lib/webdriver/test/testutil.js +0 -209
  512. package/lib/webdriver/test/testutil_test.js +0 -104
  513. package/lib/webdriver/test/until_test.js +0 -411
  514. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  515. package/lib/webdriver/test/webdriver_test.js +0 -2369
  516. package/lib/webdriver/testing/asserts.js +0 -487
  517. package/lib/webdriver/testing/client.js +0 -179
  518. package/lib/webdriver/testing/jsunit.js +0 -363
  519. package/lib/webdriver/testing/testcase.js +0 -168
  520. package/lib/webdriver/testing/window.js +0 -244
  521. package/lib/webdriver/touchsequence.js +0 -248
  522. package/lib/webdriver/until.js +0 -412
  523. package/lib/webdriver/webdriver.js +0 -2511
  524. 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