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/builder.js CHANGED
@@ -15,15 +15,24 @@
15
15
  // specific language governing permissions and limitations
16
16
  // under the License.
17
17
 
18
- var base = require('./_base'),
19
- executors = require('./executors');
18
+ 'use strict';
20
19
 
21
- // Use base.require to avoid circular references between index and this module.
22
- var Browser = base.require('webdriver.Browser'),
23
- Capabilities = base.require('webdriver.Capabilities'),
24
- Capability = base.require('webdriver.Capability'),
25
- WebDriver = base.require('webdriver.WebDriver'),
26
- promise = base.require('webdriver.promise');
20
+ const chrome = require('./chrome');
21
+ const edge = require('./edge');
22
+ const executors = require('./executors');
23
+ const firefox = require('./firefox');
24
+ const ie = require('./ie');
25
+ const capabilities = require('./lib/capabilities');
26
+ const webdriver = require('./lib/webdriver');
27
+ const promise = require('./lib/promise');
28
+ const opera = require('./opera');
29
+ const phantomjs = require('./phantomjs');
30
+ const safari = require('./safari');
31
+
32
+ const Browser = capabilities.Browser;
33
+ const Capabilities = capabilities.Capabilities;
34
+ const Capability = capabilities.Capability;
35
+ const WebDriver = webdriver.WebDriver;
27
36
 
28
37
 
29
38
 
@@ -32,7 +41,7 @@ var seleniumServer;
32
41
  /**
33
42
  * Starts an instance of the Selenium server if not yet running.
34
43
  * @param {string} jar Path to the server jar to use.
35
- * @return {!webdriver.promise.Promise<string>} A promise for the server's
44
+ * @return {!promise.Promise<string>} A promise for the server's
36
45
  * addrss once started.
37
46
  */
38
47
  function startSeleniumServer(jar) {
@@ -84,410 +93,418 @@ function startSeleniumServer(jar) {
84
93
  * SELENIUM_BROWSER=chrome:36:LINUX \
85
94
  * SELENIUM_SERVER_JAR=/path/to/selenium-server-standalone.jar \
86
95
  * node mytest.js
87
- *
88
- * @constructor
89
96
  */
90
- var Builder = function() {
91
-
92
- /** @private {webdriver.promise.ControlFlow} */
93
- this.flow_ = null;
94
-
95
- /** @private {string} */
96
- this.url_ = '';
97
+ class Builder {
98
+ constructor() {
99
+ /** @private {promise.ControlFlow} */
100
+ this.flow_ = null;
97
101
 
98
- /** @private {?string} */
99
- this.proxy_ = null;
102
+ /** @private {string} */
103
+ this.url_ = '';
100
104
 
101
- /** @private {!webdriver.Capabilities} */
102
- this.capabilities_ = new Capabilities();
105
+ /** @private {?string} */
106
+ this.proxy_ = null;
103
107
 
104
- /** @private {chrome.Options} */
105
- this.chromeOptions_ = null;
108
+ /** @private {!Capabilities} */
109
+ this.capabilities_ = new Capabilities();
106
110
 
107
- /** @private {firefox.Options} */
108
- this.firefoxOptions_ = null;
111
+ /** @private {chrome.Options} */
112
+ this.chromeOptions_ = null;
109
113
 
110
- /** @private {opera.Options} */
111
- this.operaOptions_ = null;
114
+ /** @private {firefox.Options} */
115
+ this.firefoxOptions_ = null;
112
116
 
113
- /** @private {ie.Options} */
114
- this.ieOptions_ = null;
117
+ /** @private {opera.Options} */
118
+ this.operaOptions_ = null;
115
119
 
116
- /** @private {safari.Options} */
117
- this.safariOptions_ = null;
120
+ /** @private {ie.Options} */
121
+ this.ieOptions_ = null;
118
122
 
119
- /** @private {boolean} */
120
- this.ignoreEnv_ = false;
121
- };
123
+ /** @private {safari.Options} */
124
+ this.safariOptions_ = null;
122
125
 
126
+ /** @private {edge.Options} */
127
+ this.edgeOptions_ = null;
123
128
 
124
- /**
125
- * Configures this builder to ignore any environment variable overrides and to
126
- * only use the configuration specified through this instance's API.
127
- *
128
- * @return {!Builder} A self reference.
129
- */
130
- Builder.prototype.disableEnvironmentOverrides = function() {
131
- this.ignoreEnv_ = true;
132
- return this;
133
- };
134
-
135
-
136
- /**
137
- * Sets the URL of a remote WebDriver server to use. Once a remote URL has been
138
- * specified, the builder direct all new clients to that server. If this method
139
- * is never called, the Builder will attempt to create all clients locally.
140
- *
141
- * As an alternative to this method, you may also set the `SELENIUM_REMOTE_URL`
142
- * environment variable.
143
- *
144
- * @param {string} url The URL of a remote server to use.
145
- * @return {!Builder} A self reference.
146
- */
147
- Builder.prototype.usingServer = function(url) {
148
- this.url_ = url;
149
- return this;
150
- };
151
-
152
-
153
- /**
154
- * @return {string} The URL of the WebDriver server this instance is configured
155
- * to use.
156
- */
157
- Builder.prototype.getServerUrl = function() {
158
- return this.url_;
159
- };
160
-
161
-
162
- /**
163
- * Sets the URL of the proxy to use for the WebDriver's HTTP connections.
164
- * If this method is never called, the Builder will create a connection without
165
- * a proxy.
166
- *
167
- * @param {string} proxy The URL of a proxy to use.
168
- * @return {!Builder} A self reference.
169
- */
170
- Builder.prototype.usingWebDriverProxy = function(proxy) {
171
- this.proxy_ = proxy;
172
- return this;
173
- };
174
-
129
+ /** @private {boolean} */
130
+ this.ignoreEnv_ = false;
131
+ }
175
132
 
176
- /**
177
- * @return {string} The URL of the proxy server to use for the WebDriver's HTTP
178
- * connections.
179
- */
180
- Builder.prototype.getWebDriverProxy = function() {
181
- return this.proxy_;
182
- };
133
+ /**
134
+ * Configures this builder to ignore any environment variable overrides and to
135
+ * only use the configuration specified through this instance's API.
136
+ *
137
+ * @return {!Builder} A self reference.
138
+ */
139
+ disableEnvironmentOverrides() {
140
+ this.ignoreEnv_ = true;
141
+ return this;
142
+ }
183
143
 
144
+ /**
145
+ * Sets the URL of a remote WebDriver server to use. Once a remote URL has
146
+ * been specified, the builder direct all new clients to that server. If this
147
+ * method is never called, the Builder will attempt to create all clients
148
+ * locally.
149
+ *
150
+ * As an alternative to this method, you may also set the
151
+ * `SELENIUM_REMOTE_URL` environment variable.
152
+ *
153
+ * @param {string} url The URL of a remote server to use.
154
+ * @return {!Builder} A self reference.
155
+ */
156
+ usingServer(url) {
157
+ this.url_ = url;
158
+ return this;
159
+ }
184
160
 
185
- /**
186
- * Sets the desired capabilities when requesting a new session. This will
187
- * overwrite any previously set capabilities.
188
- * @param {!(Object|webdriver.Capabilities)} capabilities The desired
189
- * capabilities for a new session.
190
- * @return {!Builder} A self reference.
191
- */
192
- Builder.prototype.withCapabilities = function(capabilities) {
193
- this.capabilities_ = new Capabilities(capabilities);
194
- return this;
195
- };
161
+ /**
162
+ * @return {string} The URL of the WebDriver server this instance is
163
+ * configured to use.
164
+ */
165
+ getServerUrl() {
166
+ return this.url_;
167
+ }
196
168
 
169
+ /**
170
+ * Sets the URL of the proxy to use for the WebDriver's HTTP connections.
171
+ * If this method is never called, the Builder will create a connection
172
+ * without a proxy.
173
+ *
174
+ * @param {string} proxy The URL of a proxy to use.
175
+ * @return {!Builder} A self reference.
176
+ */
177
+ usingWebDriverProxy(proxy) {
178
+ this.proxy_ = proxy;
179
+ return this;
180
+ }
197
181
 
198
- /**
199
- * Returns the base set of capabilities this instance is currently configured
200
- * to use.
201
- * @return {!webdriver.Capabilities} The current capabilities for this builder.
202
- */
203
- Builder.prototype.getCapabilities = function() {
204
- return this.capabilities_;
205
- };
182
+ /**
183
+ * @return {?string} The URL of the proxy server to use for the WebDriver's
184
+ * HTTP connections, or `null` if not set.
185
+ */
186
+ getWebDriverProxy() {
187
+ return this.proxy_;
188
+ }
206
189
 
190
+ /**
191
+ * Sets the desired capabilities when requesting a new session. This will
192
+ * overwrite any previously set capabilities.
193
+ * @param {!(Object|Capabilities)} capabilities The desired capabilities for
194
+ * a new session.
195
+ * @return {!Builder} A self reference.
196
+ */
197
+ withCapabilities(capabilities) {
198
+ this.capabilities_ = new Capabilities(capabilities);
199
+ return this;
200
+ }
207
201
 
208
- /**
209
- * Configures the target browser for clients created by this instance.
210
- * Any calls to {@link #withCapabilities} after this function will
211
- * overwrite these settings.
212
- *
213
- * You may also define the target browser using the {@code SELENIUM_BROWSER}
214
- * environment variable. If set, this environment variable should be of the
215
- * form `browser[:[version][:platform]]`.
216
- *
217
- * @param {(string|webdriver.Browser)} name The name of the target browser;
218
- * common defaults are available on the {@link webdriver.Browser} enum.
219
- * @param {string=} opt_version A desired version; may be omitted if any
220
- * version should be used.
221
- * @param {string=} opt_platform The desired platform; may be omitted if any
222
- * version may be used.
223
- * @return {!Builder} A self reference.
224
- */
225
- Builder.prototype.forBrowser = function(name, opt_version, opt_platform) {
226
- this.capabilities_.set(Capability.BROWSER_NAME, name);
227
- this.capabilities_.set(Capability.VERSION, opt_version || null);
228
- this.capabilities_.set(Capability.PLATFORM, opt_platform || null);
229
- return this;
230
- };
202
+ /**
203
+ * Returns the base set of capabilities this instance is currently configured
204
+ * to use.
205
+ * @return {!Capabilities} The current capabilities for this builder.
206
+ */
207
+ getCapabilities() {
208
+ return this.capabilities_;
209
+ }
231
210
 
211
+ /**
212
+ * Configures the target browser for clients created by this instance.
213
+ * Any calls to {@link #withCapabilities} after this function will
214
+ * overwrite these settings.
215
+ *
216
+ * You may also define the target browser using the {@code SELENIUM_BROWSER}
217
+ * environment variable. If set, this environment variable should be of the
218
+ * form `browser[:[version][:platform]]`.
219
+ *
220
+ * @param {(string|Browser)} name The name of the target browser;
221
+ * common defaults are available on the {@link webdriver.Browser} enum.
222
+ * @param {string=} opt_version A desired version; may be omitted if any
223
+ * version should be used.
224
+ * @param {string=} opt_platform The desired platform; may be omitted if any
225
+ * version may be used.
226
+ * @return {!Builder} A self reference.
227
+ */
228
+ forBrowser(name, opt_version, opt_platform) {
229
+ this.capabilities_.set(Capability.BROWSER_NAME, name);
230
+ this.capabilities_.set(Capability.VERSION, opt_version || null);
231
+ this.capabilities_.set(Capability.PLATFORM, opt_platform || null);
232
+ return this;
233
+ }
232
234
 
233
- /**
234
- * Sets the proxy configuration to use for WebDriver clients created by this
235
- * builder. Any calls to {@link #withCapabilities} after this function will
236
- * overwrite these settings.
237
- * @param {!webdriver.ProxyConfig} config The configuration to use.
238
- * @return {!Builder} A self reference.
239
- */
240
- Builder.prototype.setProxy = function(config) {
241
- this.capabilities_.setProxy(config);
242
- return this;
243
- };
235
+ /**
236
+ * Sets the proxy configuration to use for WebDriver clients created by this
237
+ * builder. Any calls to {@link #withCapabilities} after this function will
238
+ * overwrite these settings.
239
+ * @param {!capabilities.ProxyConfig} config The configuration to use.
240
+ * @return {!Builder} A self reference.
241
+ */
242
+ setProxy(config) {
243
+ this.capabilities_.setProxy(config);
244
+ return this;
245
+ }
244
246
 
247
+ /**
248
+ * Sets the logging preferences for the created session. Preferences may be
249
+ * changed by repeated calls, or by calling {@link #withCapabilities}.
250
+ * @param {!(./lib/logging.Preferences|Object<string, string>)} prefs The
251
+ * desired logging preferences.
252
+ * @return {!Builder} A self reference.
253
+ */
254
+ setLoggingPrefs(prefs) {
255
+ this.capabilities_.setLoggingPrefs(prefs);
256
+ return this;
257
+ }
245
258
 
246
- /**
247
- * Sets the logging preferences for the created session. Preferences may be
248
- * changed by repeated calls, or by calling {@link #withCapabilities}.
249
- * @param {!(webdriver.logging.Preferences|Object.<string, string>)} prefs The
250
- * desired logging preferences.
251
- * @return {!Builder} A self reference.
252
- */
253
- Builder.prototype.setLoggingPrefs = function(prefs) {
254
- this.capabilities_.setLoggingPrefs(prefs);
255
- return this;
256
- };
259
+ /**
260
+ * Sets whether native events should be used.
261
+ * @param {boolean} enabled Whether to enable native events.
262
+ * @return {!Builder} A self reference.
263
+ */
264
+ setEnableNativeEvents(enabled) {
265
+ this.capabilities_.setEnableNativeEvents(enabled);
266
+ return this;
267
+ }
257
268
 
269
+ /**
270
+ * Sets how elements should be scrolled into view for interaction.
271
+ * @param {number} behavior The desired scroll behavior: either 0 to align
272
+ * with the top of the viewport or 1 to align with the bottom.
273
+ * @return {!Builder} A self reference.
274
+ */
275
+ setScrollBehavior(behavior) {
276
+ this.capabilities_.setScrollBehavior(behavior);
277
+ return this;
278
+ }
258
279
 
259
- /**
260
- * Sets whether native events should be used.
261
- * @param {boolean} enabled Whether to enable native events.
262
- * @return {!Builder} A self reference.
263
- */
264
- Builder.prototype.setEnableNativeEvents = function(enabled) {
265
- this.capabilities_.setEnableNativeEvents(enabled);
266
- return this;
267
- };
280
+ /**
281
+ * Sets the default action to take with an unexpected alert before returning
282
+ * an error.
283
+ * @param {string} behavior The desired behavior; should be "accept",
284
+ * "dismiss", or "ignore". Defaults to "dismiss".
285
+ * @return {!Builder} A self reference.
286
+ */
287
+ setAlertBehavior(behavior) {
288
+ this.capabilities_.setAlertBehavior(behavior);
289
+ return this;
290
+ }
268
291
 
292
+ /**
293
+ * Sets Chrome specific {@linkplain chrome.Options options} for drivers
294
+ * created by this builder. Any logging or proxy settings defined on the given
295
+ * options will take precedence over those set through
296
+ * {@link #setLoggingPrefs} and {@link #setProxy}, respectively.
297
+ *
298
+ * @param {!chrome.Options} options The ChromeDriver options to use.
299
+ * @return {!Builder} A self reference.
300
+ */
301
+ setChromeOptions(options) {
302
+ this.chromeOptions_ = options;
303
+ return this;
304
+ }
269
305
 
270
- /**
271
- * Sets how elements should be scrolled into view for interaction.
272
- * @param {number} behavior The desired scroll behavior: either 0 to align with
273
- * the top of the viewport or 1 to align with the bottom.
274
- * @return {!Builder} A self reference.
275
- */
276
- Builder.prototype.setScrollBehavior = function(behavior) {
277
- this.capabilities_.setScrollBehavior(behavior);
278
- return this;
279
- };
306
+ /**
307
+ * Sets Firefox specific {@linkplain firefox.Options options} for drivers
308
+ * created by this builder. Any logging or proxy settings defined on the given
309
+ * options will take precedence over those set through
310
+ * {@link #setLoggingPrefs} and {@link #setProxy}, respectively.
311
+ *
312
+ * @param {!firefox.Options} options The FirefoxDriver options to use.
313
+ * @return {!Builder} A self reference.
314
+ */
315
+ setFirefoxOptions(options) {
316
+ this.firefoxOptions_ = options;
317
+ return this;
318
+ }
280
319
 
320
+ /**
321
+ * Sets Opera specific {@linkplain opera.Options options} for drivers created
322
+ * by this builder. Any logging or proxy settings defined on the given options
323
+ * will take precedence over those set through {@link #setLoggingPrefs} and
324
+ * {@link #setProxy}, respectively.
325
+ *
326
+ * @param {!opera.Options} options The OperaDriver options to use.
327
+ * @return {!Builder} A self reference.
328
+ */
329
+ setOperaOptions(options) {
330
+ this.operaOptions_ = options;
331
+ return this;
332
+ }
281
333
 
282
- /**
283
- * Sets the default action to take with an unexpected alert before returning
284
- * an error.
285
- * @param {string} beahvior The desired behavior; should be "accept", "dismiss",
286
- * or "ignore". Defaults to "dismiss".
287
- * @return {!Builder} A self reference.
288
- */
289
- Builder.prototype.setAlertBehavior = function(behavior) {
290
- this.capabilities_.setAlertBehavior(behavior);
291
- return this;
292
- };
334
+ /**
335
+ * Set Internet Explorer specific {@linkplain ie.Options options} for drivers
336
+ * created by this builder. Any proxy settings defined on the given options
337
+ * will take precedence over those set through {@link #setProxy}.
338
+ *
339
+ * @param {!ie.Options} options The IEDriver options to use.
340
+ * @return {!Builder} A self reference.
341
+ */
342
+ setIeOptions(options) {
343
+ this.ieOptions_ = options;
344
+ return this;
345
+ }
293
346
 
347
+ /**
348
+ * Set {@linkplain edge.Options options} specific to Microsoft's Edge browser
349
+ * for drivers created by this builder. Any proxy settings defined on the
350
+ * given options will take precedence over those set through
351
+ * {@link #setProxy}.
352
+ *
353
+ * @param {!edge.Options} options The MicrosoftEdgeDriver options to use.
354
+ * @return {!Builder} A self reference.
355
+ */
356
+ setEdgeOptions(options) {
357
+ this.edgeOptions_ = options;
358
+ return this;
359
+ }
294
360
 
295
- /**
296
- * Sets Chrome specific {@linkplain selenium-webdriver/chrome.Options options}
297
- * for drivers created by this builder. Any logging or proxy settings defined
298
- * on the given options will take precedence over those set through
299
- * {@link #setLoggingPrefs} and {@link #setProxy}, respectively.
300
- *
301
- * @param {!chrome.Options} options The ChromeDriver options to use.
302
- * @return {!Builder} A self reference.
303
- */
304
- Builder.prototype.setChromeOptions = function(options) {
305
- this.chromeOptions_ = options;
306
- return this;
307
- };
361
+ /**
362
+ * Sets Safari specific {@linkplain safari.Options options} for drivers
363
+ * created by this builder. Any logging settings defined on the given options
364
+ * will take precedence over those set through {@link #setLoggingPrefs}.
365
+ *
366
+ * @param {!safari.Options} options The Safari options to use.
367
+ * @return {!Builder} A self reference.
368
+ */
369
+ setSafariOptions(options) {
370
+ this.safariOptions_ = options;
371
+ return this;
372
+ }
308
373
 
374
+ /**
375
+ * Sets the control flow that created drivers should execute actions in. If
376
+ * the flow is never set, or is set to {@code null}, it will use the active
377
+ * flow at the time {@link #build()} is called.
378
+ * @param {promise.ControlFlow} flow The control flow to use, or
379
+ * {@code null} to
380
+ * @return {!Builder} A self reference.
381
+ */
382
+ setControlFlow(flow) {
383
+ this.flow_ = flow;
384
+ return this;
385
+ }
309
386
 
310
- /**
311
- * Sets Firefox specific {@linkplain selenium-webdriver/firefox.Options options}
312
- * for drivers created by this builder. Any logging or proxy settings defined
313
- * on the given options will take precedence over those set through
314
- * {@link #setLoggingPrefs} and {@link #setProxy}, respectively.
315
- *
316
- * @param {!firefox.Options} options The FirefoxDriver options to use.
317
- * @return {!Builder} A self reference.
318
- */
319
- Builder.prototype.setFirefoxOptions = function(options) {
320
- this.firefoxOptions_ = options;
321
- return this;
322
- };
387
+ /**
388
+ * Creates a new WebDriver client based on this builder's current
389
+ * configuration.
390
+ *
391
+ * While this method will immediately return a new WebDriver instance, any
392
+ * commands issued against it will be deferred until the associated browser
393
+ * has been fully initialized. Users may call {@link #buildAsync()} to obtain
394
+ * a promise that will not be fulfilled until the browser has been created
395
+ * (the difference is purely in style).
396
+ *
397
+ * @return {!webdriver.WebDriver} A new WebDriver instance.
398
+ * @throws {Error} If the current configuration is invalid.
399
+ * @see #buildAsync()
400
+ */
401
+ build() {
402
+ // Create a copy for any changes we may need to make based on the current
403
+ // environment.
404
+ var capabilities = new Capabilities(this.capabilities_);
405
+
406
+ var browser;
407
+ if (!this.ignoreEnv_ && process.env.SELENIUM_BROWSER) {
408
+ browser = process.env.SELENIUM_BROWSER.split(/:/, 3);
409
+ capabilities.set(Capability.BROWSER_NAME, browser[0]);
410
+ capabilities.set(Capability.VERSION, browser[1] || null);
411
+ capabilities.set(Capability.PLATFORM, browser[2] || null);
412
+ }
323
413
 
414
+ browser = capabilities.get(Capability.BROWSER_NAME);
324
415
 
325
- /**
326
- * Sets Opera specific {@linkplain selenium-webdriver/opera.Options options} for
327
- * drivers created by this builder. Any logging or proxy settings defined on the
328
- * given options will take precedence over those set through
329
- * {@link #setLoggingPrefs} and {@link #setProxy}, respectively.
330
- *
331
- * @param {!opera.Options} options The OperaDriver options to use.
332
- * @return {!Builder} A self reference.
333
- */
334
- Builder.prototype.setOperaOptions = function(options) {
335
- this.operaOptions_ = options;
336
- return this;
337
- };
416
+ if (typeof browser !== 'string') {
417
+ throw TypeError(
418
+ `Target browser must be a string, but is <${typeof browser}>;` +
419
+ ' did you forget to call forBrowser()?');
420
+ }
338
421
 
422
+ if (browser === 'ie') {
423
+ browser = Browser.INTERNET_EXPLORER;
424
+ }
339
425
 
340
- /**
341
- * Sets Internet Explorer specific
342
- * {@linkplain selenium-webdriver/ie.Options options} for drivers created by
343
- * this builder. Any proxy settings defined on the given options will take
344
- * precedence over those set through {@link #setProxy}.
345
- *
346
- * @param {!ie.Options} options The IEDriver options to use.
347
- * @return {!Builder} A self reference.
348
- */
349
- Builder.prototype.setIeOptions = function(options) {
350
- this.ieOptions_ = options;
351
- return this;
352
- };
426
+ // Apply browser specific overrides.
427
+ if (browser === Browser.CHROME && this.chromeOptions_) {
428
+ capabilities.merge(this.chromeOptions_.toCapabilities());
353
429
 
430
+ } else if (browser === Browser.FIREFOX && this.firefoxOptions_) {
431
+ capabilities.merge(this.firefoxOptions_.toCapabilities());
354
432
 
355
- /**
356
- * Sets Safari specific {@linkplain selenium-webdriver/safari.Options options}
357
- * for drivers created by this builder. Any logging settings defined on the
358
- * given options will take precedence over those set through
359
- * {@link #setLoggingPrefs}.
360
- *
361
- * @param {!safari.Options} options The Safari options to use.
362
- * @return {!Builder} A self reference.
363
- */
364
- Builder.prototype.setSafariOptions = function(options) {
365
- this.safariOptions_ = options;
366
- return this;
367
- };
433
+ } else if (browser === Browser.INTERNET_EXPLORER && this.ieOptions_) {
434
+ capabilities.merge(this.ieOptions_.toCapabilities());
368
435
 
436
+ } else if (browser === Browser.OPERA && this.operaOptions_) {
437
+ capabilities.merge(this.operaOptions_.toCapabilities());
369
438
 
370
- /**
371
- * Sets the control flow that created drivers should execute actions in. If
372
- * the flow is never set, or is set to {@code null}, it will use the active
373
- * flow at the time {@link #build()} is called.
374
- * @param {webdriver.promise.ControlFlow} flow The control flow to use, or
375
- * {@code null} to
376
- * @return {!Builder} A self reference.
377
- */
378
- Builder.prototype.setControlFlow = function(flow) {
379
- this.flow_ = flow;
380
- return this;
381
- };
439
+ } else if (browser === Browser.SAFARI && this.safariOptions_) {
440
+ capabilities.merge(this.safariOptions_.toCapabilities());
382
441
 
442
+ } else if (browser === Browser.EDGE && this.edgeOptions_) {
443
+ capabilities.merge(this.edgeOptions_.toCapabilities());
444
+ }
383
445
 
384
- /**
385
- * Creates a new WebDriver client based on this builder's current
386
- * configuration.
387
- *
388
- * @return {!webdriver.WebDriver} A new WebDriver instance.
389
- * @throws {Error} If the current configuration is invalid.
390
- */
391
- Builder.prototype.build = function() {
392
- // Create a copy for any changes we may need to make based on the current
393
- // environment.
394
- var capabilities = new Capabilities(this.capabilities_);
395
-
396
- var browser;
397
- if (!this.ignoreEnv_ && process.env.SELENIUM_BROWSER) {
398
- browser = process.env.SELENIUM_BROWSER.split(/:/, 3);
399
- capabilities.set(Capability.BROWSER_NAME, browser[0]);
400
- capabilities.set(Capability.VERSION, browser[1] || null);
401
- capabilities.set(Capability.PLATFORM, browser[2] || null);
402
- }
446
+ // Check for a remote browser.
447
+ var url = this.url_;
448
+ if (!this.ignoreEnv_) {
449
+ if (process.env.SELENIUM_REMOTE_URL) {
450
+ url = process.env.SELENIUM_REMOTE_URL;
451
+ } else if (process.env.SELENIUM_SERVER_JAR) {
452
+ url = startSeleniumServer(process.env.SELENIUM_SERVER_JAR);
453
+ }
454
+ }
403
455
 
404
- browser = capabilities.get(Capability.BROWSER_NAME);
456
+ if (url) {
457
+ var executor = executors.createExecutor(url, this.proxy_);
458
+ return WebDriver.createSession(executor, capabilities, this.flow_);
459
+ }
405
460
 
406
- if (typeof browser !== 'string') {
407
- throw TypeError(
408
- 'Target browser must be a string, but is <' + (typeof browser) + '>;' +
409
- ' did you forget to call forBrowser()?');
410
- }
461
+ // Check for a native browser.
462
+ switch (browser) {
463
+ case Browser.CHROME:
464
+ return new chrome.Driver(capabilities, null, this.flow_);
411
465
 
412
- if (browser === 'ie') {
413
- browser = Browser.INTERNET_EXPLORER;
414
- }
466
+ case Browser.FIREFOX:
467
+ return new firefox.Driver(capabilities, this.flow_);
415
468
 
416
- // Apply browser specific overrides.
417
- if (browser === Browser.CHROME && this.chromeOptions_) {
418
- capabilities.merge(this.chromeOptions_.toCapabilities());
469
+ case Browser.INTERNET_EXPLORER:
470
+ return new ie.Driver(capabilities, this.flow_);
419
471
 
420
- } else if (browser === Browser.FIREFOX && this.firefoxOptions_) {
421
- capabilities.merge(this.firefoxOptions_.toCapabilities());
472
+ case Browser.EDGE:
473
+ return new edge.Driver(capabilities, null, this.flow_);
422
474
 
423
- } else if (browser === Browser.INTERNET_EXPLORER && this.ieOptions_) {
424
- capabilities.merge(this.ieOptions_.toCapabilities());
475
+ case Browser.OPERA:
476
+ return new opera.Driver(capabilities, null, this.flow_);
425
477
 
426
- } else if (browser === Browser.OPERA && this.operaOptions_) {
427
- capabilities.merge(this.operaOptions_.toCapabilities());
478
+ case Browser.PHANTOM_JS:
479
+ return new phantomjs.Driver(capabilities, this.flow_);
428
480
 
429
- } else if (browser === Browser.SAFARI && this.safariOptions_) {
430
- capabilities.merge(this.safariOptions_.toCapabilities());
431
- }
481
+ case Browser.SAFARI:
482
+ return new safari.Driver(capabilities, this.flow_);
432
483
 
433
- // Check for a remote browser.
434
- var url = this.url_;
435
- if (!this.ignoreEnv_) {
436
- if (process.env.SELENIUM_REMOTE_URL) {
437
- url = process.env.SELENIUM_REMOTE_URL;
438
- } else if (process.env.SELENIUM_SERVER_JAR) {
439
- url = startSeleniumServer(process.env.SELENIUM_SERVER_JAR);
484
+ default:
485
+ throw new Error('Do not know how to build driver: ' + browser
486
+ + '; did you forget to call usingServer(url)?');
440
487
  }
441
488
  }
442
489
 
443
- if (url) {
444
- var executor = executors.createExecutor(url, this.proxy_);
445
- return WebDriver.createSession(executor, capabilities, this.flow_);
490
+ /**
491
+ * Creates a new WebDriver client based on this builder's current
492
+ * configuration. This method returns a promise that will not be fulfilled
493
+ * until the new browser session has been fully initialized.
494
+ *
495
+ * __Note:__ this method is purely a convenience wrapper around
496
+ * {@link #build()}.
497
+ *
498
+ * @return {!promise.Promise<!webdriver.WebDriver>} A promise that will be
499
+ * fulfilled with the newly created WebDriver instance once the browser
500
+ * has been fully initialized.
501
+ * @see #build()
502
+ */
503
+ buildAsync() {
504
+ let driver = this.build();
505
+ return driver.getSession().then(() => driver);
446
506
  }
447
-
448
- // Check for a native browser.
449
- switch (browser) {
450
- case Browser.CHROME:
451
- // Requiring 'chrome' above would create a cycle:
452
- // index -> builder -> chrome -> index
453
- var chrome = require('./chrome');
454
- return new chrome.Driver(capabilities, null, this.flow_);
455
-
456
- case Browser.FIREFOX:
457
- // Requiring 'firefox' above would create a cycle:
458
- // index -> builder -> firefox -> index
459
- var firefox = require('./firefox');
460
- return new firefox.Driver(capabilities, this.flow_);
461
-
462
- case Browser.INTERNET_EXPLORER:
463
- // Requiring 'ie' above would create a cycle:
464
- // index -> builder -> ie -> index
465
- var ie = require('./ie');
466
- return new ie.Driver(capabilities, this.flow_);
467
-
468
- case Browser.OPERA:
469
- // Requiring 'opera' would create a cycle:
470
- // index -> builder -> opera -> index
471
- var opera = require('./opera');
472
- return new opera.Driver(capabilities, this.flow_);
473
-
474
- case Browser.PHANTOM_JS:
475
- // Requiring 'phantomjs' would create a cycle:
476
- // index -> builder -> phantomjs -> index
477
- var phantomjs = require('./phantomjs');
478
- return new phantomjs.Driver(capabilities, this.flow_);
479
-
480
- case Browser.SAFARI:
481
- // Requiring 'safari' would create a cycle:
482
- // index -> builder -> safari -> index
483
- var safari = require('./safari');
484
- return new safari.Driver(capabilities, this.flow_);
485
-
486
- default:
487
- throw new Error('Do not know how to build driver: ' + browser
488
- + '; did you forget to call usingServer(url)?');
489
- }
490
- };
507
+ }
491
508
 
492
509
 
493
510
  // PUBLIC API