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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "selenium-webdriver",
3
- "version": "2.47.0",
3
+ "version": "2.52.0",
4
4
  "description": "The official WebDriver JavaScript bindings from the Selenium project",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -20,13 +20,13 @@
20
20
  "url": "https://github.com/SeleniumHQ/selenium.git"
21
21
  },
22
22
  "engines": {
23
- "node": ">= 0.12.x"
23
+ "node": ">= 4.2.x"
24
24
  },
25
25
  "dependencies": {
26
26
  "adm-zip": "0.4.4",
27
27
  "rimraf": "^2.2.8",
28
28
  "tmp": "0.0.24",
29
- "ws": "^0.8.0",
29
+ "ws": "^1.0.1",
30
30
  "xml2js": "0.4.4"
31
31
  },
32
32
  "devDependencies": {
@@ -34,9 +34,10 @@
34
34
  "mocha": ">= 1.21.x",
35
35
  "multer": "^0.1.7",
36
36
  "promises-aplus-tests": "^2.1.0",
37
- "serve-index": "^1.6.1"
37
+ "serve-index": "^1.6.1",
38
+ "sinon": "^1.17.2"
38
39
  },
39
40
  "scripts": {
40
- "test": "node_modules/.bin/mocha --harmony -t 600000 --recursive test"
41
+ "test": "mocha --harmony -t 600000 --recursive test"
41
42
  }
42
43
  }
package/phantomjs.js CHANGED
@@ -17,13 +17,16 @@
17
17
 
18
18
  'use strict';
19
19
 
20
- var fs = require('fs'),
21
- util = require('util');
20
+ const fs = require('fs');
22
21
 
23
- var webdriver = require('./index'),
24
- executors = require('./executors'),
22
+ const executors = require('./executors'),
25
23
  http = require('./http'),
26
24
  io = require('./io'),
25
+ capabilities = require('./lib/capabilities'),
26
+ command = require('./lib/command'),
27
+ logging = require('./lib/logging'),
28
+ promise = require('./lib/promise'),
29
+ webdriver = require('./lib/webdriver'),
27
30
  portprober = require('./net/portprober'),
28
31
  remote = require('./remote');
29
32
 
@@ -33,7 +36,7 @@ var webdriver = require('./index'),
33
36
  * @type {string}
34
37
  * @const
35
38
  */
36
- var PHANTOMJS_EXE =
39
+ const PHANTOMJS_EXE =
37
40
  process.platform === 'win32' ? 'phantomjs.exe' : 'phantomjs';
38
41
 
39
42
 
@@ -42,7 +45,7 @@ var PHANTOMJS_EXE =
42
45
  * @type {string}
43
46
  * @const
44
47
  */
45
- var BINARY_PATH_CAPABILITY = 'phantomjs.binary.path';
48
+ const BINARY_PATH_CAPABILITY = 'phantomjs.binary.path';
46
49
 
47
50
 
48
51
  /**
@@ -50,7 +53,7 @@ var BINARY_PATH_CAPABILITY = 'phantomjs.binary.path';
50
53
  * @type {string}
51
54
  * @const
52
55
  */
53
- var CLI_ARGS_CAPABILITY = 'phantomjs.cli.args';
56
+ const CLI_ARGS_CAPABILITY = 'phantomjs.cli.args';
54
57
 
55
58
 
56
59
  /**
@@ -58,14 +61,14 @@ var CLI_ARGS_CAPABILITY = 'phantomjs.cli.args';
58
61
  * @type {string}
59
62
  * @const
60
63
  */
61
- var DEFAULT_LOG_FILE = 'phantomjsdriver.log';
64
+ const DEFAULT_LOG_FILE = 'phantomjsdriver.log';
62
65
 
63
66
 
64
67
  /**
65
68
  * Custom command names supported by PhantomJS.
66
69
  * @enum {string}
67
70
  */
68
- var Command = {
71
+ const Command = {
69
72
  EXECUTE_PHANTOM_SCRIPT: 'executePhantomScript'
70
73
  };
71
74
 
@@ -96,24 +99,20 @@ function findExecutable(opt_exe) {
96
99
 
97
100
  /**
98
101
  * Maps WebDriver logging level name to those recognised by PhantomJS.
99
- * @type {!Object.<string, string>}
100
- * @const
102
+ * @const {!Map<string, string>}
101
103
  */
102
- var WEBDRIVER_TO_PHANTOMJS_LEVEL = (function() {
103
- var map = {};
104
- map[webdriver.logging.Level.ALL.name] = 'DEBUG';
105
- map[webdriver.logging.Level.DEBUG.name] = 'DEBUG';
106
- map[webdriver.logging.Level.INFO.name] = 'INFO';
107
- map[webdriver.logging.Level.WARNING.name] = 'WARN';
108
- map[webdriver.logging.Level.SEVERE.name] = 'ERROR';
109
- return map;
110
- })();
104
+ const WEBDRIVER_TO_PHANTOMJS_LEVEL = new Map([
105
+ [logging.Level.ALL.name, 'DEBUG'],
106
+ [logging.Level.DEBUG.name, 'DEBUG'],
107
+ [logging.Level.INFO.name, 'INFO'],
108
+ [logging.Level.WARNING.name, 'WARN'],
109
+ [logging.Level.SEVERE.name, 'ERROR']]);
111
110
 
112
111
 
113
112
  /**
114
113
  * Creates a command executor with support for PhantomJS' custom commands.
115
- * @param {!webdriver.promise.Promise<string>} url The server's URL.
116
- * @return {!webdriver.CommandExecutor} The new command executor.
114
+ * @param {!promise.Promise<string>} url The server's URL.
115
+ * @return {!command.Executor} The new command executor.
117
116
  */
118
117
  function createExecutor(url) {
119
118
  return new executors.DeferredExecutor(url.then(function(url) {
@@ -130,134 +129,130 @@ function createExecutor(url) {
130
129
 
131
130
  /**
132
131
  * Creates a new WebDriver client for PhantomJS.
133
- *
134
- * @param {webdriver.Capabilities=} opt_capabilities The desired capabilities.
135
- * @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or
136
- * {@code null} to use the currently active flow.
137
- * @constructor
138
- * @extends {webdriver.WebDriver}
139
132
  */
140
- var Driver = function(opt_capabilities, opt_flow) {
141
- var capabilities = opt_capabilities || webdriver.Capabilities.phantomjs();
142
- var exe = findExecutable(capabilities.get(BINARY_PATH_CAPABILITY));
143
- var args = ['--webdriver-logfile=' + DEFAULT_LOG_FILE];
144
-
145
- var logPrefs = capabilities.get(webdriver.Capability.LOGGING_PREFS);
146
- if (logPrefs instanceof webdriver.logging.Preferences) {
147
- logPrefs = logPrefs.toJSON();
148
- }
133
+ class Driver extends webdriver.WebDriver {
134
+ /**
135
+ * @param {capabilities.Capabilities=} opt_capabilities The desired
136
+ * capabilities.
137
+ * @param {promise.ControlFlow=} opt_flow The control flow to use,
138
+ * or {@code null} to use the currently active flow.
139
+ */
140
+ constructor(opt_capabilities, opt_flow) {
141
+ var caps = opt_capabilities || capabilities.Capabilities.phantomjs();
142
+ var exe = findExecutable(caps.get(BINARY_PATH_CAPABILITY));
143
+ var args = ['--webdriver-logfile=' + DEFAULT_LOG_FILE];
144
+
145
+ var logPrefs = caps.get(capabilities.Capability.LOGGING_PREFS);
146
+ if (logPrefs instanceof logging.Preferences) {
147
+ logPrefs = logPrefs.toJSON();
148
+ }
149
149
 
150
- if (logPrefs && logPrefs[webdriver.logging.Type.DRIVER]) {
151
- var level = WEBDRIVER_TO_PHANTOMJS_LEVEL[
152
- logPrefs[webdriver.logging.Type.DRIVER]];
153
- if (level) {
154
- args.push('--webdriver-loglevel=' + level);
150
+ if (logPrefs && logPrefs[logging.Type.DRIVER]) {
151
+ let level = WEBDRIVER_TO_PHANTOMJS_LEVEL.get(
152
+ logPrefs[logging.Type.DRIVER]);
153
+ if (level) {
154
+ args.push('--webdriver-loglevel=' + level);
155
+ }
155
156
  }
156
- }
157
157
 
158
- var proxy = capabilities.get(webdriver.Capability.PROXY);
159
- if (proxy) {
160
- switch (proxy.proxyType) {
161
- case 'manual':
162
- if (proxy.httpProxy) {
163
- args.push(
164
- '--proxy-type=http',
165
- '--proxy=http://' + proxy.httpProxy);
166
- }
167
- break;
168
- case 'pac':
169
- throw Error('PhantomJS does not support Proxy PAC files');
170
- case 'system':
171
- args.push('--proxy-type=system');
172
- break;
173
- case 'direct':
174
- args.push('--proxy-type=none');
175
- break;
158
+ var proxy = caps.get(capabilities.Capability.PROXY);
159
+ if (proxy) {
160
+ switch (proxy.proxyType) {
161
+ case 'manual':
162
+ if (proxy.httpProxy) {
163
+ args.push(
164
+ '--proxy-type=http',
165
+ '--proxy=http://' + proxy.httpProxy);
166
+ }
167
+ break;
168
+ case 'pac':
169
+ throw Error('PhantomJS does not support Proxy PAC files');
170
+ case 'system':
171
+ args.push('--proxy-type=system');
172
+ break;
173
+ case 'direct':
174
+ args.push('--proxy-type=none');
175
+ break;
176
+ }
176
177
  }
177
- }
178
- args = args.concat(capabilities.get(CLI_ARGS_CAPABILITY) || []);
179
-
180
- var port = portprober.findFreePort();
181
- var service = new remote.DriverService(exe, {
182
- port: port,
183
- args: webdriver.promise.when(port, function(port) {
184
- args.push('--webdriver=' + port);
185
- return args;
186
- })
187
- });
188
-
189
- var executor = createExecutor(service.start());
190
- var driver = webdriver.WebDriver.createSession(
191
- executor, capabilities, opt_flow);
192
-
193
- webdriver.WebDriver.call(
194
- this, driver.getSession(), executor, driver.controlFlow());
195
-
196
- var boundQuit = this.quit.bind(this);
197
-
198
- /** @override */
199
- this.quit = function() {
200
- return boundQuit().thenFinally(service.kill.bind(service));
201
- };
202
- };
203
- util.inherits(Driver, webdriver.WebDriver);
178
+ args = args.concat(caps.get(CLI_ARGS_CAPABILITY) || []);
204
179
 
180
+ var port = portprober.findFreePort();
181
+ var service = new remote.DriverService(exe, {
182
+ port: port,
183
+ args: promise.when(port, function(port) {
184
+ args.push('--webdriver=' + port);
185
+ return args;
186
+ })
187
+ });
205
188
 
206
- /**
207
- * This function is a no-op as file detectors are not supported by this
208
- * implementation.
209
- * @override
210
- */
211
- Driver.prototype.setFileDetector = function() {
212
- };
189
+ var executor = createExecutor(service.start());
190
+ var driver = webdriver.WebDriver.createSession(executor, caps, opt_flow);
213
191
 
192
+ super(driver.getSession(), executor, driver.controlFlow());
214
193
 
215
- /**
216
- * Executes a PhantomJS fragment. This method is similar to
217
- * {@link #executeScript}, except it exposes the
218
- * <a href="http://phantomjs.org/api/">PhantomJS API</a> to the injected
219
- * script.
220
- *
221
- * <p>The injected script will execute in the context of PhantomJS's
222
- * {@code page} variable. If a page has not been loaded before calling this
223
- * method, one will be created.</p>
224
- *
225
- * <p>Be sure to wrap callback definitions in a try/catch block, as failures
226
- * may cause future WebDriver calls to fail.</p>
227
- *
228
- * <p>Certain callbacks are used by GhostDriver (the PhantomJS WebDriver
229
- * implementation) and overriding these may cause the script to fail. It is
230
- * recommended that you check for existing callbacks before defining your own.
231
- * </p>
232
- *
233
- * As with {@link #executeScript}, the injected script may be defined as
234
- * a string for an anonymous function body (e.g. "return 123;"), or as a
235
- * function. If a function is provided, it will be decompiled to its original
236
- * source. Note that injecting functions is provided as a convenience to
237
- * simplify defining complex scripts. Care must be taken that the function
238
- * only references variables that will be defined in the page's scope and
239
- * that the function does not override {@code Function.prototype.toString}
240
- * (overriding toString() will interfere with how the function is
241
- * decompiled.
242
- *
243
- * @param {(string|!Function)} script The script to execute.
244
- * @param {...*} var_args The arguments to pass to the script.
245
- * @return {!webdriver.promise.Promise<T>} A promise that resolve to the
246
- * script's return value.
247
- * @template T
248
- */
249
- Driver.prototype.executePhantomJS = function(script, args) {
250
- if (typeof script === 'function') {
251
- script = 'return (' + script + ').apply(this, arguments);';
194
+ var boundQuit = this.quit.bind(this);
195
+
196
+ /** @override */
197
+ this.quit = function() {
198
+ return boundQuit().thenFinally(service.kill.bind(service));
199
+ };
252
200
  }
253
- var args = arguments.length > 1
254
- ? Array.prototype.slice.call(arguments, 1) : [];
255
- return this.schedule(
256
- new webdriver.Command(Command.EXECUTE_PHANTOM_SCRIPT)
257
- .setParameter('script', script)
258
- .setParameter('args', args),
259
- 'Driver.executePhantomJS()');
260
- };
201
+
202
+ /**
203
+ * This function is a no-op as file detectors are not supported by this
204
+ * implementation.
205
+ * @override
206
+ */
207
+ setFileDetector() {}
208
+
209
+ /**
210
+ * Executes a PhantomJS fragment. This method is similar to
211
+ * {@link #executeScript}, except it exposes the
212
+ * <a href="http://phantomjs.org/api/">PhantomJS API</a> to the injected
213
+ * script.
214
+ *
215
+ * <p>The injected script will execute in the context of PhantomJS's
216
+ * {@code page} variable. If a page has not been loaded before calling this
217
+ * method, one will be created.</p>
218
+ *
219
+ * <p>Be sure to wrap callback definitions in a try/catch block, as failures
220
+ * may cause future WebDriver calls to fail.</p>
221
+ *
222
+ * <p>Certain callbacks are used by GhostDriver (the PhantomJS WebDriver
223
+ * implementation) and overriding these may cause the script to fail. It is
224
+ * recommended that you check for existing callbacks before defining your own.
225
+ * </p>
226
+ *
227
+ * As with {@link #executeScript}, the injected script may be defined as
228
+ * a string for an anonymous function body (e.g. "return 123;"), or as a
229
+ * function. If a function is provided, it will be decompiled to its original
230
+ * source. Note that injecting functions is provided as a convenience to
231
+ * simplify defining complex scripts. Care must be taken that the function
232
+ * only references variables that will be defined in the page's scope and
233
+ * that the function does not override {@code Function.prototype.toString}
234
+ * (overriding toString() will interfere with how the function is
235
+ * decompiled.
236
+ *
237
+ * @param {(string|!Function)} script The script to execute.
238
+ * @param {...*} var_args The arguments to pass to the script.
239
+ * @return {!promise.Promise<T>} A promise that resolve to the
240
+ * script's return value.
241
+ * @template T
242
+ */
243
+ executePhantomJS(script, var_args) {
244
+ if (typeof script === 'function') {
245
+ script = 'return (' + script + ').apply(this, arguments);';
246
+ }
247
+ var args = arguments.length > 1
248
+ ? Array.prototype.slice.call(arguments, 1) : [];
249
+ return this.schedule(
250
+ new command.Command(Command.EXECUTE_PHANTOM_SCRIPT)
251
+ .setParameter('script', script)
252
+ .setParameter('args', args),
253
+ 'Driver.executePhantomJS()');
254
+ }
255
+ }
261
256
 
262
257
 
263
258
  // PUBLIC API
package/proxy.js CHANGED
@@ -31,6 +31,8 @@
31
31
 
32
32
  var util = require('util');
33
33
 
34
+ var ProxyConfig = require('./lib/capabilities').ProxyConfig;
35
+
34
36
 
35
37
 
36
38
  // PUBLIC API
@@ -38,7 +40,7 @@ var util = require('util');
38
40
 
39
41
  /**
40
42
  * Configures WebDriver to bypass all browser proxies.
41
- * @return {!webdriver.ProxyConfig} A new proxy configuration object.
43
+ * @return {!ProxyConfig} A new proxy configuration object.
42
44
  */
43
45
  exports.direct = function() {
44
46
  return {proxyType: 'direct'};
@@ -64,7 +66,7 @@ exports.direct = function() {
64
66
  * https: (string|undefined),
65
67
  * bypass: (string|!Array.<string>|undefined)}} options Proxy
66
68
  * configuration options.
67
- * @return {!webdriver.ProxyConfig} A new proxy configuration object.
69
+ * @return {!ProxyConfig} A new proxy configuration object.
68
70
  */
69
71
  exports.manual = function(options) {
70
72
  return {
@@ -82,7 +84,7 @@ exports.manual = function(options) {
82
84
  * Configures WebDriver to configure the browser proxy using the PAC file at
83
85
  * the given URL.
84
86
  * @param {string} url URL for the PAC proxy to use.
85
- * @return {!webdriver.ProxyConfig} A new proxy configuration object.
87
+ * @return {!ProxyConfig} A new proxy configuration object.
86
88
  */
87
89
  exports.pac = function(url) {
88
90
  return {
@@ -94,7 +96,7 @@ exports.pac = function(url) {
94
96
 
95
97
  /**
96
98
  * Configures WebDriver to use the current system's proxy.
97
- * @return {!webdriver.ProxyConfig} A new proxy configuration object.
99
+ * @return {!ProxyConfig} A new proxy configuration object.
98
100
  */
99
101
  exports.system = function() {
100
102
  return {proxyType: 'system'};