UrgentcareCLI 0.1.1 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) hide show
  1. checksums.yaml +4 -4
  2. data/lib/UrgentCare/CLI.rb +57 -22
  3. data/lib/UrgentCare/Office.rb +1 -5
  4. data/lib/UrgentCare/Scraper.rb +71 -0
  5. data/lib/UrgentCare/version.rb +2 -2
  6. data/lib/UrgentCare.rb +2 -1
  7. metadata +27 -321
  8. data/.gitignore +0 -11
  9. data/.rspec +0 -3
  10. data/.travis.yml +0 -5
  11. data/CODE_OF_CONDUCT.md +0 -74
  12. data/Gemfile +0 -12
  13. data/Gemfile.lock +0 -84
  14. data/LICENSE.txt +0 -21
  15. data/Notes +0 -41
  16. data/README.md +0 -41
  17. data/Rakefile +0 -8
  18. data/UrgentCare.gemspec +0 -39
  19. data/background.jpg +0 -0
  20. data/data.txt +0 -4
  21. data/lib/Urgentcare/Scraper.rb +0 -78
  22. data/node_modules/.bin/rimraf +0 -1
  23. data/node_modules/.package-lock.json +0 -250
  24. data/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  25. data/node_modules/balanced-match/LICENSE.md +0 -21
  26. data/node_modules/balanced-match/README.md +0 -97
  27. data/node_modules/balanced-match/index.js +0 -62
  28. data/node_modules/balanced-match/package.json +0 -48
  29. data/node_modules/brace-expansion/LICENSE +0 -21
  30. data/node_modules/brace-expansion/README.md +0 -129
  31. data/node_modules/brace-expansion/index.js +0 -201
  32. data/node_modules/brace-expansion/package.json +0 -47
  33. data/node_modules/concat-map/.travis.yml +0 -4
  34. data/node_modules/concat-map/LICENSE +0 -18
  35. data/node_modules/concat-map/README.markdown +0 -62
  36. data/node_modules/concat-map/example/map.js +0 -6
  37. data/node_modules/concat-map/index.js +0 -13
  38. data/node_modules/concat-map/package.json +0 -43
  39. data/node_modules/concat-map/test/map.js +0 -39
  40. data/node_modules/core-util-is/LICENSE +0 -19
  41. data/node_modules/core-util-is/README.md +0 -3
  42. data/node_modules/core-util-is/float.patch +0 -604
  43. data/node_modules/core-util-is/lib/util.js +0 -107
  44. data/node_modules/core-util-is/package.json +0 -32
  45. data/node_modules/core-util-is/test.js +0 -68
  46. data/node_modules/fs.realpath/LICENSE +0 -43
  47. data/node_modules/fs.realpath/README.md +0 -33
  48. data/node_modules/fs.realpath/index.js +0 -66
  49. data/node_modules/fs.realpath/old.js +0 -303
  50. data/node_modules/fs.realpath/package.json +0 -26
  51. data/node_modules/glob/LICENSE +0 -21
  52. data/node_modules/glob/README.md +0 -375
  53. data/node_modules/glob/changelog.md +0 -67
  54. data/node_modules/glob/common.js +0 -234
  55. data/node_modules/glob/glob.js +0 -788
  56. data/node_modules/glob/package.json +0 -51
  57. data/node_modules/glob/sync.js +0 -484
  58. data/node_modules/immediate/LICENSE.txt +0 -20
  59. data/node_modules/immediate/README.md +0 -93
  60. data/node_modules/immediate/dist/immediate.js +0 -75
  61. data/node_modules/immediate/dist/immediate.min.js +0 -1
  62. data/node_modules/immediate/lib/browser.js +0 -69
  63. data/node_modules/immediate/lib/index.js +0 -73
  64. data/node_modules/immediate/package.json +0 -42
  65. data/node_modules/inflight/LICENSE +0 -15
  66. data/node_modules/inflight/README.md +0 -37
  67. data/node_modules/inflight/inflight.js +0 -54
  68. data/node_modules/inflight/package.json +0 -29
  69. data/node_modules/inherits/LICENSE +0 -16
  70. data/node_modules/inherits/README.md +0 -42
  71. data/node_modules/inherits/inherits.js +0 -9
  72. data/node_modules/inherits/inherits_browser.js +0 -27
  73. data/node_modules/inherits/package.json +0 -29
  74. data/node_modules/isarray/.npmignore +0 -1
  75. data/node_modules/isarray/.travis.yml +0 -4
  76. data/node_modules/isarray/Makefile +0 -6
  77. data/node_modules/isarray/README.md +0 -60
  78. data/node_modules/isarray/component.json +0 -19
  79. data/node_modules/isarray/index.js +0 -5
  80. data/node_modules/isarray/package.json +0 -45
  81. data/node_modules/isarray/test.js +0 -20
  82. data/node_modules/jszip/.codeclimate.yml +0 -16
  83. data/node_modules/jszip/.editorconfig +0 -8
  84. data/node_modules/jszip/.jshintignore +0 -1
  85. data/node_modules/jszip/.jshintrc +0 -21
  86. data/node_modules/jszip/.travis.yml +0 -17
  87. data/node_modules/jszip/CHANGES.md +0 -163
  88. data/node_modules/jszip/LICENSE.markdown +0 -651
  89. data/node_modules/jszip/README.markdown +0 -35
  90. data/node_modules/jszip/dist/jszip.js +0 -30
  91. data/node_modules/jszip/dist/jszip.min.js +0 -13
  92. data/node_modules/jszip/index.d.ts +0 -270
  93. data/node_modules/jszip/lib/base64.js +0 -106
  94. data/node_modules/jszip/lib/compressedObject.js +0 -74
  95. data/node_modules/jszip/lib/compressions.js +0 -14
  96. data/node_modules/jszip/lib/crc32.js +0 -77
  97. data/node_modules/jszip/lib/defaults.js +0 -11
  98. data/node_modules/jszip/lib/external.js +0 -19
  99. data/node_modules/jszip/lib/flate.js +0 -85
  100. data/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -540
  101. data/node_modules/jszip/lib/generate/index.js +0 -57
  102. data/node_modules/jszip/lib/index.js +0 -52
  103. data/node_modules/jszip/lib/license_header.js +0 -11
  104. data/node_modules/jszip/lib/load.js +0 -81
  105. data/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
  106. data/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
  107. data/node_modules/jszip/lib/nodejsUtils.js +0 -57
  108. data/node_modules/jszip/lib/object.js +0 -389
  109. data/node_modules/jszip/lib/readable-stream-browser.js +0 -9
  110. data/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
  111. data/node_modules/jszip/lib/reader/DataReader.js +0 -116
  112. data/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
  113. data/node_modules/jszip/lib/reader/StringReader.js +0 -38
  114. data/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
  115. data/node_modules/jszip/lib/reader/readerFor.js +0 -28
  116. data/node_modules/jszip/lib/signature.js +0 -7
  117. data/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
  118. data/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
  119. data/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
  120. data/node_modules/jszip/lib/stream/DataWorker.js +0 -116
  121. data/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
  122. data/node_modules/jszip/lib/stream/StreamHelper.js +0 -212
  123. data/node_modules/jszip/lib/support.js +0 -38
  124. data/node_modules/jszip/lib/utf8.js +0 -275
  125. data/node_modules/jszip/lib/utils.js +0 -476
  126. data/node_modules/jszip/lib/zipEntries.js +0 -262
  127. data/node_modules/jszip/lib/zipEntry.js +0 -294
  128. data/node_modules/jszip/lib/zipObject.js +0 -133
  129. data/node_modules/jszip/package.json +0 -63
  130. data/node_modules/jszip/vendor/FileSaver.js +0 -247
  131. data/node_modules/lie/README.md +0 -62
  132. data/node_modules/lie/dist/lie.js +0 -350
  133. data/node_modules/lie/dist/lie.min.js +0 -1
  134. data/node_modules/lie/dist/lie.polyfill.js +0 -358
  135. data/node_modules/lie/dist/lie.polyfill.min.js +0 -1
  136. data/node_modules/lie/lib/browser.js +0 -273
  137. data/node_modules/lie/lib/index.js +0 -298
  138. data/node_modules/lie/license.md +0 -7
  139. data/node_modules/lie/lie.d.ts +0 -244
  140. data/node_modules/lie/package.json +0 -69
  141. data/node_modules/lie/polyfill.js +0 -4
  142. data/node_modules/minimatch/LICENSE +0 -15
  143. data/node_modules/minimatch/README.md +0 -209
  144. data/node_modules/minimatch/minimatch.js +0 -923
  145. data/node_modules/minimatch/package.json +0 -30
  146. data/node_modules/once/LICENSE +0 -15
  147. data/node_modules/once/README.md +0 -79
  148. data/node_modules/once/once.js +0 -42
  149. data/node_modules/once/package.json +0 -33
  150. data/node_modules/pako/CHANGELOG.md +0 -164
  151. data/node_modules/pako/LICENSE +0 -21
  152. data/node_modules/pako/README.md +0 -191
  153. data/node_modules/pako/dist/pako.js +0 -6818
  154. data/node_modules/pako/dist/pako.min.js +0 -1
  155. data/node_modules/pako/dist/pako_deflate.js +0 -3997
  156. data/node_modules/pako/dist/pako_deflate.min.js +0 -1
  157. data/node_modules/pako/dist/pako_inflate.js +0 -3300
  158. data/node_modules/pako/dist/pako_inflate.min.js +0 -1
  159. data/node_modules/pako/index.js +0 -14
  160. data/node_modules/pako/lib/deflate.js +0 -400
  161. data/node_modules/pako/lib/inflate.js +0 -423
  162. data/node_modules/pako/lib/utils/common.js +0 -105
  163. data/node_modules/pako/lib/utils/strings.js +0 -187
  164. data/node_modules/pako/lib/zlib/README +0 -59
  165. data/node_modules/pako/lib/zlib/adler32.js +0 -51
  166. data/node_modules/pako/lib/zlib/constants.js +0 -68
  167. data/node_modules/pako/lib/zlib/crc32.js +0 -59
  168. data/node_modules/pako/lib/zlib/deflate.js +0 -1874
  169. data/node_modules/pako/lib/zlib/gzheader.js +0 -58
  170. data/node_modules/pako/lib/zlib/inffast.js +0 -345
  171. data/node_modules/pako/lib/zlib/inflate.js +0 -1556
  172. data/node_modules/pako/lib/zlib/inftrees.js +0 -343
  173. data/node_modules/pako/lib/zlib/messages.js +0 -32
  174. data/node_modules/pako/lib/zlib/trees.js +0 -1222
  175. data/node_modules/pako/lib/zlib/zstream.js +0 -47
  176. data/node_modules/pako/package.json +0 -44
  177. data/node_modules/path-is-absolute/index.js +0 -20
  178. data/node_modules/path-is-absolute/license +0 -21
  179. data/node_modules/path-is-absolute/package.json +0 -43
  180. data/node_modules/path-is-absolute/readme.md +0 -59
  181. data/node_modules/process-nextick-args/index.js +0 -45
  182. data/node_modules/process-nextick-args/license.md +0 -19
  183. data/node_modules/process-nextick-args/package.json +0 -25
  184. data/node_modules/process-nextick-args/readme.md +0 -18
  185. data/node_modules/readable-stream/.travis.yml +0 -34
  186. data/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  187. data/node_modules/readable-stream/GOVERNANCE.md +0 -136
  188. data/node_modules/readable-stream/LICENSE +0 -47
  189. data/node_modules/readable-stream/README.md +0 -58
  190. data/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  191. data/node_modules/readable-stream/duplex-browser.js +0 -1
  192. data/node_modules/readable-stream/duplex.js +0 -1
  193. data/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  194. data/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  195. data/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  196. data/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  197. data/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  198. data/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  199. data/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  200. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  201. data/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  202. data/node_modules/readable-stream/package.json +0 -52
  203. data/node_modules/readable-stream/passthrough.js +0 -1
  204. data/node_modules/readable-stream/readable-browser.js +0 -7
  205. data/node_modules/readable-stream/readable.js +0 -19
  206. data/node_modules/readable-stream/transform.js +0 -1
  207. data/node_modules/readable-stream/writable-browser.js +0 -1
  208. data/node_modules/readable-stream/writable.js +0 -8
  209. data/node_modules/rimraf/LICENSE +0 -15
  210. data/node_modules/rimraf/README.md +0 -101
  211. data/node_modules/rimraf/bin.js +0 -50
  212. data/node_modules/rimraf/package.json +0 -29
  213. data/node_modules/rimraf/rimraf.js +0 -372
  214. data/node_modules/safe-buffer/LICENSE +0 -21
  215. data/node_modules/safe-buffer/README.md +0 -584
  216. data/node_modules/safe-buffer/index.d.ts +0 -187
  217. data/node_modules/safe-buffer/index.js +0 -62
  218. data/node_modules/safe-buffer/package.json +0 -37
  219. data/node_modules/selenium-webdriver/CHANGES.md +0 -1114
  220. data/node_modules/selenium-webdriver/LICENSE +0 -202
  221. data/node_modules/selenium-webdriver/NOTICE +0 -2
  222. data/node_modules/selenium-webdriver/README.md +0 -229
  223. data/node_modules/selenium-webdriver/chrome.js +0 -295
  224. data/node_modules/selenium-webdriver/chromium.js +0 -829
  225. data/node_modules/selenium-webdriver/devtools/CDPConnection.js +0 -35
  226. data/node_modules/selenium-webdriver/edge.js +0 -224
  227. data/node_modules/selenium-webdriver/example/chrome_android.js +0 -45
  228. data/node_modules/selenium-webdriver/example/chrome_mobile_emulation.js +0 -46
  229. data/node_modules/selenium-webdriver/example/firefox_channels.js +0 -84
  230. data/node_modules/selenium-webdriver/example/google_search.js +0 -50
  231. data/node_modules/selenium-webdriver/example/google_search_test.js +0 -70
  232. data/node_modules/selenium-webdriver/example/headless.js +0 -63
  233. data/node_modules/selenium-webdriver/example/logging.js +0 -64
  234. data/node_modules/selenium-webdriver/firefox.js +0 -789
  235. data/node_modules/selenium-webdriver/http/index.js +0 -324
  236. data/node_modules/selenium-webdriver/http/util.js +0 -172
  237. data/node_modules/selenium-webdriver/ie.js +0 -503
  238. data/node_modules/selenium-webdriver/index.js +0 -825
  239. data/node_modules/selenium-webdriver/io/exec.js +0 -162
  240. data/node_modules/selenium-webdriver/io/index.js +0 -348
  241. data/node_modules/selenium-webdriver/io/zip.js +0 -223
  242. data/node_modules/selenium-webdriver/lib/atoms/find-elements.js +0 -123
  243. data/node_modules/selenium-webdriver/lib/atoms/get-attribute.js +0 -101
  244. data/node_modules/selenium-webdriver/lib/atoms/is-displayed.js +0 -101
  245. data/node_modules/selenium-webdriver/lib/atoms/mutation-listener.js +0 -55
  246. data/node_modules/selenium-webdriver/lib/by.js +0 -415
  247. data/node_modules/selenium-webdriver/lib/capabilities.js +0 -553
  248. data/node_modules/selenium-webdriver/lib/command.js +0 -206
  249. data/node_modules/selenium-webdriver/lib/error.js +0 -605
  250. data/node_modules/selenium-webdriver/lib/http.js +0 -704
  251. data/node_modules/selenium-webdriver/lib/input.js +0 -946
  252. data/node_modules/selenium-webdriver/lib/logging.js +0 -661
  253. data/node_modules/selenium-webdriver/lib/promise.js +0 -285
  254. data/node_modules/selenium-webdriver/lib/proxy.js +0 -212
  255. data/node_modules/selenium-webdriver/lib/session.js +0 -77
  256. data/node_modules/selenium-webdriver/lib/symbols.js +0 -37
  257. data/node_modules/selenium-webdriver/lib/until.js +0 -429
  258. data/node_modules/selenium-webdriver/lib/webdriver.js +0 -2919
  259. data/node_modules/selenium-webdriver/net/index.js +0 -107
  260. data/node_modules/selenium-webdriver/net/portprober.js +0 -75
  261. data/node_modules/selenium-webdriver/opera.js +0 -406
  262. data/node_modules/selenium-webdriver/package.json +0 -54
  263. data/node_modules/selenium-webdriver/proxy.js +0 -32
  264. data/node_modules/selenium-webdriver/remote/index.js +0 -624
  265. data/node_modules/selenium-webdriver/safari.js +0 -168
  266. data/node_modules/selenium-webdriver/testing/index.js +0 -504
  267. data/node_modules/set-immediate-shim/index.js +0 -7
  268. data/node_modules/set-immediate-shim/package.json +0 -34
  269. data/node_modules/set-immediate-shim/readme.md +0 -31
  270. data/node_modules/string_decoder/.travis.yml +0 -50
  271. data/node_modules/string_decoder/LICENSE +0 -48
  272. data/node_modules/string_decoder/README.md +0 -47
  273. data/node_modules/string_decoder/lib/string_decoder.js +0 -296
  274. data/node_modules/string_decoder/package.json +0 -31
  275. data/node_modules/tmp/CHANGELOG.md +0 -288
  276. data/node_modules/tmp/LICENSE +0 -21
  277. data/node_modules/tmp/README.md +0 -365
  278. data/node_modules/tmp/lib/tmp.js +0 -780
  279. data/node_modules/tmp/node_modules/.bin/rimraf +0 -1
  280. data/node_modules/tmp/node_modules/rimraf/CHANGELOG.md +0 -65
  281. data/node_modules/tmp/node_modules/rimraf/LICENSE +0 -15
  282. data/node_modules/tmp/node_modules/rimraf/README.md +0 -101
  283. data/node_modules/tmp/node_modules/rimraf/bin.js +0 -68
  284. data/node_modules/tmp/node_modules/rimraf/package.json +0 -32
  285. data/node_modules/tmp/node_modules/rimraf/rimraf.js +0 -360
  286. data/node_modules/tmp/package.json +0 -58
  287. data/node_modules/util-deprecate/History.md +0 -16
  288. data/node_modules/util-deprecate/LICENSE +0 -24
  289. data/node_modules/util-deprecate/README.md +0 -53
  290. data/node_modules/util-deprecate/browser.js +0 -67
  291. data/node_modules/util-deprecate/node.js +0 -6
  292. data/node_modules/util-deprecate/package.json +0 -27
  293. data/node_modules/wrappy/LICENSE +0 -15
  294. data/node_modules/wrappy/README.md +0 -36
  295. data/node_modules/wrappy/package.json +0 -29
  296. data/node_modules/wrappy/wrappy.js +0 -33
  297. data/node_modules/ws/LICENSE +0 -21
  298. data/node_modules/ws/README.md +0 -496
  299. data/node_modules/ws/browser.js +0 -8
  300. data/node_modules/ws/index.js +0 -10
  301. data/node_modules/ws/lib/buffer-util.js +0 -129
  302. data/node_modules/ws/lib/constants.js +0 -10
  303. data/node_modules/ws/lib/event-target.js +0 -184
  304. data/node_modules/ws/lib/extension.js +0 -223
  305. data/node_modules/ws/lib/limiter.js +0 -55
  306. data/node_modules/ws/lib/permessage-deflate.js +0 -517
  307. data/node_modules/ws/lib/receiver.js +0 -507
  308. data/node_modules/ws/lib/sender.js +0 -405
  309. data/node_modules/ws/lib/stream.js +0 -165
  310. data/node_modules/ws/lib/validation.js +0 -104
  311. data/node_modules/ws/lib/websocket-server.js +0 -418
  312. data/node_modules/ws/lib/websocket.js +0 -942
  313. data/node_modules/ws/package.json +0 -56
  314. data/package-lock.json +0 -458
  315. data/package.json +0 -5
  316. data/selenium.log +0 -1
  317. data/spec.md +0 -6
  318. data/test.data +0 -2110
@@ -1,1114 +0,0 @@
1
- ## v4.0.0-beta.3
2
-
3
- * Removed support for legacy actions.
4
- This will also remove "Bride Mode" support, which was introduced to translate of action class to legacy API.
5
- * Remove devtools support for v86,v87 and adding support for v89, v90, v91
6
- * make isPromise() return boolean value for null and undefined cases (#6785)
7
- * code cleanup (#9158)
8
- * replacing asserts equal with strictEqual and deepEqual with deepStrictEqual
9
-
10
-
11
- ## v4.0.0-beta.2
12
-
13
- * Removed support for Edge legacy.
14
- * Make the build silent for WebDriver Bidi generated code
15
- * resolve file path correctly (#9223)
16
- * Update example in edge.js (#9231)
17
- * Use a flat namespace for selenium options for finding WebDriver Bidi endpoint
18
- * Removing duplicate license text updated by update_copyright.js
19
- * Updating copyright text
20
- * Minor code cleanup
21
- * Removing duplicate variable declaration of IE from capabilities
22
-
23
- ## v4.0.0-beta.1
24
-
25
- * JS Binding support for WebDriver Bidi in Firefox
26
- - This requires Firefox 87 and Geckodriver 0.29 to be able to work
27
- * Update the supported CDP versions
28
- * Update tmp package version (#9155)
29
- * Adding support for /computedlabel (getAccessibleName) (#9073)
30
- * Adding support for computedrole (#8990)
31
- * Use subfolder for NPM package homepage (#8938)
32
- * Fix typo: tracingCategories -> traceCategories (#8976)
33
- * Package up mutation-listener for node. Fixes #8955
34
- * Adding support for `print` endpoint (#8880)
35
-
36
- ## v4.0.0-alpha.8
37
-
38
- * Rolling back native support for Opera Browser
39
- * Added new ieOptions capabilities:
40
- - fileUploadDialogTimeout
41
- - setEdgePath
42
- - setEdgeChromium
43
- - setScrollBehavior
44
- - For consistent naming, deprecating `addArguments(...args)` in favor of `addBrowserCommandSwitches(...args)`
45
-
46
- * Added relative locators
47
- * Added Chrome DevTools Protocol (CDP) support
48
- * Added support for BASIC authentication.
49
- * Added listener for DOM mutations.
50
- * Added support for listening out for console log events.
51
- * Added support listening js exceptions using CDP
52
-
53
- ### API Changes
54
-
55
- * Added the 'opera' module
56
-
57
- ## v4.0.0-alpha.4
58
-
59
- ### Changes
60
-
61
- * Removed BUILD.bazel files from the build artifact
62
-
63
-
64
- ## v4.0.0-alpha.3
65
-
66
- ### Notice
67
-
68
- * The minimum supported version of Node is now 10.15.0 LTS
69
-
70
- ### Changes
71
-
72
- * add `pollTimeout` argument to the `wait()` method. Default value is `200`ms
73
- * add `switchTo().parentFrame()` for non-W3C compatible drivers
74
- * add support for opening a new window
75
-
76
- ### API Changes
77
-
78
- * Export `lib/input.Origin` from the top level `selenium-webdriver` module.
79
- * HTTP requests from this library will now include a User-Agent of the form
80
- `selenium/${VERSION} (js ${PLATFORM})`.
81
-
82
-
83
- ## v4.0.0-alpha.1
84
-
85
- ### Notice
86
-
87
- * The minimum supported version of Node is now 8.9.0 LTS
88
-
89
- ### Changes to Supported Browsers
90
-
91
- Native support has been removed for Opera and PhantomJS as the WebDriver
92
- implementations for these browsers are no longer under active development.
93
-
94
- For Opera, users should be able to simply rely on testing Chrome as the Opera
95
- browser is based on Chromium (and the operadriver was a thin wrapper around
96
- chromedriver). For PhantomJS, users should use Chrome or Firefox in headless
97
- mode (see `example/headless.js`)
98
-
99
- ### Changes for W3C WebDriver Spec Compliance
100
-
101
- * Revamped the actions API to conform with the WebDriver Spec:
102
- <https://www.w3.org/TR/webdriver/#actions>. For details, refer to the JS doc
103
- on the `lib/input.Actions` class.
104
-
105
- As of January, 2018, only Firefox natively supports this new API. You can
106
- put the `Actions` class into "bridge mode" and it will attempt to translate
107
- mouse and keyboard actions to the legacy API (see class docs). Alternatively,
108
- you may continue to use the legacy API directly via the `lib/actions` module.
109
- __NOTE:__ The legacy API is considered strongly deprecated and will be
110
- removed in a minor release once Google's Chrome and Microsoft's Edge browsers
111
- support the new API.
112
-
113
- * All window manipulation commands are now supported.
114
- * Added `driver.switchTo().parentFrame()`
115
- * When a named cookie is requested, attempt to fetch it directly using the
116
- W3C endpoint, `GET /session/{session id}/cookie/{name}`. If this command is
117
- not recognized by the remote end, fallback to fetching all cookies and then
118
- searching for the desired name.
119
- * Replaced `WebElement.getSize()` and `WebElement.getLocation()` with a single
120
- method, `WebElement.getRect()`.
121
-
122
- ### API Changes
123
-
124
- * The core WebDriver API no longer uses promise manager
125
- - Removed `index.Builder#setControlFlow()`
126
- - The following thenable types no longer have a `cancel()` method:
127
- - The dynamically generated thenable WebDrivers created by `index.Builder`
128
- - `lib/webdriver.AlertPromise`
129
- - `lib/webdriver.WebElementPromise`
130
- * Removed `remote/index.DriverService.prototype.stop()` (use `#kill()` instead)
131
- * Removed the `lib/actions` module
132
- * Removed the `lib/events` module
133
- * Removed the `phantomjs` module
134
- * Removed the 'opera' module
135
- * Removed the promise manager from `lib/promise`, which includes the removal
136
- of the following exported names (replacements, if any, in parentheses):
137
- - CancellableThenable
138
- - CancellationError
139
- - ControlFlow
140
- - Deferred
141
- - LONG_STACK_TRACES
142
- - MultipleUnhandledRejectionError
143
- - Promise (use native Promises)
144
- - Resolver
145
- - Scheduler
146
- - Thenable
147
- - USE_PROMISE_MANAGER
148
- - all (use Promise.all)
149
- - asap (use Promise.resolve)
150
- - captureStackTrace (use Error.captureStackTrace)
151
- - consume (use async functions)
152
- - controlFlow
153
- - createPromise (use new Promise)
154
- - defer
155
- - fulfilled (use Promise.resolve)
156
- - isGenerator
157
- - rejected (use Promise.reject)
158
- - setDefaultFlow
159
- - when (use Promise.resolve)
160
- * Changes to the `Builder` class:
161
- - Added setChromeService, setEdgeService, & setFirefoxService
162
- - Removed setEnableNativeEvents
163
- - Removed setScrollBehavior
164
- * Changes to `chrome.Driver`
165
- - Added sendDevToolsCommand
166
- - Added setDownloadPath
167
- * Changes to `chrome.Options`
168
- - Now extends the `Capabilities` class
169
- - Removed from/toCapabilities
170
- * Changes to `edge.Options`
171
- - Now extends the `Capabilities` class
172
- - Removed from/toCapabilities
173
- * Changes to `ie.Options`
174
- - Now extends the `Capabilities` class
175
- - Removed from/toCapabilities
176
- * Removed the `firefox.Binary` class. Custom binaries can still be selected
177
- using `firefox.Options#setBinary()`. Likewise, custom binary arguments can be
178
- specified with `firefox.Options#addArguments()`.
179
- * Changes to `firefox.Driver`
180
- - Added installAddon(path)
181
- - Added uninstallAddon(id)
182
- * Changes to `firefox.Options`
183
- - Now extends the `Capabilities` class
184
- - Removed from/toCapabilities
185
- - Removed setLoggingPreferences (was a no-op)
186
- - setProfile now only accepts a path to an existing profile
187
- - Added addExtensions
188
- - Added setPreference
189
- * Removed the `firefox.Profile` class. All of its functionality is now
190
- provided directly by `firefox.Options`
191
- * Removed the `firefox/binary` module
192
- * Removed the `firefox/profile` module
193
- * Changes to `safari.Options`
194
- - Now extends the `Capabilities` class
195
- - Removed from/toCapabilities
196
- - Removed setCleanSession (was a no-op)
197
- * Changes to `lib/capabilities.Browser`:
198
- - Removed several enum values.
199
- - ANDROID (use Chrome for Android; see docs on the chrome module)
200
- - IPAD (no support available)
201
- - IPHONE (no support available)
202
- - OPERA (use Chrome)
203
- - PHANTOM_JS (use Chrome or Firefox in headless mode)
204
- - HTMLUNIT (use Chrome or Firefox in headless mode)
205
- * Changes to `lib/capabilities.Capabilities`:
206
- - Removed static factory methods android(), ipad(), iphone(), opera(),
207
- phantomjs(), htmlunit(), and htmlunitwithjs(). Users can still manually
208
- configure capabilities for these, but their use is not recommended and
209
- they will no longer be surfaced in the API.
210
- * Changes to `lib/error`:
211
- - Added
212
- - ElementClickInterceptedError
213
- - InsecureCertificateError
214
- - InvalidCoordinatesError
215
- - NoSuchCookieError
216
- - Removed
217
- - ElementNotVisibleError
218
- - InvalidElementCoordinatesError
219
- * Changes to `lib/webdriver.WebDriver`:
220
- - Dropped support for "requiredCapabilities" from WebDriver.createSession
221
- - actions() now returns the new `lib/input.Actions` class
222
- - Removed touchActions
223
- - Renamed schedule to execute
224
- - Removed the `WebDriver.attachToSession()` factory method. Users can just
225
- the `WebDriver` constructor directly instead.
226
- - Removed the `call()` method. This was used to inject custom function calls
227
- into the control flow. Now that the promise manager is no longer used,
228
- this method is no longer necessary. Users are now responsible for
229
- coordinating actions (ideally with async functions) and can just call
230
- functions directly instead of through `driver.call()`.
231
- * Changes to `lib/webdriver.WebElement`:
232
- - Replaced getSize & getLocation with getRect
233
- * Changes to `lib/webdriver.Alert`:
234
- - Removed authenticateAs
235
- * Changes to `lib/webdriver.Options` (`driver.manage()`):
236
- - Removed timeouts (use get/setTimeouts)
237
- * Changes to `lib/webdriver.Window` (`driver.manage().window()`):
238
- - Added
239
- - getRect
240
- - setRect
241
- - fullscreen
242
- - minimize
243
- - Removed (use the getRect/setRect methods)
244
- - getPosition
245
- - setPosition
246
- - getSize
247
- - setSize
248
- * Removed the `testing/assert` module
249
- * Changes to `testing/index`
250
- - Since the promise manager has been removed, it is no longer necessary to
251
- wrap the Mocha test hooks; instead, users can simply use async functions.
252
- The following have all been removed:
253
- - describe
254
- - before
255
- - beforeEach
256
- - after
257
- - afterEach
258
- - it
259
- - Added the `suite` function. For details, refer to the jsdoc or
260
- `example/google_search_test.js`
261
-
262
-
263
-
264
- ## v3.6.0
265
-
266
- ### Bug Fixes
267
-
268
- * The Capabilities factory methods should only specify the name of the browser.
269
- * Protect against the remote end sometimes not returning a list to findElements
270
- commands.
271
- * Properly reset state in `remote.DriverService#kill()`
272
- * The firefox module will no longer apply the preferences required by the legacy
273
- FirefoxDriver. These preferences were only required when using the legacy
274
- driver, support for which was dropped in v3.5.0.
275
-
276
- ### API Changes
277
-
278
- * Added new methods to `selenium-webdriver/firefox.Options`:
279
- - addArguments()
280
- - headless()
281
- - windowSize()
282
- * Deprecated `selenium-webdriver/firefox/binary.Binary`
283
- * Removed `selenium-webdriver/firefox.Options#useGeckoDriver()`
284
- * Removed the unused `selenium-webdriver/firefox/profile.decode()`
285
- * Removed methods from `selenium-webdriver/firefox/profile.Profile` that had
286
- no effect since support for the legacy FirefoxDriver was dropped in 3.5.0:
287
- - setNativeEventsEnabled
288
- - nativeEventsEnabled
289
- - getPort
290
- - setPort
291
- * Removed `selenium-webdriver/firefox.ServiceBuilder#setFirefoxBinary()`; custom
292
- binaries should be configured through the `firefox.Options` class.
293
- * Removed `selenium-webdriver/firefox.Capability`. These hold overs from the
294
- legacy FirefoxDriver are no longer supported.
295
-
296
- ### Changes for W3C WebDriver Spec Compliance
297
-
298
- * Deprecated `error.ElementNotVisibleError` in favor of the more generic
299
- `error.ElementNotInteractableError`.
300
- * Support the `httpOnly` option when adding a cookie.
301
-
302
-
303
- ## v3.5.0
304
-
305
- ### Notice
306
-
307
- Native support for Firefox 45 (ESR) has been removed. Users will have to connect
308
- to a remote Selenium server that supports Firefox 45.
309
-
310
- ### Changes
311
-
312
- * Removed native support for Firefox 46 and older.
313
- - The `SELENIUM_MARIONETTE` enviornment variable no longer has an effect.
314
- - `selenium-webdriver/firefox.Capability.MARIONETTE` is deprecated.
315
- - `selenium-webdriver/firefox.Options#useGeckoDriver()` is deprecated and now a no-op.
316
- * `firefox.Options` will no longer discard the `"moz:firefoxOptions"` set in
317
- user provided capabilities (via `Builder.withCapabilities({})`). When both
318
- are used, the settings in `firefox.Options` will be applied _last_.
319
- * Added `chrome.Options#headless()` and `chrome.Options#windowSize()`, which
320
- may be used to start Chrome in headless mode (requires Chrome 59+) and to set
321
- the initial window size, respectively.
322
-
323
-
324
- ### Changes for W3C WebDriver Spec Compliance
325
-
326
- * Added `error.WebDriverError#remoteStacktrace` to capture the stacktrace
327
- reported by a remote WebDriver endpoint (if any).
328
- * Fixed `WebElement#sendKeys` to send text as a string instead of an array of
329
- strings.
330
-
331
- ## v3.4.0
332
-
333
- ### Notice
334
-
335
- This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodriver/releases/tag/v0.15.0) or newer.
336
-
337
- ### API Changes
338
-
339
- * Added `Options#getTimeouts()` for retrieving the currently configured session
340
- timeouts (i.e. implicit wait). This method will only work with W3C compatible
341
- WebDriver implementations.
342
- * Deprecated the `Timeouts` class in favor of `Options#setTimeouts()`, which
343
- supports setting multiple timeouts at once.
344
- * Added support for emulating different network conditions (e.g., offline, 2G, WiFi) on Chrome.
345
-
346
- ### Changes for W3C WebDriver Spec Compliance
347
-
348
- * Fixed W3C response parsing, which expects response data to always be a JSON
349
- object with a `value` key.
350
- * Added W3C endpoints for interacting with various types of
351
- [user prompts](https://w3c.github.io/webdriver/webdriver-spec.html#user-prompts).
352
- * Added W3C endpoints for remotely executing scripts.
353
- * Added W3C endpoints to get current window handle and all windows handles.
354
-
355
-
356
- ## v3.3.0
357
-
358
- * Added warning log messages when the user creates new managed promises, or
359
- schedules unchained tasks. Users may opt in to printing these log messages
360
- with
361
-
362
- ```js
363
- const {logging} = require('selenium-webdriver');
364
- logging.installConsoleHandler();
365
- logging.getLogger('promise.ControlFlow').setLevel(logging.Level.WARNING);
366
- ```
367
- * If the `JAVA_HOME` environment variable is set, use it to locate java.exe.
368
-
369
-
370
- ## v3.2.0
371
-
372
- * Release skipped to stay in sync with the main Selenium project.
373
-
374
-
375
- ## v3.1.0
376
-
377
- * The `lib` package is once again platform agnostic (excluding `lib/devmode`).
378
- * Deprecated `promise.when(value, callback, errback)`.
379
- Use `promise.fulfilled(value).then(callback, errback)`
380
- * Changed `promise.fulfilled(value)`, `promise.rejected(reason)` and
381
- `promise.defer()` to all use native promises when the promise manager is
382
- disabled.
383
- * Properly handle W3C error responses to new session commands.
384
- * Updated `selenium-webdriver/testing` to export `describe.only` along with
385
- `describe.skip`.
386
- * Fixed `selenium-webdriver/lib/until.ableToSwitchToFrame`. It was previously
387
- dropping arguments and would never work.
388
- * Added the ability to use Firefox Nightly
389
- * If Firefox cannot be found in the default location, look for it on the PATH
390
- * Allow SafariDriver to use Safari Technology Preview.
391
- * Use the proper wire command for WebElement.getLocation() and
392
- WebElement.getSize() for W3C compliant drivers.
393
-
394
-
395
- ## v3.0.1
396
-
397
- * More API adjustments to align with native Promises
398
- - Deprecated `promise.fulfilled(value)`, use `promise.Promise#resolve(value)`
399
- - Deprecated `promise.rejected(reason)`, use `promise.Promise#reject(reason)`
400
- * When a `wait()` condition times out, the returned promise will now be
401
- rejected with an `error.TimeoutError` instead of a generic `Error` object.
402
- * `WebDriver#wait()` will now throw a TypeError if an invalid wait condition is
403
- provided.
404
- * Properly catch unhandled promise rejections with an action sequence (only
405
- impacts when the promise manager is disabled).
406
-
407
-
408
- ## v3.0.0
409
-
410
- * (__NOTICE__) The minimum supported version of Node is now 6.9.0 LTS
411
- * Removed support for the SafariDriver browser extension. This has been
412
- replaced by Apple's safaridriver, which is included wtih Safari 10
413
- (available on OS X El Capitan and macOS Sierra).
414
-
415
- To use Safari 9 or older, users will have to use an older version of Selenium.
416
-
417
- * geckodriver v0.11.0 or newer is now required for Firefox.
418
- * Fixed potential reference errors in `selenium-webdriver/testing` when users
419
- create a cycle with mocha by running with mocha's `--hook` flag.
420
- * Fixed `WebDriver.switchTo().activeElement()` to use the correct HTTP method
421
- for compatibility with the W3C spec.
422
- * Update the `selenium-webdriver/firefox` module to use geckodriver's
423
- "moz:firefoxOptions" dictionary for Firefox-specific configuration values.
424
- * Extending the `selenium-webdriver/testing` module to support tests defined
425
- using generator functions.
426
- * The promise manager can be disabled by setting an enviornment variable:
427
- `SELENIUM_PROMISE_MANAGER=0`. This is part of a larger plan to remove the
428
- promise manager, as documented at
429
- <https://github.com/SeleniumHQ/selenium/issues/2969>
430
- * When communicating with a W3C-compliant remote end, use the atoms library for
431
- the `WebElement.getAttribute()` and `WebElement.isDisplayed()` commands. This
432
- behavior is consistent with the java, .net, python, and ruby clients.
433
-
434
-
435
- ### API Changes
436
-
437
- * Removed `safari.Options#useLegacyDriver()`
438
- * Reduced the API on `promise.Thenable` for compatibility with native promises:
439
- - Removed `#isPending()`
440
- - Removed `#cancel()`
441
- - Removed `#finally()`
442
- * Changed all subclasses of `webdriver.WebDriver` to overload the static
443
- function `WebDriver.createSession()` instead of doing work in the
444
- constructor. All constructors now inherit the base class' function signature.
445
- Users are still encouraged to use the `Builder` class instead of creating
446
- drivers directly.
447
- * `Builder#build()` now returns a "thenable" WebDriver instance, allowing users
448
- to immediately schedule commands (as before), or issue them through standard
449
- promise callbacks. This is the same pattern already employed for WebElements.
450
- * Removed `Builder#buildAsync()` as it was redundant with the new semantics of
451
- `build()`.
452
-
453
-
454
-
455
- ## v3.0.0-beta-3
456
-
457
- * Fixed a bug where the promise manager would silently drop callbacks after
458
- recovering from an unhandled promise rejection.
459
- * Added the `firefox.ServiceBuilder` class, which may be used to customize the
460
- geckodriver used for `firefox.Driver` instances.
461
- * Added support for Safari 10 safaridriver. safaridriver may be disabled
462
- via tha API, `safari.Options#useLegacyDriver`, to use the safari
463
- extension driver.
464
- * Updated the `lib/proxy` module to support configuring a SOCKS proxy.
465
- * For the `promise.ControlFlow`, fire the "uncaughtException" event in a new
466
- turn of the JS event loop. As a result of this change, any errors thrown by
467
- an event listener will propagate to the global error handler. Previously,
468
- this event was fired with in the context of a (native) promise callback,
469
- causing errors to be silently suppressed in the promise chain.
470
-
471
- ### API Changes
472
-
473
- * Added `remote.DriverService.Builder` as a base class for configuring
474
- DriverService instances that run in a child-process. The
475
- `chrome.ServiceBuilder`, `edge.ServiceBuilder`, and `opera.ServiceBuilder`
476
- classes now all extend this base class with browser-specific options.
477
- * For each of the ServiceBuilder clases, renamed `usingPort` and
478
- `withEnvironment` to `setPort` and `setEnvironment`, respectively.
479
- * Renamed `chrome.ServiceBuilder#setUrlBasePath` to `#setPath`
480
- * Changed the signature of the `firefox.Driver` from `(config, flow, executor)`
481
- to `(config, executor, flow)`.
482
- * Exposed the `Condition` and `WebElementCondition` classes from the top-level
483
- `selenium-webdriver` module (these were previously only available from
484
- `lib/webdriver`).
485
-
486
-
487
- ### Changes for W3C WebDriver Spec Compliance
488
-
489
- * Updated command mappings for [getting](https://w3c.github.io/webdriver/webdriver-spec.html#get-window-position)
490
- and [setting](https://w3c.github.io/webdriver/webdriver-spec.html#set-window-position)
491
- the window position.
492
-
493
-
494
- ## v3.0.0-beta-2
495
-
496
- ### API Changes
497
-
498
- * Moved the `builder.Builder` class into the main module (`selenium-webdriver`).
499
- * Removed the `builder` module.
500
- * Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a
501
- remote machine.
502
-
503
-
504
- ## v3.0.0-beta-1
505
-
506
- * Allow users to set the agent used for HTTP connections through
507
- `builder.Builder#usingHttpAgent()`
508
- * Added new wait conditions: `until.urlIs()`, `until.urlContains()`,
509
- `until.urlMatches()`
510
- * Added work around for [GeckoDriver bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1274924)
511
- raising a type conversion error
512
- * Internal cleanup replacing uses of managed promises with native promises
513
- * Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
514
- * Fixed timeouts' URL
515
- * Properly send HTTP requests when using a WebDriver server proxy
516
- * Properly configure proxies when using the geckodriver
517
- * `http.Executor` now accepts a promised client. The `builder.Builder` class
518
- will now use this instead of a `command.DeferredExecutor` when creating
519
- WebDriver instances.
520
- * For Chrome and Firefox, the `builder.Builder` class will always return an
521
- instanceof `chrome.Driver` and `firefox.Driver`, respectively, even when
522
- configured to use a remote server (from `builder.Builder#usingServer(url)`,
523
- `SELENIUM_REMOTE_URL`, etc).
524
-
525
- ### API Changes
526
-
527
- * `promise.Deferred` is no longer a thenable object.
528
- * `Options#addCookie()` now takes a record object instead of 7 individual
529
- parameters. A TypeError will be thrown if addCookie() is called with invalid
530
- arguments.
531
- * When adding cookies, the desired expiry must be provided as a Date or in
532
- _seconds_ since epoch. When retrieving cookies, the expiration is always
533
- returned in seconds.
534
- * Renamed `firefox.Options#useMarionette` to `firefox.Options#useGeckoDriver`
535
- * Removed deprecated modules:
536
- - `selenium-webdriver/error` (use `selenium-webdriver/lib/error`,\
537
- or the `error` property exported by `selenium-webdriver`)
538
- - `selenium-webdriver/executors` — this was not previously deprecated, but
539
- is no longer used.
540
- * Removed deprecated types:
541
- - `command.DeferredExecutor` — this was not previously deprecated, but is no
542
- longer used. It can be trivially implemented by clients should it be
543
- needed.
544
- - `error.InvalidSessionIdError` (use `error.NoSuchSessionError`)
545
- - `executors.DeferredExecutor`
546
- - `until.Condition` (use `webdriver.Condition`)
547
- - `until.WebElementCondition` (use `webdriver.WebElementCondition`)
548
- - `webdriver.UnhandledAlertError` (use `error.UnexpectedAlertOpenError`)
549
- * Removed deprecated functions:
550
- - `Deferred#cancel()`
551
- - `Deferred#catch()`
552
- - `Deferred#finally()`
553
- - `Deferred#isPending()`
554
- - `Deferred#then()`
555
- - `Promise#thenCatch()`
556
- - `Promise#thenFinally()`
557
- - `WebDriver#isElementPresent()`
558
- - `WebElement#getInnerHtml()`
559
- - `WebElement#getOuterHtml()`
560
- - `WebElement#getRawId()`
561
- - `WebElement#isElementPresent()`
562
- * Removed deprecated properties:
563
- - `WebDriverError#code`
564
-
565
-
566
- ## v2.53.2
567
-
568
- * Changed `io.exists()` to return a rejected promise if the input path is not
569
- a string
570
- * Deprecated `Promise#thenFinally()` - use `Promise#finally()`. The thenFinally
571
- shim added to the promise module in v2.53.0 will be removed in v3.0
572
- Sorry for the churn!
573
- * FIXED: capabilities serialization now properly handles undefined vs.
574
- false-like values.
575
- * FIXED: properly handle responses from the remote end in
576
- `WebDriver.attachToSession`
577
-
578
- ## v2.53.1
579
-
580
- * FIXED: for consistency with the other language bindings, `remote.FileDetector`
581
- will ignore paths that refer to a directory.
582
-
583
- ## v2.53.0
584
-
585
- ### Change Summary
586
-
587
- * Added preliminary support for Marionette, Mozilla's WebDriver implementation
588
- for Firefox. Marionette may be enabled via the API,
589
- `firefox.Options#useMarionette`, or by setting the `SELENIUM_MARIONETTE`
590
- environment variable.
591
- * Moved all logic for parsing and interpreting responses from the remote end
592
- into the individual `command.Executor` implementations.
593
- * For consistency with the other Selenium language bindings,
594
- `WebDriver#isElementPresent()` and `WebElement#isElementPresent()` have
595
- been deprecated. These methods will be removed in v3.0. Use the findElements
596
- command to test for the presence of an element:
597
-
598
- driver.findElements(By.css('.foo')).then(found => !!found.length);
599
- * Added support for W3C-spec compliant servers.
600
- * For consistent naming, deprecating `error.InvalidSessionIdError` in favor of
601
- `error.NoSuchSessionError`.
602
- * Moved the `error` module to `lib/error` so all core modules are co-located.
603
- The top-level `error` module will be removed in v3.0.
604
- * Moved `until.Condition` and `until.WebElementCondition` to the webdriver
605
- module to break a circular dependency.
606
- * Added support for setting the username and password in basic auth pop-up
607
- dialogs (currently IE only).
608
- * Deprecated `WebElement#getInnerHtml()` and `WebEleemnt#getOuterHtml()`
609
- * Deprecated `Promise#thenCatch()` - use `Promise#catch()` instead
610
- * Deprecated `Promise#thenFinally()` - use `promise.thenFinally()` instead
611
- * FIXED: `io.findInPath()` will no longer match against directories that have
612
- the same basename as the target file.
613
- * FIXED: `phantomjs.Driver` now takes a third argument that defines the path to
614
- a log file to use for the phantomjs executable's output. This may be quickly
615
- set at runtime with the `SELENIUM_PHANTOMJS_LOG` environment variable.
616
-
617
- ### Changes for W3C WebDriver Spec Compliance
618
-
619
- * Changed `element.sendKeys(...)` to send the key sequence as an array where
620
- each element defines a single key. The legacy wire protocol permits arrays
621
- where each element is a string of arbitrary length. This change is solely
622
- at the protocol level and should have no user-visible effect.
623
-
624
-
625
- ## v2.52.0
626
-
627
- ### Notice
628
-
629
- Starting with v2.52.0, each release of selenium-webdriver will support the
630
- latest _minor_ LTS and stable Node releases. All releases between the LTS and
631
- stable release will have best effort support. Further details are available in
632
- the selenium-webdriver package README.
633
-
634
- ### Change Summary
635
-
636
- * Add support for Microsoft's Edge web browser
637
- * Added `webdriver.Builder#buildAsync()`, which returns a promise that will be
638
- fulfilled with the newly created WebDriver instance once the associated
639
- browser has been full initialized. This is purely a convenient alternative
640
- to the existing build() method as the WebDriver class will always defer
641
- commands until it has a fully created browser.
642
- * Added `firefox.Profile#setHost()` which may be used to set the host that
643
- the FirefoxDriver's server listens for commands on. The server uses
644
- "localhost" by default.
645
- * Added `promise.Promise#catch()` for API compatibility with native Promises.
646
- `promise.Promise#thenCatch()` is not yet deprecated, but it simply
647
- delegates to `catch`.
648
- * Changed some `io` operations to use native promises.
649
- * Changed `command.Executor#execute()` and `HttpClient#send()` to return
650
- promises instead of using callback passing.
651
- * Replaced the `Serializable` class with an internal, Symbol-defined method.
652
- * Changed the `Capabilities` class to extend the native `Map` type.
653
- * Changed the `Capabilities.has(key)` to only test if a capability has been set
654
- (Map semantics). To check whether the value is true, use `get(key)`.
655
- * Deprecated `executors.DeferredExecutor` in favor of
656
- `lib/command.DeferredExecutor`.
657
- * API documentation is no longer distributed with the npm package, but remains
658
- available at <http://seleniumhq.github.io/selenium/docs/api/javascript/>
659
- * Rewrote the `error` module to export an Error subtype for each type of error
660
- defined in the [W3C WebDriver spec](https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors).
661
- * Changed the `http.Request` and `http.Response` classes to store headers in
662
- maps instead of object literals.
663
- * Updated `ws` dependency to version `1.0.1`.
664
- * Removed fluent predicates "is" and "not" from the experimental
665
- `testing/assert` module.
666
- * Wait conditions that locate an element, or that wait on an element's state,
667
- will return a WebElementPromise.
668
- * Lots of internal clean-up to break selenium-webdriver's long standing
669
- dependency on Google's Closure library.
670
-
671
- ### Changes for W3C WebDriver Spec Compliance
672
-
673
- * Updated the `By` locators that are not in the W3C spec to delegated to using
674
- CSS selectors: `By.className`, `By.id`, `By.name`, and `By.tagName`.
675
-
676
-
677
- ## v2.49-51
678
-
679
- * _Releases skipped to stay in sync with the rest of the Selenium project_
680
-
681
-
682
- ## v2.48.2
683
-
684
- * Added `WebElement#takeScreenshot()`.
685
- * More adjustments to promise callback tracking.
686
-
687
- ## v2.48.1
688
-
689
- * FIXED: Adjusted how the control flow tracks promise callbacks to avoid a
690
- potential deadlock.
691
-
692
- ## v2.48.0
693
-
694
- * Node v0.12.x users must run with --harmony. _This is the last release that
695
- will support v0.12.x_
696
- * FIXED: (Promise/A+ compliance) When a promise is rejected with a thenable,
697
- the promise adopts the thenable as its rejection reason instead of waiting
698
- for it to settle. The previous (incorrect) behavior was hidden by bugs in
699
- the `promises-aplus-tests` compliance test suite that were fixed in version
700
- `2.1.1`.
701
- * FIXED: the `webdriver.promise.ControlFlow` now has a consistent execution
702
- order for tasks/callbacks scheduled in different turns of the JS event loop.
703
- Refer to the `webdriver.promise` documentation for more details.
704
- * FIXED: do not drop user auth from the WebDriver server URL.
705
- * FIXED: a single `firefox.Binary` instance may be used to configure and
706
- launch multiple FirefoxDriver sessions.
707
-
708
- var binary = new firefox.Binary();
709
- var options = new firefox.Options().setBinary(binary);
710
- var builder = new Builder().setFirefoxOptions(options);
711
-
712
- var driver1 = builder.build();
713
- var driver2 = builder.build();
714
-
715
- * FIXED: zip files created for transfer to a remote WebDriver server are no
716
- longer compressed. If the zip contained a file that was already compressed,
717
- the server would return an "invalid code lengths set" error.
718
- * FIXED: Surfaced the `loopback` option to `remote/SeleniumServer`. When set,
719
- the server will be accessed using the current host's loopback address.
720
-
721
- ## v2.47.0
722
-
723
- ### Notice
724
-
725
- This is the last release for `selenium-webdriver` that will support ES5.
726
- Subsequent releases will depend on ES6 features that are enabled by
727
- [default](https://nodejs.org/en/docs/es6/) in Node v4.0.0. Node v0.12.x will
728
- continue to be supported, but will require setting the `--harmony` flag.
729
-
730
- ### Change Summary
731
-
732
- * Add support for [Node v4.0.0](https://nodejs.org/en/blog/release/v4.0.0/)
733
- * Updated `ws` dependency from `0.7.1` to `0.8.0`
734
- * Bumped the minimum supported version of Node from `0.10.x` to `0.12.x`. This
735
- is in accordance with the Node support policy established in `v2.45.0`.
736
-
737
- ## v2.46.1
738
-
739
- * Fixed internal module loading on Windows.
740
- * Fixed error message format on timeouts for `until.elementLocated()`
741
- and `until.elementsLocated()`.
742
-
743
- ## v2.46.0
744
-
745
- * Exposed a new logging API via the `webdriver.logging` module. For usage, see
746
- `example/logging.js`.
747
- * Added support for using a proxy server for WebDriver commands.
748
- See `Builder#usingWebDriverProxy()` for more info.
749
- * Removed deprecated functions:
750
- * Capabilities#toJSON()
751
- * UnhandledAlertError#getAlert()
752
- * chrome.createDriver()
753
- * phantomjs.createDriver()
754
- * promise.ControlFlow#annotateError()
755
- * promise.ControlFlow#await()
756
- * promise.ControlFlow#clearHistory()
757
- * promise.ControlFlow#getHistory()
758
- * Removed deprecated enum values: `ErrorCode.NO_MODAL_DIALOG_OPEN` and
759
- `ErrorCode.MODAL_DIALOG_OPENED`. Use `ErrorCode.NO_SUCH_ALERT` and
760
- `ErrorCode.UNEXPECTED_ALERT_OPEN`, respectively.
761
- * FIXED: The `promise.ControlFlow` will maintain state for promise chains
762
- generated in a loop.
763
- * FIXED: Correct serialize target elements used in an action sequence.
764
- * FIXED: `promise.ControlFlow#wait()` now has consistent semantics for an
765
- omitted or 0-timeout: it will wait indefinitely.
766
- * FIXED: `remote.DriverService#start()` will now fail if the child process dies
767
- while waiting for the server to start accepting requests. Previously, start
768
- would continue to poll the server address until the timeout expired.
769
- * FIXED: Skip launching Firefox with the `-silent` flag to preheat the profile.
770
- Starting with Firefox 38, this would cause the browser to crash. This step,
771
- which was first introduced for Selenium's java client back with Firefox 2,
772
- no longer appears to be required.
773
- * FIXED: 8564: `firefox.Driver#quit()` will wait for the Firefox process to
774
- terminate before deleting the temporary webdriver profile. This eliminates a
775
- race condition where Firefox would write profile data during shutdown,
776
- causing the `rm -rf` operation on the profile directory to fail.
777
-
778
- ## v2.45.1
779
-
780
- * FIXED: 8548: Task callbacks are once again dropped if the task was cancelled
781
- due to a previously uncaught error within the frame.
782
- * FIXED: 8496: Extended the `chrome.Options` API to cover all configuration
783
- options (e.g. mobile emulation and performance logging) documented on the
784
- ChromeDriver [project site](https://chromedriver.chromium.org/capabilities).
785
-
786
- ## v2.45.0
787
-
788
- ### Important Policy Change
789
-
790
- Starting with the 2.45.0 release, selenium-webdriver will support the last
791
- two stable minor releases for Node. For 2.45.0, this means Selenium will
792
- support Node 0.10.x and 0.12.x. Support for the intermediate, un-stable release
793
- (0.11.x) is "best-effort". This policy will be re-evaluated once Node has a
794
- major version release (i.e. 1.0.0).
795
-
796
- ### Change Summary
797
-
798
- * Added native browser support for Internet Explorer, Opera 26+, and Safari
799
- * With the release of [Node 0.12.0](http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/)
800
- (finally!), the minimum supported version of Node is now `0.10.x`.
801
- * The `promise` module is now [Promises/A+](https://promisesaplus.com/)
802
- compliant. The biggest compliance change is that promise callbacks are now
803
- invoked in a future turn of the JS event loop. For example:
804
-
805
- var promise = require('selenium-webdriver').promise;
806
- console.log('start');
807
- promise.fulfilled().then(function() {
808
- console.log('middle');
809
- });
810
- console.log('end');
811
-
812
- // Output in selenium-webdriver@2.44.0
813
- // start
814
- // middle
815
- // end
816
- //
817
- // Output in selenium-webdriver@2.45.0
818
- // start
819
- // end
820
- // middle
821
-
822
- The `promise.ControlFlow` class has been updated to track the asynchronous
823
- breaks required by Promises/A+, so there are no changes to task execution
824
- order.
825
- * Updated how errors are annotated on failures. When a task fails, the
826
- stacktrace from when that task was scheduled is appended to the rejection
827
- reason with a `From: ` prefix (if it is an Error object). For example:
828
-
829
- var driver = new webdriver.Builder().forBrowser('chrome').build();
830
- driver.get('http://www.google.com/ncr');
831
- driver.call(function() {
832
- driver.wait(function() {
833
- return driver.isElementPresent(webdriver.By.id('not-there'));
834
- }, 2000, 'element not found');
835
- });
836
-
837
- This code will fail an error like:
838
-
839
- Error: element not found
840
- Wait timed out after 2002ms
841
- at <stack trace>
842
- From: Task: element not found
843
- at <stack trace>
844
- From: Task: WebDriver.call(function)
845
- at <stack trace>
846
-
847
- * Changed the format of strings returned by `promise.ControlFlow#getSchedule`.
848
- This function now accepts a boolean to control whether the returned string
849
- should include the stacktraces for when each task was scheduled.
850
- * Deprecating `promise.ControlFlow#getHistory`,
851
- `promise.ControlFlow#clearHistory`, and `promise.ControlFlow#annotateError`.
852
- These functions were all intended for internal use and are no longer
853
- necessary, so they have been made no-ops.
854
- * `WebDriver.wait()` may now be used to wait for a promise to resolve, with
855
- an optional timeout. Refer to the API documentation for more information.
856
- * Added support for copying files to a remote Selenium via `sendKeys` to test
857
- file uploads. Refer to the API documentation for more information. Sample
858
- usage included in `test/upload_test.js`
859
- * Expanded the interactions API to include touch actions.
860
- See `WebDriver.touchActions()`.
861
- * FIXED: 8380: `firefox.Driver` will delete its temporary profile on `quit`.
862
- * FIXED: 8306: Stack overflow in promise callbacks eliminated.
863
- * FIXED: 8221: Added support for defining custom command mappings. Includes
864
- support for PhantomJS's `executePhantomJS` (requires PhantomJS 1.9.7 or
865
- GhostDriver 1.1.0).
866
- * FIXED: 8128: When the FirefoxDriver marshals an object to the page for
867
- `executeScript`, it defines additional properties (required by the driver's
868
- implementation). These properties will no longer be enumerable and should
869
- be omitted (i.e. they won't show up in JSON.stringify output).
870
- * FIXED: 8094: The control flow will no longer deadlock when a task returns
871
- a promise that depends on the completion of sub-tasks.
872
-
873
- ## v2.44.0
874
-
875
- * Added the `until` module, which defines common explicit wait conditions.
876
- Sample usage:
877
-
878
- var firefox = require('selenium-webdriver/firefox'),
879
- until = require('selenium-webdriver/until');
880
-
881
- var driver = new firefox.Driver();
882
- driver.get('http://www.google.com/ncr');
883
- driver.wait(until.titleIs('Google Search'), 1000);
884
-
885
- * FIXED: 8000: `Builder.forBrowser()` now accepts an empty string since some
886
- WebDriver implementations ignore the value. A value must still be specified,
887
- however, since it is a required field in WebDriver's wire protocol.
888
- * FIXED: 7994: The `stacktrace` module will not modify stack traces if the
889
- initial parse fails (e.g. the user defined `Error.prepareStackTrace`)
890
- * FIXED: 5855: Added a module (`until`) that defines several common conditions
891
- for use with explicit waits. See updated examples for usage.
892
-
893
- ## v2.43.5
894
-
895
- * FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for
896
- chaining.
897
-
898
- ## v2.43.2-4
899
-
900
- * No changes; version bumps while attempting to work around an issue with
901
- publishing to npm (a version string may only be used once).
902
-
903
- ## v2.43.1
904
-
905
- * Fixed an issue with flakiness when setting up the Firefox profile that could
906
- prevent the driver from initializing properly.
907
-
908
- ## v2.43.0
909
-
910
- * Added native support for Firefox - the Java Selenium server is no longer
911
- required.
912
- * Added support for generator functions to `ControlFlow#execute` and
913
- `ControlFlow#wait`. For more information, see documentation on
914
- `webdriver.promise.consume`. Requires harmony support (run with
915
- `node --harmony-generators` in `v0.11.x`).
916
- * Various improvements to the `Builder` API. Notably, the `build()` function
917
- will no longer default to attempting to use a server at
918
- `http://localhost:4444/wd/hub` if it cannot start a browser directly -
919
- you must specify the WebDriver server with `usingServer(url)`. You can
920
- also set the target browser and WebDriver server through a pair of
921
- environment variables. See the documentation on the `Builder` constructor
922
- for more information.
923
- * For consistency with the other language bindings, added browser specific
924
- classes that can be used to start a browser without the builder.
925
-
926
- var webdriver = require('selenium-webdriver')
927
- chrome = require('selenium-webdriver/chrome');
928
-
929
- // The following are equivalent.
930
- var driver1 = new webdriver.Builder().forBrowser('chrome').build();
931
- var driver2 = new chrome.Driver();
932
-
933
- * Promise A+ compliance: a promise may no longer resolve to itself.
934
- * For consistency with other language bindings, deprecated
935
- `UnhandledAlertError#getAlert` and added `#getAlertText`.
936
- `getAlert` will be removed in `2.45.0`.
937
- * FIXED: 7641: Deprecated `ErrorCode.NO_MODAL_DIALOG_OPEN` and
938
- `ErrorCode.MODAL_DIALOG_OPENED` in favor of the new
939
- `ErrorCode.NO_SUCH_ALERT` and `ErrorCode.UNEXPECTED_ALERT_OPEN`,
940
- respectively.
941
- * FIXED: 7563: Mocha integration no longer disables timeouts. Default Mocha
942
- timeouts apply (2000 ms) and may be changed using `this.timeout(ms)`.
943
- * FIXED: 7470: Make it easier to create WebDriver instances in custom flows for
944
- parallel execution.
945
-
946
- ## v2.42.1
947
-
948
- * FIXED: 7465: Fixed `net.getLoopbackAddress` on Windows
949
- * FIXED: 7277: Support `done` callback in Mocha's BDD interface
950
- * FIXED: 7156: `Promise#thenFinally` should not suppress original error
951
-
952
- ## v2.42.0
953
-
954
- * Removed deprecated functions `Promise#addCallback()`,
955
- `Promise#addCallbacks()`, `Promise#addErrback()`, and `Promise#addBoth()`.
956
- * Fail with a more descriptive error if the server returns a malformed redirect
957
- * FIXED: 7300: Connect to ChromeDriver using the loopback address since
958
- ChromeDriver 2.10.267517 binds to localhost by default.
959
- * FIXED: 7339: Preserve wrapped test function's string representation for
960
- Mocha's BDD interface.
961
-
962
- ## v2.41.0
963
-
964
- * FIXED: 7138: export logging API from webdriver module.
965
- * FIXED: 7105: beforeEach/it/afterEach properly bind `this` for Mocha tests.
966
-
967
- ## v2.40.0
968
-
969
- * API documentation is now included in the docs directory.
970
- * Added utility functions for working with an array of promises:
971
- `promise.all`, `promise.map`, and `promise.filter`
972
- * Introduced `Promise#thenCatch()` and `Promise#thenFinally()`.
973
- * Deprecated `Promise#addCallback()`, `Promise#addCallbacks()`,
974
- `Promise#addErrback()`, and `Promise#addBoth()`.
975
- * Removed deprecated function `webdriver.WebDriver#getCapability`.
976
- * FIXED: 6826: Added support for custom locators.
977
-
978
- ## v2.39.0
979
-
980
- * Version bump to stay in sync with the Selenium project.
981
-
982
- ## v2.38.1
983
-
984
- * FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op
985
- if the deferred has already been resolved.
986
-
987
- ## v2.38.0
988
-
989
- * When a promise is rejected, always annotate the stacktrace with the parent
990
- flow state so users can identify the source of an error.
991
- * Updated tests to reflect features not working correctly in the SafariDriver
992
- (cookie management and proxy support; see issues 5051, 5212, and 5503)
993
- * FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not
994
- specified as a function argument (instead of passing (0,0)).
995
- * FIXED: 6471: Updated documentation on `webdriver.WebElement#getAttribute`
996
- * FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to
997
- retrieve the current system's port range.
998
- * FIXED: 6617: Avoid triggering the node debugger when initializing the
999
- stacktrace module.
1000
- * FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.
1001
-
1002
- ## v2.37.0
1003
-
1004
- * FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using
1005
- the `jvmArgs` option.
1006
-
1007
- ## v2.36.0
1008
-
1009
- * _Release skipped to stay in sync with main Selenium project._
1010
-
1011
- ## v2.35.2
1012
-
1013
- * FIXED: 6200: Pass arguments to the Selenium server instead of to the JVM.
1014
-
1015
- ## v2.35.1
1016
-
1017
- * FIXED: 6090: Changed example scripts to use chromedriver.
1018
-
1019
- ## v2.35.0
1020
-
1021
- * Version bump to stay in sync with the Selenium project.
1022
-
1023
- ## v2.34.1
1024
-
1025
- * FIXED: 6079: The parent process should not wait for spawn driver service
1026
- processes (chromedriver, phantomjs, etc.)
1027
-
1028
- ## v2.34.0
1029
-
1030
- * Added the `selenium-webdriver/testing/assert` module. This module
1031
- simplifies writing assertions against promised values (see
1032
- example in module documentation).
1033
- * Added the `webdriver.Capabilities` class.
1034
- * Added native support for the ChromeDriver. When using the `Builder`,
1035
- requesting chrome without specifying a remote server URL will default to
1036
- the native ChromeDriver implementation. The
1037
- [ChromeDriver server](https://code.google.com/p/chromedriver/downloads/list)
1038
- must be downloaded separately.
1039
-
1040
- // Will start ChromeDriver locally.
1041
- var driver = new webdriver.Builder().
1042
- withCapabilities(webdriver.Capabilities.chrome()).
1043
- build();
1044
-
1045
- // Will start ChromeDriver using the remote server.
1046
- var driver = new webdriver.Builder().
1047
- withCapabilities(webdriver.Capabilities.chrome()).
1048
- usingServer('http://server:1234/wd/hub').
1049
- build();
1050
-
1051
- * Added support for configuring proxies through the builder. For examples, see
1052
- `selenium-webdriver/test/proxy_test`.
1053
- * Added native support for PhantomJS.
1054
- * Changed signature of `SeleniumServer` to `SeleniumServer(jar, options)`.
1055
- * Tests are now included in the npm published package. See `README.md` for
1056
- execution instructions
1057
- * Removed the deprecated `webdriver.Deferred#resolve` and
1058
- `webdriver.promise.resolved` functions.
1059
- * Removed the ability to connect to an existing session from the Builder. This
1060
- feature is intended for use with the browser-based client.
1061
-
1062
- ## v2.33.0
1063
-
1064
- * Added support for WebDriver's logging API
1065
- * FIXED: 5511: Added webdriver.manage().timeouts().pageLoadTimeout(ms)
1066
-
1067
- ## v2.32.1
1068
-
1069
- * FIXED: 5541: Added missing return statement for windows in
1070
- `portprober.findFreePort()`
1071
-
1072
- ## v2.32.0
1073
-
1074
- * Added the `selenium-webdriver/testing` package, which provides a basic
1075
- framework for writing tests using Mocha. See
1076
- `selenium-webdriver/example/google_search_test.js` for usage.
1077
- * For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured
1078
- rejections were always Error objects. Rejection reasons are now left as is.
1079
- * Removed deprecated functions originally scheduled for removal in 2.31.0
1080
- * promise.Application.getInstance()
1081
- * promise.ControlFlow#schedule()
1082
- * promise.ControlFlow#scheduleTimeout()
1083
- * promise.ControlFlow#scheduleWait()
1084
- * Renamed some functions for consistency with Promises/A+ terminology. The
1085
- original functions have been deprecated and will be removed in 2.34.0:
1086
- * promise.resolved() -> promise.fulfilled()
1087
- * promise.Deferred#resolve() -> promise.Deferred#fulfill()
1088
- * FIXED: remote.SeleniumServer#stop now shuts down within the active control
1089
- flow, allowing scripts to finish. Use #kill to shutdown immediately.
1090
- * FIXED: 5321: cookie deletion commands
1091
-
1092
- ## v2.31.0
1093
-
1094
- * Added an example script.
1095
- * Added a class for controlling the standalone Selenium server (server
1096
- available separately)
1097
- * Added a portprober for finding free ports
1098
- * FIXED: WebElements now belong to the same flow as their parent driver.
1099
-
1100
- ## v2.30.0
1101
-
1102
- * Ensures promise rejections are always Error values.
1103
- * Version bump to keep in sync with the Selenium project.
1104
-
1105
- ## v2.29.1
1106
-
1107
- * Fixed a bug that could lead to an infinite loop.
1108
- * Added a README.md
1109
-
1110
- ## v2.29.0
1111
-
1112
- * Initial release for npm:
1113
-
1114
- npm install selenium-webdriver