selenium-webdriver 2.48.2 → 2.53.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/CHANGES.md +116 -0
  2. package/NOTICE +1 -1
  3. package/README.md +59 -9
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +9 -6
  8. package/example/google_search.js +1 -1
  9. package/example/google_search_generator.js +2 -4
  10. package/example/logging.js +6 -2
  11. package/example/sample.js +21 -0
  12. package/executors.js +11 -27
  13. package/firefox/binary.js +149 -98
  14. package/firefox/extension.js +15 -19
  15. package/firefox/index.js +256 -163
  16. package/firefox/profile.js +223 -243
  17. package/http/index.js +487 -81
  18. package/http/util.js +40 -36
  19. package/ie.js +288 -309
  20. package/index.js +34 -125
  21. package/io/exec.js +58 -39
  22. package/io/index.js +72 -60
  23. package/lib/README +4 -0
  24. package/lib/actions.js +596 -0
  25. package/lib/by.js +277 -0
  26. package/lib/capabilities.js +450 -0
  27. package/lib/{webdriver/command.js → command.js} +91 -72
  28. package/lib/{webdriver/button.js → devmode.js} +13 -8
  29. package/lib/error.js +690 -0
  30. package/lib/events.js +212 -0
  31. package/lib/firefox/amd64/libnoblur64.so +0 -0
  32. package/lib/firefox/i386/libnoblur.so +0 -0
  33. package/lib/firefox/webdriver.json +5 -1
  34. package/lib/firefox/webdriver.xpi +0 -0
  35. package/lib/{webdriver/key.js → input.js} +84 -2
  36. package/lib/logging.js +670 -0
  37. package/lib/{webdriver/promise.js → promise.js} +817 -644
  38. package/lib/safari/client.js +266 -214
  39. package/lib/session.js +80 -0
  40. package/lib/{webdriver/serializable.js → symbols.js} +16 -19
  41. package/lib/test/build.js +4 -4
  42. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  43. package/lib/test/data/click_tests/overlapping_elements.html +15 -4
  44. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  45. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  46. package/lib/test/data/hidden_partially.html +45 -0
  47. package/lib/test/data/readOnlyPage.html +1 -1
  48. package/lib/test/data/selectPage.html +18 -2
  49. package/lib/test/fileserver.js +3 -4
  50. package/lib/test/index.js +7 -3
  51. package/lib/test/resources.js +1 -1
  52. package/lib/until.js +376 -0
  53. package/lib/webdriver.js +2440 -0
  54. package/net/index.js +4 -0
  55. package/net/portprober.js +16 -12
  56. package/opera.js +295 -314
  57. package/package.json +6 -5
  58. package/phantomjs.js +144 -147
  59. package/proxy.js +10 -6
  60. package/remote/index.js +289 -238
  61. package/safari.js +326 -311
  62. package/test/chrome/options_test.js +11 -9
  63. package/test/element_finding_test.js +51 -13
  64. package/test/execute_script_test.js +17 -3
  65. package/test/firefox/firefox_test.js +0 -32
  66. package/test/http/http_test.js +671 -61
  67. package/test/http/util_test.js +25 -23
  68. package/test/io_test.js +67 -1
  69. package/test/lib/by_test.js +139 -0
  70. package/test/lib/capabilities_test.js +111 -0
  71. package/test/lib/error_test.js +325 -0
  72. package/test/lib/events_test.js +177 -0
  73. package/test/lib/logging_test.js +272 -0
  74. package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
  75. package/test/lib/promise_error_test.js +808 -0
  76. package/test/lib/promise_flow_test.js +2282 -0
  77. package/test/lib/promise_generator_test.js +308 -0
  78. package/test/lib/promise_test.js +996 -0
  79. package/test/lib/testutil.js +90 -0
  80. package/test/lib/until_test.js +400 -0
  81. package/test/lib/webdriver_test.js +2157 -0
  82. package/test/page_loading_test.js +7 -9
  83. package/test/remote_test.js +50 -3
  84. package/test/session_test.js +53 -0
  85. package/test/stale_element_test.js +2 -2
  86. package/test/testing/assert_test.js +374 -0
  87. package/test/testing/index_test.js +9 -11
  88. package/testing/assert.js +334 -17
  89. package/testing/index.js +12 -2
  90. package/_base.js +0 -200
  91. package/docs/Changes.html +0 -356
  92. package/docs/class_bot_Error.html +0 -15
  93. package/docs/class_webdriver_ActionSequence.html +0 -115
  94. package/docs/class_webdriver_Alert.html +0 -24
  95. package/docs/class_webdriver_AlertPromise.html +0 -92
  96. package/docs/class_webdriver_Capabilities.html +0 -60
  97. package/docs/class_webdriver_Command.html +0 -15
  98. package/docs/class_webdriver_EventEmitter.html +0 -35
  99. package/docs/class_webdriver_FileDetector.html +0 -21
  100. package/docs/class_webdriver_Locator.html +0 -12
  101. package/docs/class_webdriver_Serializable.html +0 -9
  102. package/docs/class_webdriver_Session.html +0 -13
  103. package/docs/class_webdriver_TouchSequence.html +0 -49
  104. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  105. package/docs/class_webdriver_WebDriver.html +0 -313
  106. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  107. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  108. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  109. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  110. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  111. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  112. package/docs/class_webdriver_WebElement.html +0 -223
  113. package/docs/class_webdriver_WebElementPromise.html +0 -274
  114. package/docs/class_webdriver_http_Executor.html +0 -22
  115. package/docs/class_webdriver_http_Request.html +0 -12
  116. package/docs/class_webdriver_http_Response.html +0 -13
  117. package/docs/class_webdriver_logging_Entry.html +0 -15
  118. package/docs/class_webdriver_logging_Level.html +0 -55
  119. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  120. package/docs/class_webdriver_logging_Logger.html +0 -119
  121. package/docs/class_webdriver_logging_Preferences.html +0 -8
  122. package/docs/class_webdriver_promise_CancellationError.html +0 -17
  123. package/docs/class_webdriver_promise_ControlFlow.html +0 -153
  124. package/docs/class_webdriver_promise_Deferred.html +0 -84
  125. package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
  126. package/docs/class_webdriver_promise_Promise.html +0 -75
  127. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  128. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  129. package/docs/class_webdriver_testing_Assertion.html +0 -99
  130. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  131. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  132. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  133. package/docs/class_webdriver_until_Condition.html +0 -7
  134. package/docs/dossier.css +0 -1
  135. package/docs/dossier.js +0 -86
  136. package/docs/enum_bot_ErrorCode.html +0 -3
  137. package/docs/enum_bot_Error_State.html +0 -2
  138. package/docs/enum_webdriver_Browser.html +0 -2
  139. package/docs/enum_webdriver_Button.html +0 -2
  140. package/docs/enum_webdriver_Capability.html +0 -33
  141. package/docs/enum_webdriver_CommandName.html +0 -3
  142. package/docs/enum_webdriver_Key.html +0 -12
  143. package/docs/enum_webdriver_logging_Type.html +0 -6
  144. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  145. package/docs/index.html +0 -125
  146. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  147. package/docs/interface_webdriver_http_Client.html +0 -10
  148. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  149. package/docs/module_selenium-webdriver.html +0 -23
  150. package/docs/module_selenium-webdriver__base.html +0 -23
  151. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  152. package/docs/module_selenium-webdriver_builder.html +0 -2
  153. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  154. package/docs/module_selenium-webdriver_chrome.html +0 -90
  155. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  156. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  157. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  158. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  159. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  160. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  161. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  162. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  163. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  164. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  165. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  166. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  167. package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
  168. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
  169. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  170. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  171. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  172. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  173. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  174. package/docs/module_selenium-webdriver_error.html +0 -4
  175. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  176. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  177. package/docs/module_selenium-webdriver_executors.html +0 -10
  178. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  179. package/docs/module_selenium-webdriver_firefox.html +0 -68
  180. package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
  181. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
  182. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
  183. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  184. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  185. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  186. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  187. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  188. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  189. package/docs/module_selenium-webdriver_http.html +0 -9
  190. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  191. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  192. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  193. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  194. package/docs/module_selenium-webdriver_http_util.html +0 -17
  195. package/docs/module_selenium-webdriver_ie.html +0 -11
  196. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  197. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  198. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  199. package/docs/module_selenium-webdriver_io.html +0 -37
  200. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  201. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  202. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  203. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  204. package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
  205. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  206. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  207. package/docs/module_selenium-webdriver_net.html +0 -7
  208. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  209. package/docs/module_selenium-webdriver_opera.html +0 -62
  210. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  211. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  212. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  213. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  214. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  215. package/docs/module_selenium-webdriver_proxy.html +0 -28
  216. package/docs/module_selenium-webdriver_remote.html +0 -8
  217. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  218. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  219. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
  220. package/docs/module_selenium-webdriver_safari.html +0 -9
  221. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  222. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  223. package/docs/module_selenium-webdriver_testing.html +0 -74
  224. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  225. package/docs/namespace_bot.html +0 -4
  226. package/docs/namespace_bot_json.html +0 -20
  227. package/docs/namespace_bot_response.html +0 -18
  228. package/docs/namespace_bot_userAgent.html +0 -33
  229. package/docs/namespace_webdriver.html +0 -30
  230. package/docs/namespace_webdriver_By.html +0 -56
  231. package/docs/namespace_webdriver_http.html +0 -6
  232. package/docs/namespace_webdriver_logging.html +0 -70
  233. package/docs/namespace_webdriver_promise.html +0 -688
  234. package/docs/namespace_webdriver_stacktrace.html +0 -17
  235. package/docs/namespace_webdriver_testing.html +0 -7
  236. package/docs/namespace_webdriver_testing_assert.html +0 -9
  237. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  238. package/docs/namespace_webdriver_until.html +0 -82
  239. package/docs/source/_base.js.src.html +0 -1
  240. package/docs/source/builder.js.src.html +0 -1
  241. package/docs/source/chrome.js.src.html +0 -1
  242. package/docs/source/error.js.src.html +0 -1
  243. package/docs/source/executors.js.src.html +0 -1
  244. package/docs/source/firefox/binary.js.src.html +0 -1
  245. package/docs/source/firefox/extension.js.src.html +0 -1
  246. package/docs/source/firefox/index.js.src.html +0 -1
  247. package/docs/source/firefox/profile.js.src.html +0 -1
  248. package/docs/source/http/index.js.src.html +0 -1
  249. package/docs/source/http/util.js.src.html +0 -1
  250. package/docs/source/ie.js.src.html +0 -1
  251. package/docs/source/index.js.src.html +0 -1
  252. package/docs/source/io/exec.js.src.html +0 -1
  253. package/docs/source/io/index.js.src.html +0 -1
  254. package/docs/source/lib/atoms/error.js.src.html +0 -1
  255. package/docs/source/lib/atoms/json.js.src.html +0 -1
  256. package/docs/source/lib/atoms/response.js.src.html +0 -1
  257. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  258. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  259. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  260. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  261. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  262. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  263. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  264. package/docs/source/lib/goog/base.js.src.html +0 -1
  265. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  266. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  267. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  268. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  269. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  270. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  271. package/docs/source/lib/goog/deps.js.src.html +0 -1
  272. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  273. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  274. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  275. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  276. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  277. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  278. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  279. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  280. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  285. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  286. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  287. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  288. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  289. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  290. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  291. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  292. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  293. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  294. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  295. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  296. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  297. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  298. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  299. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  300. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  301. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  302. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  303. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  307. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  308. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  309. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  310. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  311. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  312. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  313. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  314. package/docs/source/lib/goog/log/log.js.src.html +0 -1
  315. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  316. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  317. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  318. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  319. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  320. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  321. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  322. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  323. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  324. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  325. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  326. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  327. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  328. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  329. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  330. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  331. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  332. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  333. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  334. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  335. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  336. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  348. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  349. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  350. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  351. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  352. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  353. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  354. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  355. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  356. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  357. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  358. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  369. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  370. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  371. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  372. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  373. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  374. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  375. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  376. package/docs/source/net/index.js.src.html +0 -1
  377. package/docs/source/net/portprober.js.src.html +0 -1
  378. package/docs/source/opera.js.src.html +0 -1
  379. package/docs/source/phantomjs.js.src.html +0 -1
  380. package/docs/source/proxy.js.src.html +0 -1
  381. package/docs/source/remote/index.js.src.html +0 -1
  382. package/docs/source/safari.js.src.html +0 -1
  383. package/docs/source/testing/assert.js.src.html +0 -1
  384. package/docs/source/testing/index.js.src.html +0 -1
  385. package/docs/types.js +0 -1
  386. package/lib/atoms/error.js +0 -202
  387. package/lib/atoms/json.js +0 -80
  388. package/lib/atoms/response.js +0 -110
  389. package/lib/atoms/userAgent.js +0 -257
  390. package/lib/goog/LICENSE +0 -176
  391. package/lib/goog/array/array.js +0 -1654
  392. package/lib/goog/asserts/asserts.js +0 -365
  393. package/lib/goog/async/freelist.js +0 -88
  394. package/lib/goog/async/nexttick.js +0 -241
  395. package/lib/goog/async/run.js +0 -133
  396. package/lib/goog/async/workqueue.js +0 -139
  397. package/lib/goog/base.js +0 -2548
  398. package/lib/goog/debug/debug.js +0 -653
  399. package/lib/goog/debug/entrypointregistry.js +0 -158
  400. package/lib/goog/debug/error.js +0 -63
  401. package/lib/goog/debug/logbuffer.js +0 -148
  402. package/lib/goog/debug/logger.js +0 -873
  403. package/lib/goog/debug/logrecord.js +0 -242
  404. package/lib/goog/deps.js +0 -151
  405. package/lib/goog/disposable/disposable.js +0 -307
  406. package/lib/goog/disposable/idisposable.js +0 -45
  407. package/lib/goog/dom/browserfeature.js +0 -72
  408. package/lib/goog/dom/dom.js +0 -2991
  409. package/lib/goog/dom/nodetype.js +0 -48
  410. package/lib/goog/dom/safe.js +0 -347
  411. package/lib/goog/dom/tagname.js +0 -160
  412. package/lib/goog/dom/tags.js +0 -41
  413. package/lib/goog/dom/vendor.js +0 -96
  414. package/lib/goog/events/browserevent.js +0 -400
  415. package/lib/goog/events/browserfeature.js +0 -85
  416. package/lib/goog/events/event.js +0 -143
  417. package/lib/goog/events/eventid.js +0 -47
  418. package/lib/goog/events/events.js +0 -984
  419. package/lib/goog/events/eventtarget.js +0 -394
  420. package/lib/goog/events/eventtype.js +0 -237
  421. package/lib/goog/events/keycodes.js +0 -427
  422. package/lib/goog/events/listenable.js +0 -335
  423. package/lib/goog/events/listener.js +0 -131
  424. package/lib/goog/events/listenermap.js +0 -308
  425. package/lib/goog/fs/url.js +0 -109
  426. package/lib/goog/functions/functions.js +0 -442
  427. package/lib/goog/html/safehtml.js +0 -757
  428. package/lib/goog/html/safescript.js +0 -234
  429. package/lib/goog/html/safestyle.js +0 -442
  430. package/lib/goog/html/safestylesheet.js +0 -276
  431. package/lib/goog/html/safeurl.js +0 -398
  432. package/lib/goog/html/trustedresourceurl.js +0 -224
  433. package/lib/goog/html/uncheckedconversions.js +0 -232
  434. package/lib/goog/i18n/bidi.js +0 -908
  435. package/lib/goog/iter/iter.js +0 -1302
  436. package/lib/goog/json/json.js +0 -363
  437. package/lib/goog/labs/testing/assertthat.js +0 -58
  438. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  439. package/lib/goog/labs/testing/matcher.js +0 -80
  440. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  441. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  442. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  443. package/lib/goog/labs/useragent/browser.js +0 -341
  444. package/lib/goog/labs/useragent/engine.js +0 -160
  445. package/lib/goog/labs/useragent/platform.js +0 -160
  446. package/lib/goog/labs/useragent/util.js +0 -148
  447. package/lib/goog/log/log.js +0 -197
  448. package/lib/goog/math/box.js +0 -398
  449. package/lib/goog/math/coordinate.js +0 -268
  450. package/lib/goog/math/math.js +0 -451
  451. package/lib/goog/math/rect.js +0 -476
  452. package/lib/goog/math/size.js +0 -227
  453. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  454. package/lib/goog/net/xhrlike.js +0 -124
  455. package/lib/goog/net/xmlhttp.js +0 -246
  456. package/lib/goog/net/xmlhttpfactory.js +0 -67
  457. package/lib/goog/object/object.js +0 -686
  458. package/lib/goog/promise/promise.js +0 -1350
  459. package/lib/goog/promise/resolver.js +0 -48
  460. package/lib/goog/promise/thenable.js +0 -126
  461. package/lib/goog/reflect/reflect.js +0 -77
  462. package/lib/goog/string/const.js +0 -182
  463. package/lib/goog/string/string.js +0 -1599
  464. package/lib/goog/string/typedstring.js +0 -48
  465. package/lib/goog/structs/collection.js +0 -56
  466. package/lib/goog/structs/map.js +0 -457
  467. package/lib/goog/structs/set.js +0 -279
  468. package/lib/goog/structs/structs.js +0 -354
  469. package/lib/goog/style/style.js +0 -2037
  470. package/lib/goog/testing/asserts.js +0 -1278
  471. package/lib/goog/testing/events/events.js +0 -767
  472. package/lib/goog/testing/functionmock.js +0 -175
  473. package/lib/goog/testing/jsunit.js +0 -162
  474. package/lib/goog/testing/loosemock.js +0 -242
  475. package/lib/goog/testing/mock.js +0 -645
  476. package/lib/goog/testing/mockclock.js +0 -606
  477. package/lib/goog/testing/mockcontrol.js +0 -220
  478. package/lib/goog/testing/mockinterface.js +0 -45
  479. package/lib/goog/testing/mockmatchers.js +0 -400
  480. package/lib/goog/testing/objectpropertystring.js +0 -68
  481. package/lib/goog/testing/propertyreplacer.js +0 -262
  482. package/lib/goog/testing/recordfunction.js +0 -215
  483. package/lib/goog/testing/stacktrace.js +0 -594
  484. package/lib/goog/testing/strictmock.js +0 -130
  485. package/lib/goog/testing/testcase.js +0 -1629
  486. package/lib/goog/testing/testrunner.js +0 -440
  487. package/lib/goog/uri/uri.js +0 -1524
  488. package/lib/goog/uri/utils.js +0 -1064
  489. package/lib/goog/useragent/product.js +0 -183
  490. package/lib/goog/useragent/product_isversion.js +0 -144
  491. package/lib/goog/useragent/useragent.js +0 -572
  492. package/lib/webdriver/actionsequence.js +0 -356
  493. package/lib/webdriver/builder.js +0 -207
  494. package/lib/webdriver/capabilities.js +0 -412
  495. package/lib/webdriver/events.js +0 -179
  496. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  497. package/lib/webdriver/http/corsclient.js +0 -133
  498. package/lib/webdriver/http/http.js +0 -525
  499. package/lib/webdriver/http/xhrclient.js +0 -67
  500. package/lib/webdriver/locators.js +0 -257
  501. package/lib/webdriver/logging.js +0 -347
  502. package/lib/webdriver/session.js +0 -74
  503. package/lib/webdriver/stacktrace.js +0 -619
  504. package/lib/webdriver/test/builder_test.js +0 -53
  505. package/lib/webdriver/test/capabilities_test.js +0 -72
  506. package/lib/webdriver/test/events_test.js +0 -203
  507. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  508. package/lib/webdriver/test/http/http_test.js +0 -428
  509. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  510. package/lib/webdriver/test/locators_test.js +0 -59
  511. package/lib/webdriver/test/logging_test.js +0 -85
  512. package/lib/webdriver/test/promise_error_test.js +0 -892
  513. package/lib/webdriver/test/promise_flow_test.js +0 -2365
  514. package/lib/webdriver/test/promise_generator_test.js +0 -323
  515. package/lib/webdriver/test/promise_test.js +0 -2012
  516. package/lib/webdriver/test/stacktrace_test.js +0 -480
  517. package/lib/webdriver/test/test_bootstrap.js +0 -67
  518. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  519. package/lib/webdriver/test/testing/client_test.js +0 -88
  520. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  521. package/lib/webdriver/test/testutil.js +0 -209
  522. package/lib/webdriver/test/testutil_test.js +0 -104
  523. package/lib/webdriver/test/until_test.js +0 -411
  524. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  525. package/lib/webdriver/test/webdriver_test.js +0 -2369
  526. package/lib/webdriver/testing/asserts.js +0 -487
  527. package/lib/webdriver/testing/client.js +0 -179
  528. package/lib/webdriver/testing/jsunit.js +0 -363
  529. package/lib/webdriver/testing/testcase.js +0 -168
  530. package/lib/webdriver/testing/window.js +0 -244
  531. package/lib/webdriver/touchsequence.js +0 -248
  532. package/lib/webdriver/until.js +0 -412
  533. package/lib/webdriver/webdriver.js +0 -2511
  534. package/test/_base_test.js +0 -129
package/edge.js ADDED
@@ -0,0 +1,378 @@
1
+ // Licensed to the Software Freedom Conservancy (SFC) under one
2
+ // or more contributor license agreements. See the NOTICE file
3
+ // distributed with this work for additional information
4
+ // regarding copyright ownership. The SFC licenses this file
5
+ // to you under the Apache License, Version 2.0 (the
6
+ // "License"); you may not use this file except in compliance
7
+ // with the License. You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing,
12
+ // software distributed under the License is distributed on an
13
+ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ // KIND, either express or implied. See the License for the
15
+ // specific language governing permissions and limitations
16
+ // under the License.
17
+
18
+ /**
19
+ * @fileoverview Defines a {@linkplain Driver WebDriver} client for
20
+ * Microsoft's Edge web browser. Before using this module,
21
+ * you must download and install the latest
22
+ * [MicrosoftEdgeDriver](http://go.microsoft.com/fwlink/?LinkId=619687) server.
23
+ * Ensure that the MicrosoftEdgeDriver is on your
24
+ * [PATH](http://en.wikipedia.org/wiki/PATH_%28variable%29).
25
+ *
26
+ * There are three primary classes exported by this module:
27
+ *
28
+ * 1. {@linkplain ServiceBuilder}: configures the
29
+ * {@link ./remote.DriverService remote.DriverService}
30
+ * that manages the [MicrosoftEdgeDriver] child process.
31
+ *
32
+ * 2. {@linkplain Options}: defines configuration options for each new
33
+ * MicrosoftEdgeDriver session, such as which
34
+ * {@linkplain Options#setProxy proxy} to use when starting the browser.
35
+ *
36
+ * 3. {@linkplain Driver}: the WebDriver client; each new instance will control
37
+ * a unique browser session.
38
+ *
39
+ * __Customizing the MicrosoftEdgeDriver Server__ <a id="custom-server"></a>
40
+ *
41
+ * By default, every MicrosoftEdge session will use a single driver service,
42
+ * which is started the first time a {@link Driver} instance is created and
43
+ * terminated when this process exits. The default service will inherit its
44
+ * environment from the current process.
45
+ * You may obtain a handle to this default service using
46
+ * {@link #getDefaultService getDefaultService()} and change its configuration
47
+ * with {@link #setDefaultService setDefaultService()}.
48
+ *
49
+ * You may also create a {@link Driver} with its own driver service. This is
50
+ * useful if you need to capture the server's log output for a specific session:
51
+ *
52
+ * var edge = require('selenium-webdriver/edge');
53
+ *
54
+ * var service = new edge.ServiceBuilder()
55
+ * .usingPort(55555)
56
+ * .build();
57
+ *
58
+ * var options = new edge.Options();
59
+ * // configure browser options ...
60
+ *
61
+ * var driver = new edge.Driver(options, service);
62
+ *
63
+ * Users should only instantiate the {@link Driver} class directly when they
64
+ * need a custom driver service configuration (as shown above). For normal
65
+ * operation, users should start MicrosoftEdge using the
66
+ * {@link ./builder.Builder selenium-webdriver.Builder}.
67
+ *
68
+ * [MicrosoftEdgeDriver]: https://msdn.microsoft.com/en-us/library/mt188085(v=vs.85).aspx
69
+ */
70
+
71
+ 'use strict';
72
+
73
+ const fs = require('fs'),
74
+ util = require('util');
75
+
76
+ const executors = require('./executors'),
77
+ io = require('./io'),
78
+ capabilities = require('./lib/capabilities'),
79
+ promise = require('./lib/promise'),
80
+ Symbols = require('./lib/symbols'),
81
+ webdriver = require('./lib/webdriver'),
82
+ portprober = require('./net/portprober'),
83
+ remote = require('./remote');
84
+
85
+ const EDGEDRIVER_EXE = 'MicrosoftWebDriver.exe';
86
+
87
+
88
+ /**
89
+ * Option keys.
90
+ * @enum {string}
91
+ */
92
+ const CAPABILITY_KEY = {
93
+ PAGE_LOAD_STRATEGY: 'pageLoadStrategy'
94
+ };
95
+
96
+
97
+ /**
98
+ * Class for managing MicrosoftEdgeDriver specific options.
99
+ */
100
+ class Options {
101
+ constructor() {
102
+ /** @private {!Object} */
103
+ this.options_ = {};
104
+
105
+ /** @private {?capabilities.ProxyConfig} */
106
+ this.proxy_ = null;
107
+ }
108
+
109
+ /**
110
+ * Extracts the MicrosoftEdgeDriver specific options from the given
111
+ * capabilities object.
112
+ * @param {!capabilities.Capabilities} caps The capabilities object.
113
+ * @return {!Options} The MicrosoftEdgeDriver options.
114
+ */
115
+ static fromCapabilities(caps) {
116
+ var options = new Options();
117
+ var map = options.options_;
118
+
119
+ Object.keys(CAPABILITY_KEY).forEach(function(key) {
120
+ key = CAPABILITY_KEY[key];
121
+ if (caps.has(key)) {
122
+ map[key] = caps.get(key);
123
+ }
124
+ });
125
+
126
+ if (caps.has(capabilities.Capability.PROXY)) {
127
+ options.setProxy(caps.get(capabilities.Capability.PROXY));
128
+ }
129
+
130
+ return options;
131
+ }
132
+
133
+ /**
134
+ * Sets the proxy settings for the new session.
135
+ * @param {capabilities.ProxyConfig} proxy The proxy configuration to use.
136
+ * @return {!Options} A self reference.
137
+ */
138
+ setProxy(proxy) {
139
+ this.proxy_ = proxy;
140
+ return this;
141
+ }
142
+
143
+ /**
144
+ * Sets the page load strategy for Edge.
145
+ * Supported values are "normal", "eager", and "none";
146
+ *
147
+ * @param {string} pageLoadStrategy The page load strategy to use.
148
+ * @return {!Options} A self reference.
149
+ */
150
+ setPageLoadStrategy(pageLoadStrategy) {
151
+ this.options_[CAPABILITY_KEY.PAGE_LOAD_STRATEGY] =
152
+ pageLoadStrategy.toLowerCase();
153
+ return this;
154
+ }
155
+
156
+ /**
157
+ * Converts this options instance to a {@link capabilities.Capabilities}
158
+ * object.
159
+ * @param {capabilities.Capabilities=} opt_capabilities The capabilities to
160
+ * merge these options into, if any.
161
+ * @return {!capabilities.Capabilities} The capabilities.
162
+ */
163
+ toCapabilities(opt_capabilities) {
164
+ var caps = opt_capabilities || capabilities.Capabilities.edge();
165
+ if (this.proxy_) {
166
+ caps.set(capabilities.Capability.PROXY, this.proxy_);
167
+ }
168
+ Object.keys(this.options_).forEach(function(key) {
169
+ caps.set(key, this.options_[key]);
170
+ }, this);
171
+ return caps;
172
+ }
173
+
174
+ /**
175
+ * Converts this instance to its JSON wire protocol representation. Note this
176
+ * function is an implementation not intended for general use.
177
+ * @return {{pageLoadStrategy: (string|undefined)}}
178
+ * The JSON wire protocol representation of this instance.
179
+ */
180
+ [Symbols.serialize]() {
181
+ var json = {};
182
+ for (var key in this.options_) {
183
+ if (this.options_[key] != null) {
184
+ json[key] = this.options_[key];
185
+ }
186
+ }
187
+ return json;
188
+ }
189
+ }
190
+
191
+
192
+ /**
193
+ * Creates {@link remote.DriverService} instances that manage a
194
+ * MicrosoftEdgeDriver server in a child process.
195
+ */
196
+ class ServiceBuilder {
197
+ /**
198
+ * @param {string=} opt_exe Path to the server executable to use. If omitted,
199
+ * the builder will attempt to locate the MicrosoftEdgeDriver on the current
200
+ * PATH.
201
+ * @throws {Error} If provided executable does not exist, or the
202
+ * MicrosoftEdgeDriver cannot be found on the PATH.
203
+ */
204
+ constructor(opt_exe) {
205
+ let exe = opt_exe || io.findInPath(EDGEDRIVER_EXE, true);
206
+ if (!exe) {
207
+ throw Error(
208
+ 'The ' + EDGEDRIVER_EXE + ' could not be found on the current PATH. ' +
209
+ 'Please download the latest version of the MicrosoftEdgeDriver from ' +
210
+ 'https://www.microsoft.com/en-us/download/details.aspx?id=48212 and ' +
211
+ 'ensure it can be found on your PATH.');
212
+ } else if (!fs.existsSync(exe)) {
213
+ throw Error('File does not exist: ' + exe);
214
+ }
215
+
216
+ /** @private {string} */
217
+ this.exe_ = /** @type {string} */(exe);
218
+
219
+ /** @private {!Array.<string>} */
220
+ this.args_ = [];
221
+
222
+ /** @private {number} */
223
+ this.port_ = 0;
224
+
225
+ /**
226
+ * @private {(string|!Array.<string|number|!stream.Stream|null|undefined>)}
227
+ */
228
+ this.stdio_ = 'ignore';
229
+
230
+ /** @private {Object.<string, string>} */
231
+ this.env_ = null;
232
+ }
233
+
234
+ /**
235
+ * Defines the stdio configuration for the driver service. See
236
+ * {@code child_process.spawn} for more information.
237
+ * @param {(string|!Array.<string|number|!stream.Stream|null|undefined>)}
238
+ * config The configuration to use.
239
+ * @return {!ServiceBuilder} A self reference.
240
+ */
241
+ setStdio(config) {
242
+ this.stdio_ = config;
243
+ return this;
244
+ }
245
+
246
+ /**
247
+ * Sets the port to start the MicrosoftEdgeDriver on.
248
+ * @param {number} port The port to use, or 0 for any free port.
249
+ * @return {!ServiceBuilder} A self reference.
250
+ * @throws {Error} If the port is invalid.
251
+ */
252
+ usingPort(port) {
253
+ if (port < 0) {
254
+ throw Error('port must be >= 0: ' + port);
255
+ }
256
+ this.port_ = port;
257
+ return this;
258
+ }
259
+
260
+ /**
261
+ * Defines the environment to start the server under. This settings will be
262
+ * inherited by every browser session started by the server.
263
+ * @param {!Object.<string, string>} env The environment to use.
264
+ * @return {!ServiceBuilder} A self reference.
265
+ */
266
+ withEnvironment(env) {
267
+ this.env_ = env;
268
+ return this;
269
+ }
270
+
271
+ /**
272
+ * Creates a new DriverService using this instance's current configuration.
273
+ * @return {!remote.DriverService} A new driver service using this instance's
274
+ * current configuration.
275
+ * @throws {Error} If the driver exectuable was not specified and a default
276
+ * could not be found on the current PATH.
277
+ */
278
+ build() {
279
+ var port = this.port_ || portprober.findFreePort();
280
+ var args = this.args_.concat(); // Defensive copy.
281
+
282
+ return new remote.DriverService(this.exe_, {
283
+ // Binding to the loopback address will fail if not running with
284
+ // administrator privileges. Since we cannot test for that in script
285
+ // (or can we?), force the DriverService to use "localhost".
286
+ hostname: 'localhost',
287
+ port: port,
288
+ args: promise.fulfilled(port).then(function(port) {
289
+ return args.concat('--port=' + port);
290
+ }),
291
+ env: this.env_,
292
+ stdio: this.stdio_
293
+ });
294
+ }
295
+ }
296
+
297
+
298
+ /** @type {remote.DriverService} */
299
+ var defaultService = null;
300
+
301
+
302
+ /**
303
+ * Sets the default service to use for new MicrosoftEdgeDriver instances.
304
+ * @param {!remote.DriverService} service The service to use.
305
+ * @throws {Error} If the default service is currently running.
306
+ */
307
+ function setDefaultService(service) {
308
+ if (defaultService && defaultService.isRunning()) {
309
+ throw Error(
310
+ 'The previously configured EdgeDriver service is still running. ' +
311
+ 'You must shut it down before you may adjust its configuration.');
312
+ }
313
+ defaultService = service;
314
+ }
315
+
316
+
317
+ /**
318
+ * Returns the default MicrosoftEdgeDriver service. If such a service has
319
+ * not been configured, one will be constructed using the default configuration
320
+ * for an MicrosoftEdgeDriver executable found on the system PATH.
321
+ * @return {!remote.DriverService} The default MicrosoftEdgeDriver service.
322
+ */
323
+ function getDefaultService() {
324
+ if (!defaultService) {
325
+ defaultService = new ServiceBuilder().build();
326
+ }
327
+ return defaultService;
328
+ }
329
+
330
+
331
+ /**
332
+ * Creates a new WebDriver client for Microsoft's Edge.
333
+ */
334
+ class Driver extends webdriver.WebDriver {
335
+ /**
336
+ * @param {(capabilities.Capabilities|Options)=} opt_config The configuration
337
+ * options.
338
+ * @param {remote.DriverService=} opt_service The session to use; will use
339
+ * the {@linkplain #getDefaultService default service} by default.
340
+ * @param {promise.ControlFlow=} opt_flow The control flow to use, or
341
+ * {@code null} to use the currently active flow.
342
+ */
343
+ constructor(opt_config, opt_service, opt_flow) {
344
+ var service = opt_service || getDefaultService();
345
+ var executor = executors.createExecutor(service.start());
346
+
347
+ var caps =
348
+ opt_config instanceof Options ? opt_config.toCapabilities() :
349
+ (opt_config || capabilities.Capabilities.edge());
350
+
351
+ var driver = webdriver.WebDriver.createSession(executor, caps, opt_flow);
352
+ super(driver.getSession(), executor, driver.controlFlow());
353
+
354
+ var boundQuit = this.quit.bind(this);
355
+
356
+ /** @override */
357
+ this.quit = function() {
358
+ return boundQuit().thenFinally(service.kill.bind(service));
359
+ };
360
+ }
361
+
362
+ /**
363
+ * This function is a no-op as file detectors are not supported by this
364
+ * implementation.
365
+ * @override
366
+ */
367
+ setFileDetector() {}
368
+ }
369
+
370
+
371
+ // PUBLIC API
372
+
373
+
374
+ exports.Driver = Driver;
375
+ exports.Options = Options;
376
+ exports.ServiceBuilder = ServiceBuilder;
377
+ exports.getDefaultService = getDefaultService;
378
+ exports.setDefaultService = setDefaultService;
package/error.js CHANGED
@@ -17,11 +17,14 @@
17
17
 
18
18
  'use strict';
19
19
 
20
- var base = require('./_base');
20
+ /**
21
+ * @fileoverview Deprecated error module alias. Use
22
+ * {@linkplain ./lib/error selenium-webdriver/lib/error} or the `error` property
23
+ * exported by the {@linkplain ./index.error main} module.
24
+ *
25
+ * @deprecated
26
+ */
21
27
 
28
+ const error = require('./lib/error');
22
29
 
23
- /** @type {function(new: bot.Error)} */
24
- exports.Error = base.require('bot.Error');
25
-
26
- /** @type {bot.ErrorCode.} */
27
- exports.ErrorCode = base.require('bot.ErrorCode');
30
+ module.exports = error;
@@ -30,7 +30,7 @@
30
30
  * SELENIUM_SERVER_JAR=/path/to/selenium-server-standalone.jar \
31
31
  * node selenium-webdriver/example/google_search.js
32
32
  *
33
- * // Target a remove Selenium server
33
+ * // Target a remote Selenium server
34
34
  * SELENIUM_REMOTE_URL=http://www.example.com:4444/wd/hub \
35
35
  * node selenium-webdriver/example/google_search.js
36
36
  */
@@ -16,11 +16,9 @@
16
16
  // under the License.
17
17
 
18
18
  /**
19
- * @fileoverview An example WebDriver script using Harmony generator functions.
20
- * This requires node v0.11 or newer.
19
+ * @fileoverview An example WebDriver script using generator functions.
21
20
  *
22
- * Usage: node --harmony-generators \
23
- * selenium-webdriver/example/google_search_generator.js
21
+ * Usage: node selenium-webdriver/example/google_search_generator.js
24
22
  */
25
23
 
26
24
  var webdriver = require('..'),
@@ -26,14 +26,18 @@ var webdriver = require('..'),
26
26
  until = webdriver.until;
27
27
 
28
28
  webdriver.logging.installConsoleHandler();
29
- webdriver.logging.getLogger().setLevel(webdriver.logging.Level.ALL);
29
+ webdriver.logging.getLogger('webdriver.http')
30
+ .setLevel(webdriver.logging.Level.ALL);
30
31
 
31
32
  var driver = new webdriver.Builder()
32
33
  .forBrowser('firefox')
33
34
  .build();
34
35
 
35
36
  driver.get('http://www.google.com/ncr');
36
- driver.findElement(By.name('q')).sendKeys('webdriver');
37
+
38
+ var searchBox = driver.wait(until.elementLocated(By.name('q')), 3000);
39
+ searchBox.sendKeys('webdriver');
40
+
37
41
  driver.findElement(By.name('btnG')).click();
38
42
  driver.wait(until.titleIs('webdriver - Google Search'), 1000);
39
43
  driver.quit();
@@ -0,0 +1,21 @@
1
+ // Load the http module to create an http server.
2
+ var http = require('http');
3
+
4
+ http.createServer(function (request, response) {
5
+ response.writeHead(200, {"Content-Type": "text/html"});
6
+ response.end(`<!DOCTYPE html><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"><meta http-equiv="Content-Language" content="en"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Index</title><link href="dossier.css" rel="stylesheet" type="text/css"><header><div><form><div><input type="search" placeholder="Search"></div></form></div></header><main><article class="indexfile"><h1>Closure Generated API Docs</h1><p>This is the generated documentation for the Closure Library repository at <a href="http://github.com/google/closure-library">github.com/google/closure-library</a>.</p><p>The documentation was produced using <a href="http://github.com/jleyba/js-dossier">github.com/jleyba/js-dossier</a></p></article><nav><h3><a href="index.html">Overview</a></h3><div><input type="checkbox" id="nav-types" checked/><label for="nav-types"><h3><span class="selectable">Types</span></h3></label><div id="nav-types-view"></div></div></nav></main><div class="pre-footer"><div></div></div><footer><div><a href="https://github.com/jleyba/js-dossier">Generated by dossier</a></div></footer><script src="types.js"></script><script src="dossier.js"></script>`);
7
+ }).listen(8000);
8
+
9
+ http.createServer(function (request, response) {
10
+ response.writeHead(200, {"Content-Type": "text/html"});
11
+ response.end(`<!DOCTYPE html><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"><meta http-equiv="Content-Language" content="en"><meta http-equiv="X-UA-Compatible" content="IE=edge"><link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><title>Index</title><link href="dossier.css" rel="stylesheet" type="text/css"><header><button class="dossier-menu"><i class="material-icons">menu</i></button><form><input type="search" placeholder="Search" tabindex="1"><i class="material-icons">search</i></form></header><div class="content"><main><article class="page"><h1>Closure Generated API Docs</h1>
12
+ <p>This is the generated documentation for the Closure Library
13
+ repository at
14
+ <a href="http://github.com/google/closure-library">github.com/google/closure-library</a>.</p>
15
+ <p>The documentation was produced using
16
+ <a href="http://github.com/jleyba/js-dossier">github.com/jleyba/js-dossier</a></p>
17
+ </article></main><footer><div><a href="https://github.com/jleyba/js-dossier">Generated by dossier</a></div></footer></div><nav class="dossier-nav"><section><a class="title" href="index.html" tabindex="2">Overview</a></section><section class="types"><div class="toggle"><div class="title"><span class="item" tabindex="2">Types</span><i class="material-icons">expand_more</i></div></div></section></nav><script src="types.js"></script><script src="dossier.js"></script>`);
18
+ }).listen(9000);
19
+
20
+ console.log("Hello server running at http://127.0.0.1:8000/");
21
+ console.log("Goodbye server running at http://127.0.0.1:9000/");
package/executors.js CHANGED
@@ -16,47 +16,31 @@
16
16
  // under the License.
17
17
 
18
18
  /**
19
- * @fileoverview Various utilities for working with
20
- * {@link webdriver.CommandExecutor} implementations.
19
+ * @fileoverview Various utilities for working with {@link ./command.Executor}
20
+ * implementations.
21
21
  */
22
22
 
23
- var HttpClient = require('./http').HttpClient,
24
- HttpExecutor = require('./http').Executor,
25
- promise = require('./_base').require('webdriver.promise');
26
-
27
-
28
-
29
- /**
30
- * Wraps a promised {@link webdriver.CommandExecutor}, ensuring no commands
31
- * are executed until the wrapped executor has been fully built.
32
- * @param {!webdriver.promise.Promise.<!webdriver.CommandExecutor>} delegate The
33
- * promised delegate.
34
- * @constructor
35
- * @implements {webdriver.CommandExecutor}
36
- */
37
- var DeferredExecutor = function(delegate) {
23
+ 'use strict';
38
24
 
39
- /** @override */
40
- this.execute = function(command, callback) {
41
- delegate.then(function(executor) {
42
- executor.execute(command, callback);
43
- }, callback);
44
- };
45
- };
25
+ const HttpClient = require('./http').HttpClient,
26
+ HttpExecutor = require('./http').Executor,
27
+ DeferredExecutor = require('./lib/command').DeferredExecutor,
28
+ promise = require('./lib/promise');
46
29
 
47
30
 
48
31
  // PUBLIC API
49
32
 
50
33
 
34
+ /** @deprecated Use {@link ./lib/command.DeferredExecutor} instead. */
51
35
  exports.DeferredExecutor = DeferredExecutor;
52
36
 
53
37
  /**
54
38
  * Creates a command executor that uses WebDriver's JSON wire protocol.
55
- * @param {(string|!webdriver.promise.Promise.<string>)} url The server's URL,
39
+ * @param {(string|!promise.Promise<string>)} url The server's URL,
56
40
  * or a promise that will resolve to that URL.
57
- * @param {string=} opt_proxy (optional) The URL of the HTTP proxy for the
41
+ * @param {?string=} opt_proxy (optional) The URL of the HTTP proxy for the
58
42
  * client to use.
59
- * @returns {!webdriver.CommandExecutor} The new command executor.
43
+ * @returns {!./lib/command.Executor} The new command executor.
60
44
  */
61
45
  exports.createExecutor = function(url, opt_proxy) {
62
46
  return new DeferredExecutor(promise.when(url, function(url) {