selenium-webdriver 2.47.0 → 2.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/CHANGES.md +96 -0
  2. package/NOTICE +1 -1
  3. package/README.md +57 -6
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +597 -5
  8. package/example/google_search_generator.js +2 -4
  9. package/example/logging.js +6 -2
  10. package/executors.js +11 -27
  11. package/firefox/binary.js +80 -114
  12. package/firefox/extension.js +10 -19
  13. package/firefox/index.js +175 -171
  14. package/firefox/profile.js +221 -239
  15. package/http/index.js +396 -77
  16. package/http/util.js +35 -35
  17. package/ie.js +288 -309
  18. package/index.js +34 -125
  19. package/io/exec.js +58 -39
  20. package/io/index.js +54 -48
  21. package/lib/actions.js +594 -0
  22. package/lib/by.js +276 -0
  23. package/lib/capabilities.js +404 -0
  24. package/lib/{webdriver/command.js → command.js} +89 -72
  25. package/lib/{webdriver/button.js → devmode.js} +13 -8
  26. package/lib/events.js +210 -0
  27. package/lib/firefox/amd64/libnoblur64.so +0 -0
  28. package/lib/firefox/i386/libnoblur.so +0 -0
  29. package/lib/firefox/webdriver.json +6 -1
  30. package/lib/firefox/webdriver.xpi +0 -0
  31. package/lib/{webdriver/key.js → input.js} +82 -2
  32. package/lib/logging.js +668 -0
  33. package/lib/promise.js +3093 -0
  34. package/lib/safari/client.js +697 -659
  35. package/lib/session.js +79 -0
  36. package/{test/promise_aplus_test.js → lib/symbols.js} +15 -25
  37. package/lib/test/build.js +4 -4
  38. package/lib/test/data/click_tests/disappearing_element.html +62 -0
  39. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  40. package/lib/test/data/click_tests/overlapping_elements.html +70 -0
  41. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  42. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  43. package/lib/test/data/readOnlyPage.html +3 -1
  44. package/lib/test/data/selectPage.html +18 -2
  45. package/lib/test/data/simpleTest.html +1 -0
  46. package/lib/test/fileserver.js +3 -4
  47. package/lib/test/index.js +13 -4
  48. package/lib/test/resources.js +1 -1
  49. package/lib/until.js +428 -0
  50. package/lib/webdriver.js +2351 -0
  51. package/net/portprober.js +15 -11
  52. package/opera.js +295 -314
  53. package/package.json +6 -5
  54. package/phantomjs.js +135 -140
  55. package/proxy.js +6 -4
  56. package/remote/index.js +234 -219
  57. package/safari.js +319 -310
  58. package/test/chrome/options_test.js +11 -9
  59. package/test/element_finding_test.js +51 -13
  60. package/test/error_test.js +163 -0
  61. package/test/execute_script_test.js +1 -1
  62. package/test/firefox/firefox_test.js +24 -0
  63. package/test/http/http_test.js +354 -43
  64. package/test/http/util_test.js +25 -23
  65. package/test/io_test.js +6 -1
  66. package/test/lib/by_test.js +127 -0
  67. package/test/lib/capabilities_test.js +84 -0
  68. package/test/lib/events_test.js +177 -0
  69. package/test/lib/logging_test.js +272 -0
  70. package/test/lib/promise_aplus_test.js +74 -0
  71. package/test/lib/promise_error_test.js +808 -0
  72. package/test/lib/promise_flow_test.js +2282 -0
  73. package/test/lib/promise_generator_test.js +308 -0
  74. package/test/lib/promise_test.js +996 -0
  75. package/test/lib/testutil.js +90 -0
  76. package/test/lib/until_test.js +436 -0
  77. package/test/lib/webdriver_test.js +2207 -0
  78. package/test/page_loading_test.js +7 -9
  79. package/test/stale_element_test.js +2 -2
  80. package/test/testing/assert_test.js +374 -0
  81. package/test/testing/index_test.js +9 -11
  82. package/testing/assert.js +334 -17
  83. package/testing/index.js +10 -0
  84. package/_base.js +0 -200
  85. package/docs/Changes.html +0 -317
  86. package/docs/class_bot_Error.html +0 -15
  87. package/docs/class_webdriver_ActionSequence.html +0 -115
  88. package/docs/class_webdriver_Alert.html +0 -24
  89. package/docs/class_webdriver_AlertPromise.html +0 -91
  90. package/docs/class_webdriver_Capabilities.html +0 -60
  91. package/docs/class_webdriver_Command.html +0 -15
  92. package/docs/class_webdriver_EventEmitter.html +0 -35
  93. package/docs/class_webdriver_FileDetector.html +0 -21
  94. package/docs/class_webdriver_Locator.html +0 -12
  95. package/docs/class_webdriver_Serializable.html +0 -9
  96. package/docs/class_webdriver_Session.html +0 -13
  97. package/docs/class_webdriver_TouchSequence.html +0 -49
  98. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  99. package/docs/class_webdriver_WebDriver.html +0 -313
  100. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  101. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  102. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  103. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  104. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  105. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  106. package/docs/class_webdriver_WebElement.html +0 -216
  107. package/docs/class_webdriver_WebElementPromise.html +0 -266
  108. package/docs/class_webdriver_http_Executor.html +0 -22
  109. package/docs/class_webdriver_http_Request.html +0 -12
  110. package/docs/class_webdriver_http_Response.html +0 -13
  111. package/docs/class_webdriver_logging_Entry.html +0 -15
  112. package/docs/class_webdriver_logging_Level.html +0 -55
  113. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  114. package/docs/class_webdriver_logging_Logger.html +0 -119
  115. package/docs/class_webdriver_logging_Preferences.html +0 -8
  116. package/docs/class_webdriver_promise_CancellationError.html +0 -18
  117. package/docs/class_webdriver_promise_ControlFlow.html +0 -109
  118. package/docs/class_webdriver_promise_Deferred.html +0 -84
  119. package/docs/class_webdriver_promise_Promise.html +0 -74
  120. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  121. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  122. package/docs/class_webdriver_testing_Assertion.html +0 -99
  123. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  124. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  125. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  126. package/docs/class_webdriver_until_Condition.html +0 -7
  127. package/docs/dossier.css +0 -1
  128. package/docs/dossier.js +0 -86
  129. package/docs/enum_bot_ErrorCode.html +0 -3
  130. package/docs/enum_bot_Error_State.html +0 -2
  131. package/docs/enum_webdriver_Browser.html +0 -2
  132. package/docs/enum_webdriver_Button.html +0 -2
  133. package/docs/enum_webdriver_Capability.html +0 -33
  134. package/docs/enum_webdriver_CommandName.html +0 -3
  135. package/docs/enum_webdriver_Key.html +0 -12
  136. package/docs/enum_webdriver_logging_Type.html +0 -6
  137. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  138. package/docs/index.html +0 -123
  139. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  140. package/docs/interface_webdriver_http_Client.html +0 -10
  141. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  142. package/docs/module_selenium-webdriver.html +0 -23
  143. package/docs/module_selenium-webdriver__base.html +0 -23
  144. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  145. package/docs/module_selenium-webdriver_builder.html +0 -2
  146. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  147. package/docs/module_selenium-webdriver_chrome.html +0 -90
  148. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  149. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  150. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  151. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  152. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  153. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  154. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  155. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  156. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  157. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  158. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  159. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  160. package/docs/module_selenium-webdriver_class_WebElement.html +0 -216
  161. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -266
  162. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  163. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  164. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  165. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  166. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  167. package/docs/module_selenium-webdriver_error.html +0 -4
  168. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  169. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  170. package/docs/module_selenium-webdriver_executors.html +0 -10
  171. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  172. package/docs/module_selenium-webdriver_firefox.html +0 -67
  173. package/docs/module_selenium-webdriver_firefox_binary.html +0 -4
  174. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -21
  175. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -21
  176. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  177. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  178. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  179. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  180. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  181. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  182. package/docs/module_selenium-webdriver_http.html +0 -9
  183. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  184. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  185. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  186. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  187. package/docs/module_selenium-webdriver_http_util.html +0 -17
  188. package/docs/module_selenium-webdriver_ie.html +0 -11
  189. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  190. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  191. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  192. package/docs/module_selenium-webdriver_io.html +0 -37
  193. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  194. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  195. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  196. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  197. package/docs/module_selenium-webdriver_namespace_promise.html +0 -162
  198. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  199. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  200. package/docs/module_selenium-webdriver_net.html +0 -7
  201. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  202. package/docs/module_selenium-webdriver_opera.html +0 -62
  203. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  204. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  205. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  206. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  207. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  208. package/docs/module_selenium-webdriver_proxy.html +0 -28
  209. package/docs/module_selenium-webdriver_remote.html +0 -8
  210. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  211. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  212. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -40
  213. package/docs/module_selenium-webdriver_safari.html +0 -9
  214. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  215. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  216. package/docs/module_selenium-webdriver_testing.html +0 -74
  217. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  218. package/docs/namespace_bot.html +0 -4
  219. package/docs/namespace_bot_json.html +0 -20
  220. package/docs/namespace_bot_response.html +0 -18
  221. package/docs/namespace_bot_userAgent.html +0 -33
  222. package/docs/namespace_webdriver.html +0 -30
  223. package/docs/namespace_webdriver_By.html +0 -56
  224. package/docs/namespace_webdriver_http.html +0 -6
  225. package/docs/namespace_webdriver_logging.html +0 -70
  226. package/docs/namespace_webdriver_promise.html +0 -165
  227. package/docs/namespace_webdriver_stacktrace.html +0 -17
  228. package/docs/namespace_webdriver_testing.html +0 -7
  229. package/docs/namespace_webdriver_testing_assert.html +0 -9
  230. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  231. package/docs/namespace_webdriver_until.html +0 -82
  232. package/docs/source/_base.js.src.html +0 -1
  233. package/docs/source/builder.js.src.html +0 -1
  234. package/docs/source/chrome.js.src.html +0 -1
  235. package/docs/source/error.js.src.html +0 -1
  236. package/docs/source/executors.js.src.html +0 -1
  237. package/docs/source/firefox/binary.js.src.html +0 -1
  238. package/docs/source/firefox/extension.js.src.html +0 -1
  239. package/docs/source/firefox/index.js.src.html +0 -1
  240. package/docs/source/firefox/profile.js.src.html +0 -1
  241. package/docs/source/http/index.js.src.html +0 -1
  242. package/docs/source/http/util.js.src.html +0 -1
  243. package/docs/source/ie.js.src.html +0 -1
  244. package/docs/source/index.js.src.html +0 -1
  245. package/docs/source/io/exec.js.src.html +0 -1
  246. package/docs/source/io/index.js.src.html +0 -1
  247. package/docs/source/lib/atoms/error.js.src.html +0 -1
  248. package/docs/source/lib/atoms/json.js.src.html +0 -1
  249. package/docs/source/lib/atoms/response.js.src.html +0 -1
  250. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  251. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  252. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  253. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  254. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  255. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  256. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  257. package/docs/source/lib/goog/base.js.src.html +0 -1
  258. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  259. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  260. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  261. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  262. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  263. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  264. package/docs/source/lib/goog/deps.js.src.html +0 -1
  265. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  266. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  267. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  268. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  269. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  270. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  271. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  272. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  273. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  274. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  275. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  276. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  277. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  278. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  279. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  280. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  285. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  286. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  287. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  288. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  289. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  290. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  291. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  292. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  293. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  294. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  295. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  296. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  297. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  298. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  299. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  300. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  301. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  302. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  303. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  307. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  308. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  309. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  310. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  311. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  312. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  313. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  314. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  315. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  316. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  317. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  318. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  319. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  320. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  321. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  322. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  323. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  324. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  325. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  326. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  327. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  328. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  329. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  330. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  331. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  332. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  333. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  334. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  335. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  336. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/watchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  348. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  349. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  350. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  351. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  352. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  353. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  354. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  355. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  356. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  357. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  358. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  369. package/docs/source/net/index.js.src.html +0 -1
  370. package/docs/source/net/portprober.js.src.html +0 -1
  371. package/docs/source/opera.js.src.html +0 -1
  372. package/docs/source/phantomjs.js.src.html +0 -1
  373. package/docs/source/proxy.js.src.html +0 -1
  374. package/docs/source/remote/index.js.src.html +0 -1
  375. package/docs/source/safari.js.src.html +0 -1
  376. package/docs/source/testing/assert.js.src.html +0 -1
  377. package/docs/source/testing/index.js.src.html +0 -1
  378. package/docs/types.js +0 -1
  379. package/lib/atoms/error.js +0 -202
  380. package/lib/atoms/json.js +0 -80
  381. package/lib/atoms/response.js +0 -110
  382. package/lib/atoms/userAgent.js +0 -257
  383. package/lib/goog/LICENSE +0 -176
  384. package/lib/goog/array/array.js +0 -1655
  385. package/lib/goog/asserts/asserts.js +0 -365
  386. package/lib/goog/async/freelist.js +0 -88
  387. package/lib/goog/async/nexttick.js +0 -241
  388. package/lib/goog/async/run.js +0 -139
  389. package/lib/goog/async/workqueue.js +0 -139
  390. package/lib/goog/base.js +0 -2547
  391. package/lib/goog/debug/debug.js +0 -653
  392. package/lib/goog/debug/entrypointregistry.js +0 -158
  393. package/lib/goog/debug/error.js +0 -63
  394. package/lib/goog/debug/logbuffer.js +0 -148
  395. package/lib/goog/debug/logger.js +0 -873
  396. package/lib/goog/debug/logrecord.js +0 -242
  397. package/lib/goog/deps.js +0 -151
  398. package/lib/goog/disposable/disposable.js +0 -307
  399. package/lib/goog/disposable/idisposable.js +0 -45
  400. package/lib/goog/dom/browserfeature.js +0 -72
  401. package/lib/goog/dom/dom.js +0 -2995
  402. package/lib/goog/dom/nodetype.js +0 -48
  403. package/lib/goog/dom/safe.js +0 -347
  404. package/lib/goog/dom/tagname.js +0 -160
  405. package/lib/goog/dom/tags.js +0 -42
  406. package/lib/goog/dom/vendor.js +0 -96
  407. package/lib/goog/events/browserevent.js +0 -386
  408. package/lib/goog/events/browserfeature.js +0 -85
  409. package/lib/goog/events/event.js +0 -143
  410. package/lib/goog/events/eventid.js +0 -47
  411. package/lib/goog/events/events.js +0 -984
  412. package/lib/goog/events/eventtarget.js +0 -394
  413. package/lib/goog/events/eventtype.js +0 -233
  414. package/lib/goog/events/keycodes.js +0 -420
  415. package/lib/goog/events/listenable.js +0 -335
  416. package/lib/goog/events/listener.js +0 -131
  417. package/lib/goog/events/listenermap.js +0 -308
  418. package/lib/goog/fs/url.js +0 -105
  419. package/lib/goog/functions/functions.js +0 -332
  420. package/lib/goog/html/safehtml.js +0 -756
  421. package/lib/goog/html/safescript.js +0 -234
  422. package/lib/goog/html/safestyle.js +0 -442
  423. package/lib/goog/html/safestylesheet.js +0 -276
  424. package/lib/goog/html/safeurl.js +0 -431
  425. package/lib/goog/html/trustedresourceurl.js +0 -224
  426. package/lib/goog/html/uncheckedconversions.js +0 -231
  427. package/lib/goog/i18n/bidi.js +0 -908
  428. package/lib/goog/iter/iter.js +0 -1305
  429. package/lib/goog/json/json.js +0 -365
  430. package/lib/goog/labs/testing/assertthat.js +0 -58
  431. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  432. package/lib/goog/labs/testing/matcher.js +0 -80
  433. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  434. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  435. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  436. package/lib/goog/labs/useragent/browser.js +0 -327
  437. package/lib/goog/labs/useragent/engine.js +0 -160
  438. package/lib/goog/labs/useragent/platform.js +0 -160
  439. package/lib/goog/labs/useragent/util.js +0 -148
  440. package/lib/goog/math/box.js +0 -389
  441. package/lib/goog/math/coordinate.js +0 -268
  442. package/lib/goog/math/math.js +0 -451
  443. package/lib/goog/math/rect.js +0 -476
  444. package/lib/goog/math/size.js +0 -227
  445. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  446. package/lib/goog/net/xhrlike.js +0 -124
  447. package/lib/goog/net/xmlhttp.js +0 -246
  448. package/lib/goog/net/xmlhttpfactory.js +0 -67
  449. package/lib/goog/object/object.js +0 -686
  450. package/lib/goog/promise/promise.js +0 -1310
  451. package/lib/goog/promise/resolver.js +0 -48
  452. package/lib/goog/promise/thenable.js +0 -126
  453. package/lib/goog/reflect/reflect.js +0 -78
  454. package/lib/goog/string/const.js +0 -182
  455. package/lib/goog/string/string.js +0 -1565
  456. package/lib/goog/string/typedstring.js +0 -48
  457. package/lib/goog/structs/collection.js +0 -56
  458. package/lib/goog/structs/map.js +0 -456
  459. package/lib/goog/structs/set.js +0 -279
  460. package/lib/goog/structs/structs.js +0 -354
  461. package/lib/goog/style/style.js +0 -2054
  462. package/lib/goog/testing/asserts.js +0 -1265
  463. package/lib/goog/testing/events/events.js +0 -727
  464. package/lib/goog/testing/functionmock.js +0 -176
  465. package/lib/goog/testing/jsunit.js +0 -162
  466. package/lib/goog/testing/loosemock.js +0 -242
  467. package/lib/goog/testing/mock.js +0 -645
  468. package/lib/goog/testing/mockclock.js +0 -617
  469. package/lib/goog/testing/mockcontrol.js +0 -220
  470. package/lib/goog/testing/mockinterface.js +0 -45
  471. package/lib/goog/testing/mockmatchers.js +0 -400
  472. package/lib/goog/testing/objectpropertystring.js +0 -68
  473. package/lib/goog/testing/propertyreplacer.js +0 -245
  474. package/lib/goog/testing/recordfunction.js +0 -215
  475. package/lib/goog/testing/stacktrace.js +0 -594
  476. package/lib/goog/testing/strictmock.js +0 -130
  477. package/lib/goog/testing/testcase.js +0 -1569
  478. package/lib/goog/testing/testrunner.js +0 -440
  479. package/lib/goog/testing/watchers.js +0 -46
  480. package/lib/goog/uri/uri.js +0 -1507
  481. package/lib/goog/uri/utils.js +0 -1116
  482. package/lib/goog/useragent/product.js +0 -175
  483. package/lib/goog/useragent/product_isversion.js +0 -143
  484. package/lib/goog/useragent/useragent.js +0 -538
  485. package/lib/webdriver/actionsequence.js +0 -356
  486. package/lib/webdriver/builder.js +0 -208
  487. package/lib/webdriver/capabilities.js +0 -411
  488. package/lib/webdriver/events.js +0 -179
  489. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  490. package/lib/webdriver/http/corsclient.js +0 -133
  491. package/lib/webdriver/http/http.js +0 -523
  492. package/lib/webdriver/http/xhrclient.js +0 -67
  493. package/lib/webdriver/locators.js +0 -257
  494. package/lib/webdriver/logging.js +0 -347
  495. package/lib/webdriver/promise.js +0 -2609
  496. package/lib/webdriver/serializable.js +0 -41
  497. package/lib/webdriver/session.js +0 -74
  498. package/lib/webdriver/stacktrace.js +0 -619
  499. package/lib/webdriver/test/builder_test.js +0 -53
  500. package/lib/webdriver/test/capabilities_test.js +0 -72
  501. package/lib/webdriver/test/events_test.js +0 -203
  502. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  503. package/lib/webdriver/test/http/http_test.js +0 -428
  504. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  505. package/lib/webdriver/test/locators_test.js +0 -59
  506. package/lib/webdriver/test/logging_test.js +0 -85
  507. package/lib/webdriver/test/promise_error_test.js +0 -719
  508. package/lib/webdriver/test/promise_flow_test.js +0 -1957
  509. package/lib/webdriver/test/promise_generator_test.js +0 -251
  510. package/lib/webdriver/test/promise_test.js +0 -1981
  511. package/lib/webdriver/test/stacktrace_test.js +0 -480
  512. package/lib/webdriver/test/test_bootstrap.js +0 -67
  513. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  514. package/lib/webdriver/test/testing/client_test.js +0 -88
  515. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  516. package/lib/webdriver/test/testutil.js +0 -209
  517. package/lib/webdriver/test/testutil_test.js +0 -104
  518. package/lib/webdriver/test/until_test.js +0 -411
  519. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  520. package/lib/webdriver/test/webdriver_test.js +0 -2369
  521. package/lib/webdriver/testing/asserts.js +0 -487
  522. package/lib/webdriver/testing/client.js +0 -179
  523. package/lib/webdriver/testing/jsunit.js +0 -363
  524. package/lib/webdriver/testing/testcase.js +0 -168
  525. package/lib/webdriver/testing/window.js +0 -244
  526. package/lib/webdriver/touchsequence.js +0 -248
  527. package/lib/webdriver/until.js +0 -412
  528. package/lib/webdriver/webdriver.js +0 -2492
  529. package/test/_base_test.js +0 -129
package/chrome.js CHANGED
@@ -49,17 +49,17 @@
49
49
  * You may also create a {@link Driver} with its own driver service. This is
50
50
  * useful if you need to capture the server's log output for a specific session:
51
51
  *
52
- * var chrome = require('selenium-webdriver/chrome');
52
+ * let chrome = require('selenium-webdriver/chrome');
53
53
  *
54
- * var service = new chrome.ServiceBuilder()
54
+ * let service = new chrome.ServiceBuilder()
55
55
  * .loggingTo('/my/log/file.txt')
56
56
  * .enableVerboseLogging()
57
57
  * .build();
58
58
  *
59
- * var options = new chrome.Options();
59
+ * let options = new chrome.Options();
60
60
  * // configure browser options ...
61
61
  *
62
- * var driver = new chrome.Driver(options, service);
62
+ * let driver = new chrome.Driver(options, service);
63
63
  *
64
64
  * Users should only instantiate the {@link Driver} class directly when they
65
65
  * need a custom driver service configuration (as shown above). For normal
@@ -78,7 +78,7 @@
78
78
  * will require configuring a [custom server](#custom-server) that will connect
79
79
  * to adb on the {@linkplain ServiceBuilder#setAdbPort correct port}:
80
80
  *
81
- * var service = new chrome.ServiceBuilder()
81
+ * let service = new chrome.ServiceBuilder()
82
82
  * .setAdbPort(1234)
83
83
  * build();
84
84
  * // etc.
@@ -86,7 +86,7 @@
86
86
  * The ChromeDriver may be configured to launch Chrome on Android using
87
87
  * {@link Options#androidChrome()}:
88
88
  *
89
- * var driver = new Builder()
89
+ * let driver = new Builder()
90
90
  * .forBrowser('chrome')
91
91
  * .setChromeOptions(new chrome.Options().androidChrome())
92
92
  * .build();
@@ -95,7 +95,7 @@
95
95
  * Chrome-WebView by setting the {@linkplain Options#androidActivity
96
96
  * androidActivity} option:
97
97
  *
98
- * var driver = new Builder()
98
+ * let driver = new Builder()
99
99
  * .forBrowser('chrome')
100
100
  * .setChromeOptions(new chrome.Options()
101
101
  * .androidPackage('com.example')
@@ -114,13 +114,19 @@
114
114
 
115
115
  'use strict';
116
116
 
117
- var fs = require('fs'),
117
+ const fs = require('fs'),
118
118
  util = require('util');
119
119
 
120
- var webdriver = require('./index'),
121
- executors = require('./executors'),
120
+ const executors = require('./executors'),
122
121
  http = require('./http'),
123
122
  io = require('./io'),
123
+ Capabilities = require('./lib/capabilities').Capabilities,
124
+ Capability = require('./lib/capabilities').Capability,
125
+ command = require('./lib/command'),
126
+ logging = require('./lib/logging'),
127
+ promise = require('./lib/promise'),
128
+ Symbols = require('./lib/symbols'),
129
+ webdriver = require('./lib/webdriver'),
124
130
  portprober = require('./net/portprober'),
125
131
  remote = require('./remote');
126
132
 
@@ -130,7 +136,7 @@ var webdriver = require('./index'),
130
136
  * @type {string}
131
137
  * @const
132
138
  */
133
- var CHROMEDRIVER_EXE =
139
+ const CHROMEDRIVER_EXE =
134
140
  process.platform === 'win32' ? 'chromedriver.exe' : 'chromedriver';
135
141
 
136
142
 
@@ -138,20 +144,20 @@ var CHROMEDRIVER_EXE =
138
144
  * Custom command names supported by ChromeDriver.
139
145
  * @enum {string}
140
146
  */
141
- var Command = {
147
+ const Command = {
142
148
  LAUNCH_APP: 'launchApp'
143
149
  };
144
150
 
145
151
 
146
152
  /**
147
153
  * Creates a command executor with support for ChromeDriver's custom commands.
148
- * @param {!webdriver.promise.Promise<string>} url The server's URL.
149
- * @return {!webdriver.CommandExecutor} The new command executor.
154
+ * @param {!promise.Promise<string>} url The server's URL.
155
+ * @return {!command.Executor} The new command executor.
150
156
  */
151
157
  function createExecutor(url) {
152
158
  return new executors.DeferredExecutor(url.then(function(url) {
153
- var client = new http.HttpClient(url);
154
- var executor = new http.Executor(client);
159
+ let client = new http.HttpClient(url);
160
+ let executor = new http.Executor(client);
155
161
  executor.defineCommand(
156
162
  Command.LAUNCH_APP,
157
163
  'POST', '/session/:sessionId/chromium/launch_app');
@@ -164,177 +170,170 @@ function createExecutor(url) {
164
170
  * Creates {@link selenium-webdriver/remote.DriverService} instances that manage
165
171
  * a [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/)
166
172
  * server in a child process.
167
- *
168
- * @param {string=} opt_exe Path to the server executable to use. If omitted,
169
- * the builder will attempt to locate the chromedriver on the current
170
- * PATH.
171
- * @throws {Error} If provided executable does not exist, or the chromedriver
172
- * cannot be found on the PATH.
173
- * @constructor
174
173
  */
175
- var ServiceBuilder = function(opt_exe) {
176
- /** @private {string} */
177
- this.exe_ = opt_exe || io.findInPath(CHROMEDRIVER_EXE, true);
178
- if (!this.exe_) {
179
- throw Error(
180
- 'The ChromeDriver could not be found on the current PATH. Please ' +
181
- 'download the latest version of the ChromeDriver from ' +
182
- 'http://chromedriver.storage.googleapis.com/index.html and ensure ' +
183
- 'it can be found on your PATH.');
184
- }
185
-
186
- if (!fs.existsSync(this.exe_)) {
187
- throw Error('File does not exist: ' + this.exe_);
188
- }
189
-
190
- /** @private {!Array.<string>} */
191
- this.args_ = [];
192
- this.stdio_ = 'ignore';
193
- };
194
-
195
-
196
- /** @private {string} */
197
- ServiceBuilder.prototype.path_ = null;
198
-
199
- /** @private {number} */
200
- ServiceBuilder.prototype.port_ = 0;
174
+ class ServiceBuilder {
175
+ /**
176
+ * @param {string=} opt_exe Path to the server executable to use. If omitted,
177
+ * the builder will attempt to locate the chromedriver on the current
178
+ * PATH.
179
+ * @throws {Error} If provided executable does not exist, or the chromedriver
180
+ * cannot be found on the PATH.
181
+ */
182
+ constructor(opt_exe) {
183
+ let exe = opt_exe || io.findInPath(CHROMEDRIVER_EXE, true);
184
+ if (!exe) {
185
+ throw Error(
186
+ 'The ChromeDriver could not be found on the current PATH. Please ' +
187
+ 'download the latest version of the ChromeDriver from ' +
188
+ 'http://chromedriver.storage.googleapis.com/index.html and ensure ' +
189
+ 'it can be found on your PATH.');
190
+ }
201
191
 
192
+ if (!fs.existsSync(exe)) {
193
+ throw Error('File does not exist: ' + exe);
194
+ }
195
+ /** @private {string} */
196
+ this.exe_ = exe;
202
197
 
203
- /** @private {(string|!Array.<string|number|!Stream|null|undefined>)} */
204
- ServiceBuilder.prototype.stdio_ = 'ignore';
198
+ /** @private {!Array<string>} */
199
+ this.args_ = [];
205
200
 
201
+ /**
202
+ * @private {(string|!Array<string|number|!stream.Stream|null|undefined>)}
203
+ */
204
+ this.stdio_ = 'ignore';
206
205
 
207
- /** @private {Object.<string, string>} */
208
- ServiceBuilder.prototype.env_ = null;
206
+ /** @private {?string} */
207
+ this.path_ = null;
209
208
 
209
+ /** @private {number} */
210
+ this.port_ = 0;
210
211
 
211
- /**
212
- * Sets the port to start the ChromeDriver on.
213
- * @param {number} port The port to use, or 0 for any free port.
214
- * @return {!ServiceBuilder} A self reference.
215
- * @throws {Error} If the port is invalid.
216
- */
217
- ServiceBuilder.prototype.usingPort = function(port) {
218
- if (port < 0) {
219
- throw Error('port must be >= 0: ' + port);
212
+ /** @private {Object<string, string>} */
213
+ this.env_ = null;
220
214
  }
221
- this.port_ = port;
222
- return this;
223
- };
224
-
225
-
226
- /**
227
- * Sets which port adb is listening to. _The ChromeDriver will connect to adb
228
- * if an {@linkplain Options#androidPackage Android session} is requested, but
229
- * adb **must** be started beforehand._
230
- *
231
- * @param {number} port Which port adb is running on.
232
- * @return {!ServiceBuilder} A self reference.
233
- */
234
- ServiceBuilder.prototype.setAdbPort = function(port) {
235
- this.args_.push('--adb-port=' + port);
236
- return this;
237
- };
238
-
239
-
240
- /**
241
- * Sets the path of the log file the driver should log to. If a log file is
242
- * not specified, the driver will log to stderr.
243
- * @param {string} path Path of the log file to use.
244
- * @return {!ServiceBuilder} A self reference.
245
- */
246
- ServiceBuilder.prototype.loggingTo = function(path) {
247
- this.args_.push('--log-path=' + path);
248
- return this;
249
- };
250
-
251
-
252
- /**
253
- * Enables verbose logging.
254
- * @return {!ServiceBuilder} A self reference.
255
- */
256
- ServiceBuilder.prototype.enableVerboseLogging = function() {
257
- this.args_.push('--verbose');
258
- return this;
259
- };
260
215
 
216
+ /**
217
+ * Sets the port to start the ChromeDriver on.
218
+ * @param {number} port The port to use, or 0 for any free port.
219
+ * @return {!ServiceBuilder} A self reference.
220
+ * @throws {Error} If the port is invalid.
221
+ */
222
+ usingPort(port) {
223
+ if (port < 0) {
224
+ throw Error('port must be >= 0: ' + port);
225
+ }
226
+ this.port_ = port;
227
+ return this;
228
+ }
261
229
 
262
- /**
263
- * Sets the number of threads the driver should use to manage HTTP requests.
264
- * By default, the driver will use 4 threads.
265
- * @param {number} n The number of threads to use.
266
- * @return {!ServiceBuilder} A self reference.
267
- */
268
- ServiceBuilder.prototype.setNumHttpThreads = function(n) {
269
- this.args_.push('--http-threads=' + n);
270
- return this;
271
- };
230
+ /**
231
+ * Sets which port adb is listening to. _The ChromeDriver will connect to adb
232
+ * if an {@linkplain Options#androidPackage Android session} is requested, but
233
+ * adb **must** be started beforehand._
234
+ *
235
+ * @param {number} port Which port adb is running on.
236
+ * @return {!ServiceBuilder} A self reference.
237
+ */
238
+ setAdbPort(port) {
239
+ this.args_.push('--adb-port=' + port);
240
+ return this;
241
+ }
272
242
 
243
+ /**
244
+ * Sets the path of the log file the driver should log to. If a log file is
245
+ * not specified, the driver will log to stderr.
246
+ * @param {string} path Path of the log file to use.
247
+ * @return {!ServiceBuilder} A self reference.
248
+ */
249
+ loggingTo(path) {
250
+ this.args_.push('--log-path=' + path);
251
+ return this;
252
+ }
273
253
 
274
- /**
275
- * Sets the base path for WebDriver REST commands (e.g. "/wd/hub").
276
- * By default, the driver will accept commands relative to "/".
277
- * @param {string} path The base path to use.
278
- * @return {!ServiceBuilder} A self reference.
279
- */
280
- ServiceBuilder.prototype.setUrlBasePath = function(path) {
281
- this.args_.push('--url-base=' + path);
282
- this.path_ = path;
283
- return this;
284
- };
254
+ /**
255
+ * Enables verbose logging.
256
+ * @return {!ServiceBuilder} A self reference.
257
+ */
258
+ enableVerboseLogging() {
259
+ this.args_.push('--verbose');
260
+ return this;
261
+ }
285
262
 
263
+ /**
264
+ * Sets the number of threads the driver should use to manage HTTP requests.
265
+ * By default, the driver will use 4 threads.
266
+ * @param {number} n The number of threads to use.
267
+ * @return {!ServiceBuilder} A self reference.
268
+ */
269
+ setNumHttpThreads(n) {
270
+ this.args_.push('--http-threads=' + n);
271
+ return this;
272
+ }
286
273
 
287
- /**
288
- * Defines the stdio configuration for the driver service. See
289
- * {@code child_process.spawn} for more information.
290
- * @param {(string|!Array.<string|number|!Stream|null|undefined>)} config The
291
- * configuration to use.
292
- * @return {!ServiceBuilder} A self reference.
293
- */
294
- ServiceBuilder.prototype.setStdio = function(config) {
295
- this.stdio_ = config;
296
- return this;
297
- };
274
+ /**
275
+ * Sets the base path for WebDriver REST commands (e.g. "/wd/hub").
276
+ * By default, the driver will accept commands relative to "/".
277
+ * @param {string} path The base path to use.
278
+ * @return {!ServiceBuilder} A self reference.
279
+ */
280
+ setUrlBasePath(path) {
281
+ this.args_.push('--url-base=' + path);
282
+ this.path_ = path;
283
+ return this;
284
+ }
298
285
 
286
+ /**
287
+ * Defines the stdio configuration for the driver service. See
288
+ * {@code child_process.spawn} for more information.
289
+ * @param {(string|!Array<string|number|!stream.Stream|null|undefined>)}
290
+ * config The configuration to use.
291
+ * @return {!ServiceBuilder} A self reference.
292
+ */
293
+ setStdio(config) {
294
+ this.stdio_ = config;
295
+ return this;
296
+ }
299
297
 
300
- /**
301
- * Defines the environment to start the server under. This settings will be
302
- * inherited by every browser session started by the server.
303
- * @param {!Object.<string, string>} env The environment to use.
304
- * @return {!ServiceBuilder} A self reference.
305
- */
306
- ServiceBuilder.prototype.withEnvironment = function(env) {
307
- this.env_ = env;
308
- return this;
309
- };
298
+ /**
299
+ * Defines the environment to start the server under. This settings will be
300
+ * inherited by every browser session started by the server.
301
+ * @param {!Object<string, string>} env The environment to use.
302
+ * @return {!ServiceBuilder} A self reference.
303
+ */
304
+ withEnvironment(env) {
305
+ this.env_ = env;
306
+ return this;
307
+ }
310
308
 
309
+ /**
310
+ * Creates a new DriverService using this instance's current configuration.
311
+ * @return {!remote.DriverService} A new driver service using this instance's
312
+ * current configuration.
313
+ * @throws {Error} If the driver exectuable was not specified and a default
314
+ * could not be found on the current PATH.
315
+ */
316
+ build() {
317
+ let port = this.port_ || portprober.findFreePort();
318
+ let args = this.args_.concat(); // Defensive copy.
319
+
320
+ return new remote.DriverService(this.exe_, {
321
+ loopback: true,
322
+ path: this.path_,
323
+ port: port,
324
+ args: promise.when(port, function(port) {
325
+ return args.concat('--port=' + port);
326
+ }),
327
+ env: this.env_,
328
+ stdio: this.stdio_
329
+ });
330
+ }
331
+ }
311
332
 
312
- /**
313
- * Creates a new DriverService using this instance's current configuration.
314
- * @return {remote.DriverService} A new driver service using this instance's
315
- * current configuration.
316
- * @throws {Error} If the driver exectuable was not specified and a default
317
- * could not be found on the current PATH.
318
- */
319
- ServiceBuilder.prototype.build = function() {
320
- var port = this.port_ || portprober.findFreePort();
321
- var args = this.args_.concat(); // Defensive copy.
322
-
323
- return new remote.DriverService(this.exe_, {
324
- loopback: true,
325
- path: this.path_,
326
- port: port,
327
- args: webdriver.promise.when(port, function(port) {
328
- return args.concat('--port=' + port);
329
- }),
330
- env: this.env_,
331
- stdio: this.stdio_
332
- });
333
- };
334
333
 
335
334
 
336
335
  /** @type {remote.DriverService} */
337
- var defaultService = null;
336
+ let defaultService = null;
338
337
 
339
338
 
340
339
  /**
@@ -370,472 +369,436 @@ function getDefaultService() {
370
369
  * @type {string}
371
370
  * @const
372
371
  */
373
- var OPTIONS_CAPABILITY_KEY = 'chromeOptions';
372
+ let OPTIONS_CAPABILITY_KEY = 'chromeOptions';
374
373
 
375
374
 
376
375
  /**
377
376
  * Class for managing ChromeDriver specific options.
378
- * @constructor
379
- * @extends {webdriver.Serializable}
380
377
  */
381
- var Options = function() {
382
- webdriver.Serializable.call(this);
378
+ class Options {
379
+ constructor() {
380
+ /** @private {!Object} */
381
+ this.options_ = {};
383
382
 
384
- /** @private {!Object} */
385
- this.options_ = {};
383
+ /** @private {!Array<(string|!Buffer)>} */
384
+ this.extensions_ = [];
386
385
 
387
- /** @private {!Array.<(string|!Buffer)>} */
388
- this.extensions_ = [];
386
+ /** @private {?logging.Preferences} */
387
+ this.logPrefs_ = null;
389
388
 
390
- /** @private {?webdriver.logging.Preferences} */
391
- this.logPrefs_ = null;
389
+ /** @private {?./lib/capabilities.ProxyConfig} */
390
+ this.proxy_ = null;
391
+ }
392
392
 
393
- /** @private {?webdriver.ProxyConfig} */
394
- this.proxy_ = null;
395
- };
396
- util.inherits(Options, webdriver.Serializable);
393
+ /**
394
+ * Extracts the ChromeDriver specific options from the given capabilities
395
+ * object.
396
+ * @param {!Capabilities} caps The capabilities object.
397
+ * @return {!Options} The ChromeDriver options.
398
+ */
399
+ static fromCapabilities(caps) {
400
+ let options = new Options();
401
+
402
+ let o = caps.get(OPTIONS_CAPABILITY_KEY);
403
+ if (o instanceof Options) {
404
+ options = o;
405
+ } else if (o) {
406
+ options.
407
+ addArguments(o.args || []).
408
+ addExtensions(o.extensions || []).
409
+ detachDriver(o.detach).
410
+ excludeSwitches(o.excludeSwitches || []).
411
+ setChromeBinaryPath(o.binary).
412
+ setChromeLogFile(o.logPath).
413
+ setChromeMinidumpPath(o.minidumpPath).
414
+ setLocalState(o.localState).
415
+ setMobileEmulation(o.mobileEmulation).
416
+ setUserPreferences(o.prefs).
417
+ setPerfLoggingPrefs(o.perfLoggingPrefs);
418
+ }
397
419
 
420
+ if (caps.has(Capability.PROXY)) {
421
+ options.setProxy(caps.get(Capability.PROXY));
422
+ }
398
423
 
399
- /**
400
- * Extracts the ChromeDriver specific options from the given capabilities
401
- * object.
402
- * @param {!webdriver.Capabilities} capabilities The capabilities object.
403
- * @return {!Options} The ChromeDriver options.
404
- */
405
- Options.fromCapabilities = function(capabilities) {
406
- var options = new Options();
424
+ if (caps.has(Capability.LOGGING_PREFS)) {
425
+ options.setLoggingPrefs(
426
+ caps.get(Capability.LOGGING_PREFS));
427
+ }
407
428
 
408
- var o = capabilities.get(OPTIONS_CAPABILITY_KEY);
409
- if (o instanceof Options) {
410
- options = o;
411
- } else if (o) {
412
- options.
413
- addArguments(o.args || []).
414
- addExtensions(o.extensions || []).
415
- detachDriver(o.detach).
416
- excludeSwitches(o.excludeSwitches || []).
417
- setChromeBinaryPath(o.binary).
418
- setChromeLogFile(o.logPath).
419
- setChromeMinidumpPath(o.minidumpPath).
420
- setLocalState(o.localState).
421
- setMobileEmulation(o.mobileEmulation).
422
- setUserPreferences(o.prefs).
423
- setPerfLoggingPrefs(o.perfLoggingPrefs);
429
+ return options;
424
430
  }
425
431
 
426
- if (capabilities.has(webdriver.Capability.PROXY)) {
427
- options.setProxy(capabilities.get(webdriver.Capability.PROXY));
432
+ /**
433
+ * Add additional command line arguments to use when launching the Chrome
434
+ * browser. Each argument may be specified with or without the "--" prefix
435
+ * (e.g. "--foo" and "foo"). Arguments with an associated value should be
436
+ * delimited by an "=": "foo=bar".
437
+ * @param {...(string|!Array<string>)} var_args The arguments to add.
438
+ * @return {!Options} A self reference.
439
+ */
440
+ addArguments(var_args) {
441
+ let args = this.options_.args || [];
442
+ args = args.concat.apply(args, arguments);
443
+ if (args.length) {
444
+ this.options_.args = args;
445
+ }
446
+ return this;
428
447
  }
429
448
 
430
- if (capabilities.has(webdriver.Capability.LOGGING_PREFS)) {
431
- options.setLoggingPrefs(
432
- capabilities.get(webdriver.Capability.LOGGING_PREFS));
449
+ /**
450
+ * List of Chrome command line switches to exclude that ChromeDriver by default
451
+ * passes when starting Chrome. Do not prefix switches with "--".
452
+ *
453
+ * @param {...(string|!Array<string>)} var_args The switches to exclude.
454
+ * @return {!Options} A self reference.
455
+ */
456
+ excludeSwitches(var_args) {
457
+ let switches = this.options_.excludeSwitches || [];
458
+ switches = switches.concat.apply(switches, arguments);
459
+ if (switches.length) {
460
+ this.options_.excludeSwitches = switches;
461
+ }
462
+ return this;
433
463
  }
434
464
 
435
- return options;
436
- };
437
-
438
-
439
- /**
440
- * Add additional command line arguments to use when launching the Chrome
441
- * browser. Each argument may be specified with or without the "--" prefix
442
- * (e.g. "--foo" and "foo"). Arguments with an associated value should be
443
- * delimited by an "=": "foo=bar".
444
- * @param {...(string|!Array.<string>)} var_args The arguments to add.
445
- * @return {!Options} A self reference.
446
- */
447
- Options.prototype.addArguments = function(var_args) {
448
- var args = this.options_.args || [];
449
- args = args.concat.apply(args, arguments);
450
- if (args.length) {
451
- this.options_.args = args;
465
+ /**
466
+ * Add additional extensions to install when launching Chrome. Each extension
467
+ * should be specified as the path to the packed CRX file, or a Buffer for an
468
+ * extension.
469
+ * @param {...(string|!Buffer|!Array<(string|!Buffer)>)} var_args The
470
+ * extensions to add.
471
+ * @return {!Options} A self reference.
472
+ */
473
+ addExtensions(var_args) {
474
+ this.extensions_ =
475
+ this.extensions_.concat.apply(this.extensions_, arguments);
476
+ return this;
452
477
  }
453
- return this;
454
- };
455
-
456
478
 
457
- /**
458
- * List of Chrome command line switches to exclude that ChromeDriver by default
459
- * passes when starting Chrome. Do not prefix switches with "--".
460
- *
461
- * @param {...(string|!Array<string>)} var_args The switches to exclude.
462
- * @return {!Options} A self reference.
463
- */
464
- Options.prototype.excludeSwitches = function(var_args) {
465
- var switches = this.options_.excludeSwitches || [];
466
- switches = switches.concat.apply(switches, arguments);
467
- if (switches.length) {
468
- this.options_.excludeSwitches = switches;
479
+ /**
480
+ * Sets the path to the Chrome binary to use. On Mac OS X, this path should
481
+ * reference the actual Chrome executable, not just the application binary
482
+ * (e.g. "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome").
483
+ *
484
+ * The binary path be absolute or relative to the chromedriver server
485
+ * executable, but it must exist on the machine that will launch Chrome.
486
+ *
487
+ * @param {string} path The path to the Chrome binary to use.
488
+ * @return {!Options} A self reference.
489
+ */
490
+ setChromeBinaryPath(path) {
491
+ this.options_.binary = path;
492
+ return this;
469
493
  }
470
- return this;
471
- };
472
-
473
-
474
- /**
475
- * Add additional extensions to install when launching Chrome. Each extension
476
- * should be specified as the path to the packed CRX file, or a Buffer for an
477
- * extension.
478
- * @param {...(string|!Buffer|!Array.<(string|!Buffer)>)} var_args The
479
- * extensions to add.
480
- * @return {!Options} A self reference.
481
- */
482
- Options.prototype.addExtensions = function(var_args) {
483
- this.extensions_ = this.extensions_.concat.apply(this.extensions_, arguments);
484
- return this;
485
- };
486
-
487
-
488
- /**
489
- * Sets the path to the Chrome binary to use. On Mac OS X, this path should
490
- * reference the actual Chrome executable, not just the application binary
491
- * (e.g. "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome").
492
- *
493
- * The binary path be absolute or relative to the chromedriver server
494
- * executable, but it must exist on the machine that will launch Chrome.
495
- *
496
- * @param {string} path The path to the Chrome binary to use.
497
- * @return {!Options} A self reference.
498
- */
499
- Options.prototype.setChromeBinaryPath = function(path) {
500
- this.options_.binary = path;
501
- return this;
502
- };
503
-
504
-
505
- /**
506
- * Sets whether to leave the started Chrome browser running if the controlling
507
- * ChromeDriver service is killed before {@link webdriver.WebDriver#quit()} is
508
- * called.
509
- * @param {boolean} detach Whether to leave the browser running if the
510
- * chromedriver service is killed before the session.
511
- * @return {!Options} A self reference.
512
- */
513
- Options.prototype.detachDriver = function(detach) {
514
- this.options_.detach = detach;
515
- return this;
516
- };
517
-
518
-
519
- /**
520
- * Sets the user preferences for Chrome's user profile. See the "Preferences"
521
- * file in Chrome's user data directory for examples.
522
- * @param {!Object} prefs Dictionary of user preferences to use.
523
- * @return {!Options} A self reference.
524
- */
525
- Options.prototype.setUserPreferences = function(prefs) {
526
- this.options_.prefs = prefs;
527
- return this;
528
- };
529
-
530
-
531
- /**
532
- * Sets the logging preferences for the new session.
533
- * @param {!webdriver.logging.Preferences} prefs The logging preferences.
534
- * @return {!Options} A self reference.
535
- */
536
- Options.prototype.setLoggingPrefs = function(prefs) {
537
- this.logPrefs_ = prefs;
538
- return this;
539
- };
540
-
541
-
542
- /**
543
- * Sets the performance logging preferences. Options include:
544
- *
545
- * - `enableNetwork`: Whether or not to collect events from Network domain.
546
- * - `enablePage`: Whether or not to collect events from Page domain.
547
- * - `enableTimeline`: Whether or not to collect events from Timeline domain.
548
- * Note: when tracing is enabled, Timeline domain is implicitly disabled,
549
- * unless `enableTimeline` is explicitly set to true.
550
- * - `tracingCategories`: A comma-separated string of Chrome tracing categories
551
- * for which trace events should be collected. An unspecified or empty
552
- * string disables tracing.
553
- * - `bufferUsageReportingInterval`: The requested number of milliseconds
554
- * between DevTools trace buffer usage events. For example, if 1000, then
555
- * once per second, DevTools will report how full the trace buffer is. If a
556
- * report indicates the buffer usage is 100%, a warning will be issued.
557
- *
558
- * @param {{enableNetwork: boolean,
559
- * enablePage: boolean,
560
- * enableTimeline: boolean,
561
- * tracingCategories: string,
562
- * bufferUsageReportingInterval: number}} prefs The performance
563
- * logging preferences.
564
- * @return {!Options} A self reference.
565
- */
566
- Options.prototype.setPerfLoggingPrefs = function(prefs) {
567
- this.options_.perfLoggingPrefs = prefs;
568
- return this;
569
- };
570
-
571
-
572
- /**
573
- * Sets preferences for the "Local State" file in Chrome's user data
574
- * directory.
575
- * @param {!Object} state Dictionary of local state preferences.
576
- * @return {!Options} A self reference.
577
- */
578
- Options.prototype.setLocalState = function(state) {
579
- this.options_.localState = state;
580
- return this;
581
- };
582
-
583
-
584
- /**
585
- * Sets the name of the activity hosting a Chrome-based Android WebView. This
586
- * option must be set to connect to an [Android WebView](
587
- * https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android)
588
- *
589
- * @param {string} name The activity name.
590
- * @return {!Options} A self reference.
591
- */
592
- Options.prototype.androidActivity = function(name) {
593
- this.options_.androidActivity = name;
594
- return this;
595
- };
596
-
597
-
598
- /**
599
- * Sets the device serial number to connect to via ADB. If not specified, the
600
- * ChromeDriver will select an unused device at random. An error will be
601
- * returned if all devices already have active sessions.
602
- *
603
- * @param {string} serial The device serial number to connect to.
604
- * @return {!Options} A self reference.
605
- */
606
- Options.prototype.androidDeviceSerial = function(serial) {
607
- this.options_.androidDeviceSerial = serial;
608
- return this;
609
- };
610
-
611
-
612
- /**
613
- * Configures the ChromeDriver to launch Chrome on Android via adb. This
614
- * function is shorthand for
615
- * {@link #androidPackage options.androidPackage('com.android.chrome')}.
616
- * @return {!Options} A self reference.
617
- */
618
- Options.prototype.androidChrome = function() {
619
- return this.androidPackage('com.android.chrome');
620
- };
621
-
622
-
623
- /**
624
- * Sets the package name of the Chrome or WebView app.
625
- *
626
- * @param {?string} pkg The package to connect to, or `null` to disable Android
627
- * and switch back to using desktop Chrome.
628
- * @return {!Options} A self reference.
629
- */
630
- Options.prototype.androidPackage = function(pkg) {
631
- this.options_.androidPackage = pkg;
632
- return this;
633
- };
634
494
 
495
+ /**
496
+ * Sets whether to leave the started Chrome browser running if the controlling
497
+ * ChromeDriver service is killed before {@link webdriver.WebDriver#quit()} is
498
+ * called.
499
+ * @param {boolean} detach Whether to leave the browser running if the
500
+ * chromedriver service is killed before the session.
501
+ * @return {!Options} A self reference.
502
+ */
503
+ detachDriver(detach) {
504
+ this.options_.detach = detach;
505
+ return this;
506
+ }
635
507
 
636
- /**
637
- * Sets the process name of the Activity hosting the WebView (as given by `ps`).
638
- * If not specified, the process name is assumed to be the same as
639
- * {@link #androidPackage}.
640
- *
641
- * @param {string} processName The main activity name.
642
- * @return {!Options} A self reference.
643
- */
644
- Options.prototype.androidProcess = function(processName) {
645
- this.options_.androidProcess = processName;
646
- return this;
647
- };
508
+ /**
509
+ * Sets the user preferences for Chrome's user profile. See the "Preferences"
510
+ * file in Chrome's user data directory for examples.
511
+ * @param {!Object} prefs Dictionary of user preferences to use.
512
+ * @return {!Options} A self reference.
513
+ */
514
+ setUserPreferences(prefs) {
515
+ this.options_.prefs = prefs;
516
+ return this;
517
+ }
648
518
 
519
+ /**
520
+ * Sets the logging preferences for the new session.
521
+ * @param {!logging.Preferences} prefs The logging preferences.
522
+ * @return {!Options} A self reference.
523
+ */
524
+ setLoggingPrefs(prefs) {
525
+ this.logPrefs_ = prefs;
526
+ return this;
527
+ }
649
528
 
650
- /**
651
- * Sets whether to connect to an already-running instead of the specified
652
- * {@linkplain #androidProcess app} instead of launching the app with a clean
653
- * data directory.
654
- *
655
- * @param {boolean} useRunning Whether to connect to a running instance.
656
- * @return {!Options} A self reference.
657
- */
658
- Options.prototype.androidUseRunningApp = function(useRunning) {
659
- this.options_.androidUseRunningApp = useRunning;
660
- return this;
661
- };
529
+ /**
530
+ * Sets the performance logging preferences. Options include:
531
+ *
532
+ * - `enableNetwork`: Whether or not to collect events from Network domain.
533
+ * - `enablePage`: Whether or not to collect events from Page domain.
534
+ * - `enableTimeline`: Whether or not to collect events from Timeline domain.
535
+ * Note: when tracing is enabled, Timeline domain is implicitly disabled,
536
+ * unless `enableTimeline` is explicitly set to true.
537
+ * - `tracingCategories`: A comma-separated string of Chrome tracing
538
+ * categories for which trace events should be collected. An unspecified
539
+ * or empty string disables tracing.
540
+ * - `bufferUsageReportingInterval`: The requested number of milliseconds
541
+ * between DevTools trace buffer usage events. For example, if 1000, then
542
+ * once per second, DevTools will report how full the trace buffer is. If
543
+ * a report indicates the buffer usage is 100%, a warning will be issued.
544
+ *
545
+ * @param {{enableNetwork: boolean,
546
+ * enablePage: boolean,
547
+ * enableTimeline: boolean,
548
+ * tracingCategories: string,
549
+ * bufferUsageReportingInterval: number}} prefs The performance
550
+ * logging preferences.
551
+ * @return {!Options} A self reference.
552
+ */
553
+ setPerfLoggingPrefs(prefs) {
554
+ this.options_.perfLoggingPrefs = prefs;
555
+ return this;
556
+ }
662
557
 
558
+ /**
559
+ * Sets preferences for the "Local State" file in Chrome's user data
560
+ * directory.
561
+ * @param {!Object} state Dictionary of local state preferences.
562
+ * @return {!Options} A self reference.
563
+ */
564
+ setLocalState(state) {
565
+ this.options_.localState = state;
566
+ return this;
567
+ }
663
568
 
664
- /**
665
- * Sets the path to Chrome's log file. This path should exist on the machine
666
- * that will launch Chrome.
667
- * @param {string} path Path to the log file to use.
668
- * @return {!Options} A self reference.
669
- */
670
- Options.prototype.setChromeLogFile = function(path) {
671
- this.options_.logPath = path;
672
- return this;
673
- };
569
+ /**
570
+ * Sets the name of the activity hosting a Chrome-based Android WebView. This
571
+ * option must be set to connect to an [Android WebView](
572
+ * https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android)
573
+ *
574
+ * @param {string} name The activity name.
575
+ * @return {!Options} A self reference.
576
+ */
577
+ androidActivity(name) {
578
+ this.options_.androidActivity = name;
579
+ return this;
580
+ }
674
581
 
582
+ /**
583
+ * Sets the device serial number to connect to via ADB. If not specified, the
584
+ * ChromeDriver will select an unused device at random. An error will be
585
+ * returned if all devices already have active sessions.
586
+ *
587
+ * @param {string} serial The device serial number to connect to.
588
+ * @return {!Options} A self reference.
589
+ */
590
+ androidDeviceSerial(serial) {
591
+ this.options_.androidDeviceSerial = serial;
592
+ return this;
593
+ }
675
594
 
676
- /**
677
- * Sets the directory to store Chrome minidumps in. This option is only
678
- * supported when ChromeDriver is running on Linux.
679
- * @param {string} path The directory path.
680
- * @return {!Options} A self reference.
681
- */
682
- Options.prototype.setChromeMinidumpPath = function(path) {
683
- this.options_.minidumpPath = path;
684
- return this;
685
- };
595
+ /**
596
+ * Configures the ChromeDriver to launch Chrome on Android via adb. This
597
+ * function is shorthand for
598
+ * {@link #androidPackage options.androidPackage('com.android.chrome')}.
599
+ * @return {!Options} A self reference.
600
+ */
601
+ androidChrome() {
602
+ return this.androidPackage('com.android.chrome');
603
+ }
686
604
 
605
+ /**
606
+ * Sets the package name of the Chrome or WebView app.
607
+ *
608
+ * @param {?string} pkg The package to connect to, or `null` to disable Android
609
+ * and switch back to using desktop Chrome.
610
+ * @return {!Options} A self reference.
611
+ */
612
+ androidPackage(pkg) {
613
+ this.options_.androidPackage = pkg;
614
+ return this;
615
+ }
687
616
 
688
- /**
689
- * Configures Chrome to emulate a mobile device. For more information, refer to
690
- * the ChromeDriver project page on [mobile emulation][em]. Configuration
691
- * options include:
692
- *
693
- * - `deviceName`: The name of a pre-configured [emulated device][devem]
694
- * - `width`: screen width, in pixels
695
- * - `height`: screen height, in pixels
696
- * - `pixelRatio`: screen pixel ratio
697
- *
698
- * __Example 1: Using a Pre-configured Device__
699
- *
700
- * var options = new chrome.Options().setMobileEmulation(
701
- * {deviceName: 'Google Nexus 5'});
702
- *
703
- * var driver = new chrome.Driver(options);
704
- *
705
- * __Example 2: Using Custom Screen Configuration__
706
- *
707
- * var options = new chrome.Options().setMobileEmulation({
708
- * width: 360,
709
- * height: 640,
710
- * pixelRatio: 3.0
711
- * });
712
- *
713
- * var driver = new chrome.Driver(options);
714
- *
715
- *
716
- * [em]: https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation
717
- * [devem]: https://developer.chrome.com/devtools/docs/device-mode
718
- *
719
- * @param {?({deviceName: string}|
720
- * {width: number, height: number, pixelRatio: number})} config The
721
- * mobile emulation configuration, or `null` to disable emulation.
722
- * @return {!Options} A self reference.
723
- */
724
- Options.prototype.setMobileEmulation = function(config) {
725
- this.options_.mobileEmulation = config;
726
- return this;
727
- };
617
+ /**
618
+ * Sets the process name of the Activity hosting the WebView (as given by
619
+ * `ps`). If not specified, the process name is assumed to be the same as
620
+ * {@link #androidPackage}.
621
+ *
622
+ * @param {string} processName The main activity name.
623
+ * @return {!Options} A self reference.
624
+ */
625
+ androidProcess(processName) {
626
+ this.options_.androidProcess = processName;
627
+ return this;
628
+ }
728
629
 
630
+ /**
631
+ * Sets whether to connect to an already-running instead of the specified
632
+ * {@linkplain #androidProcess app} instead of launching the app with a clean
633
+ * data directory.
634
+ *
635
+ * @param {boolean} useRunning Whether to connect to a running instance.
636
+ * @return {!Options} A self reference.
637
+ */
638
+ androidUseRunningApp(useRunning) {
639
+ this.options_.androidUseRunningApp = useRunning;
640
+ return this;
641
+ }
729
642
 
730
- /**
731
- * Sets the proxy settings for the new session.
732
- * @param {webdriver.ProxyConfig} proxy The proxy configuration to use.
733
- * @return {!Options} A self reference.
734
- */
735
- Options.prototype.setProxy = function(proxy) {
736
- this.proxy_ = proxy;
737
- return this;
738
- };
643
+ /**
644
+ * Sets the path to Chrome's log file. This path should exist on the machine
645
+ * that will launch Chrome.
646
+ * @param {string} path Path to the log file to use.
647
+ * @return {!Options} A self reference.
648
+ */
649
+ setChromeLogFile(path) {
650
+ this.options_.logPath = path;
651
+ return this;
652
+ }
739
653
 
654
+ /**
655
+ * Sets the directory to store Chrome minidumps in. This option is only
656
+ * supported when ChromeDriver is running on Linux.
657
+ * @param {string} path The directory path.
658
+ * @return {!Options} A self reference.
659
+ */
660
+ setChromeMinidumpPath(path) {
661
+ this.options_.minidumpPath = path;
662
+ return this;
663
+ }
740
664
 
741
- /**
742
- * Converts this options instance to a {@link webdriver.Capabilities} object.
743
- * @param {webdriver.Capabilities=} opt_capabilities The capabilities to merge
744
- * these options into, if any.
745
- * @return {!webdriver.Capabilities} The capabilities.
746
- */
747
- Options.prototype.toCapabilities = function(opt_capabilities) {
748
- var capabilities = opt_capabilities || webdriver.Capabilities.chrome();
749
- capabilities.
750
- set(webdriver.Capability.PROXY, this.proxy_).
751
- set(webdriver.Capability.LOGGING_PREFS, this.logPrefs_).
752
- set(OPTIONS_CAPABILITY_KEY, this);
753
- return capabilities;
754
- };
665
+ /**
666
+ * Configures Chrome to emulate a mobile device. For more information, refer
667
+ * to the ChromeDriver project page on [mobile emulation][em]. Configuration
668
+ * options include:
669
+ *
670
+ * - `deviceName`: The name of a pre-configured [emulated device][devem]
671
+ * - `width`: screen width, in pixels
672
+ * - `height`: screen height, in pixels
673
+ * - `pixelRatio`: screen pixel ratio
674
+ *
675
+ * __Example 1: Using a Pre-configured Device__
676
+ *
677
+ * let options = new chrome.Options().setMobileEmulation(
678
+ * {deviceName: 'Google Nexus 5'});
679
+ *
680
+ * let driver = new chrome.Driver(options);
681
+ *
682
+ * __Example 2: Using Custom Screen Configuration__
683
+ *
684
+ * let options = new chrome.Options().setMobileEmulation({
685
+ * width: 360,
686
+ * height: 640,
687
+ * pixelRatio: 3.0
688
+ * });
689
+ *
690
+ * let driver = new chrome.Driver(options);
691
+ *
692
+ *
693
+ * [em]: https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation
694
+ * [devem]: https://developer.chrome.com/devtools/docs/device-mode
695
+ *
696
+ * @param {?({deviceName: string}|
697
+ * {width: number, height: number, pixelRatio: number})} config The
698
+ * mobile emulation configuration, or `null` to disable emulation.
699
+ * @return {!Options} A self reference.
700
+ */
701
+ setMobileEmulation(config) {
702
+ this.options_.mobileEmulation = config;
703
+ return this;
704
+ }
755
705
 
706
+ /**
707
+ * Sets the proxy settings for the new session.
708
+ * @param {./lib/capabilities.ProxyConfig} proxy The proxy configuration to
709
+ * use.
710
+ * @return {!Options} A self reference.
711
+ */
712
+ setProxy(proxy) {
713
+ this.proxy_ = proxy;
714
+ return this;
715
+ }
756
716
 
757
- /**
758
- * Converts this instance to its JSON wire protocol representation. Note this
759
- * function is an implementation not intended for general use.
760
- * @return {{args: !Array.<string>,
761
- * binary: (string|undefined),
762
- * detach: boolean,
763
- * extensions: !Array.<(string|!webdriver.promise.Promise.<string>)>,
764
- * localState: (Object|undefined),
765
- * logPath: (string|undefined),
766
- * prefs: (Object|undefined)}} The JSON wire protocol representation
767
- * of this instance.
768
- * @override
769
- */
770
- Options.prototype.serialize = function() {
771
- var json = {};
772
- for (var key in this.options_) {
773
- if (this.options_[key] != null) {
774
- json[key] = this.options_[key];
775
- }
717
+ /**
718
+ * Converts this options instance to a {@link Capabilities} object.
719
+ * @param {Capabilities=} opt_capabilities The capabilities to merge
720
+ * these options into, if any.
721
+ * @return {!Capabilities} The capabilities.
722
+ */
723
+ toCapabilities(opt_capabilities) {
724
+ let caps = opt_capabilities || Capabilities.chrome();
725
+ caps.
726
+ set(Capability.PROXY, this.proxy_).
727
+ set(Capability.LOGGING_PREFS, this.logPrefs_).
728
+ set(OPTIONS_CAPABILITY_KEY, this);
729
+ return caps;
776
730
  }
777
- if (this.extensions_.length) {
778
- json.extensions = this.extensions_.map(function(extension) {
779
- if (Buffer.isBuffer(extension)) {
780
- return extension.toString('base64');
731
+
732
+ /**
733
+ * Converts this instance to its JSON wire protocol representation. Note this
734
+ * function is an implementation not intended for general use.
735
+ * @return {!Object} The JSON wire protocol representation of this instance.
736
+ */
737
+ [Symbols.serialize]() {
738
+ let json = {};
739
+ for (let key in this.options_) {
740
+ if (this.options_[key] != null) {
741
+ json[key] = this.options_[key];
781
742
  }
782
- return webdriver.promise.checkedNodeCall(
783
- fs.readFile, extension, 'base64');
784
- });
743
+ }
744
+ if (this.extensions_.length) {
745
+ json.extensions = this.extensions_.map(function(extension) {
746
+ if (Buffer.isBuffer(extension)) {
747
+ return extension.toString('base64');
748
+ }
749
+ return promise.checkedNodeCall(
750
+ fs.readFile, extension, 'base64');
751
+ });
752
+ }
753
+ return json;
785
754
  }
786
- return json;
787
- };
755
+ }
788
756
 
789
757
 
790
758
  /**
791
759
  * Creates a new WebDriver client for Chrome.
792
- *
793
- * @param {(webdriver.Capabilities|Options)=} opt_config The configuration
794
- * options.
795
- * @param {remote.DriverService=} opt_service The session to use; will use
796
- * the {@linkplain #getDefaultService default service} by default.
797
- * @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or
798
- * {@code null} to use the currently active flow.
799
- * @constructor
800
- * @extends {webdriver.WebDriver}
801
- */
802
- var Driver = function(opt_config, opt_service, opt_flow) {
803
- var service = opt_service || getDefaultService();
804
- var executor = createExecutor(service.start());
805
-
806
- var capabilities =
807
- opt_config instanceof Options ? opt_config.toCapabilities() :
808
- (opt_config || webdriver.Capabilities.chrome());
809
-
810
- var driver = webdriver.WebDriver.createSession(
811
- executor, capabilities, opt_flow);
812
-
813
- webdriver.WebDriver.call(
814
- this, driver.getSession(), executor, driver.controlFlow());
815
- };
816
- util.inherits(Driver, webdriver.WebDriver);
817
-
818
-
819
- /**
820
- * This function is a no-op as file detectors are not supported by this
821
- * implementation.
822
- * @override
823
760
  */
824
- Driver.prototype.setFileDetector = function() {
825
- };
826
-
761
+ class Driver extends webdriver.WebDriver {
762
+ /**
763
+ * @param {(Capabilities|Options)=} opt_config The configuration
764
+ * options.
765
+ * @param {remote.DriverService=} opt_service The session to use; will use
766
+ * the {@linkplain #getDefaultService default service} by default.
767
+ * @param {promise.ControlFlow=} opt_flow The control flow to use,
768
+ * or {@code null} to use the currently active flow.
769
+ */
770
+ constructor(opt_config, opt_service, opt_flow) {
771
+ let service = opt_service || getDefaultService();
772
+ let executor = createExecutor(service.start());
773
+
774
+ let caps =
775
+ opt_config instanceof Options ? opt_config.toCapabilities() :
776
+ (opt_config || Capabilities.chrome());
777
+
778
+ let driver = webdriver.WebDriver.createSession(executor, caps, opt_flow);
779
+
780
+ super(driver.getSession(), executor, driver.controlFlow());
781
+ }
827
782
 
828
- /**
829
- * Schedules a command to launch Chrome App with given ID.
830
- * @param {string} id ID of the App to launch.
831
- * @return {!webdriver.promise.Promise<void>} A promise that will be resolved
832
- * when app is launched.
833
- */
834
- Driver.prototype.launchApp = function(id) {
835
- return this.schedule(
836
- new webdriver.Command(Command.LAUNCH_APP).setParameter('id', id),
837
- 'Driver.launchApp()');
838
- };
783
+ /**
784
+ * This function is a no-op as file detectors are not supported by this
785
+ * implementation.
786
+ * @override
787
+ */
788
+ setFileDetector() {}
789
+
790
+ /**
791
+ * Schedules a command to launch Chrome App with given ID.
792
+ * @param {string} id ID of the App to launch.
793
+ * @return {!promise.Promise<void>} A promise that will be resolved
794
+ * when app is launched.
795
+ */
796
+ launchApp(id) {
797
+ return this.schedule(
798
+ new command.Command(Command.LAUNCH_APP).setParameter('id', id),
799
+ 'Driver.launchApp()');
800
+ }
801
+ }
839
802
 
840
803
 
841
804
  // PUBLIC API