selenium-webdriver 2.47.0 → 2.52.0

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