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,503 +0,0 @@
1
- // Licensed to the Software Freedom Conservancy (SFC) under one
2
- // or more contributor license agreements. See the NOTICE file
3
- // distributed with this work for additional information
4
- // regarding copyright ownership. The SFC licenses this file
5
- // to you under the Apache License, Version 2.0 (the
6
- // "License"); you may not use this file except in compliance
7
- // with the License. You may obtain a copy of the License at
8
- //
9
- // http://www.apache.org/licenses/LICENSE-2.0
10
- //
11
- // Unless required by applicable law or agreed to in writing,
12
- // software distributed under the License is distributed on an
13
- // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- // KIND, either express or implied. See the License for the
15
- // specific language governing permissions and limitations
16
- // under the License.
17
-
18
- /**
19
- * @fileoverview Defines a {@linkplain Driver WebDriver} client for Microsoft's
20
- * Internet Explorer. Before using the IEDriver, you must download the latest
21
- * [IEDriverServer](http://selenium-release.storage.googleapis.com/index.html)
22
- * and place it on your
23
- * [PATH](http://en.wikipedia.org/wiki/PATH_%28variable%29). You must also apply
24
- * the system configuration outlined on the Selenium project
25
- * [wiki](https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver)
26
- */
27
-
28
- 'use strict'
29
-
30
- const fs = require('fs')
31
- const http = require('./http')
32
- const io = require('./io')
33
- const portprober = require('./net/portprober')
34
- const remote = require('./remote')
35
- const webdriver = require('./lib/webdriver')
36
- const { Browser, Capabilities } = require('./lib/capabilities')
37
- const error = require('./lib/error')
38
-
39
- const IEDRIVER_EXE = 'IEDriverServer.exe'
40
- const OPTIONS_CAPABILITY_KEY = 'se:ieOptions'
41
- const SCROLL_BEHAVIOUR = {
42
- BOTTOM: 1,
43
- TOP: 0,
44
- }
45
-
46
- /**
47
- * IEDriverServer logging levels.
48
- * @enum {string}
49
- */
50
- const Level = {
51
- FATAL: 'FATAL',
52
- ERROR: 'ERROR',
53
- WARN: 'WARN',
54
- INFO: 'INFO',
55
- DEBUG: 'DEBUG',
56
- TRACE: 'TRACE',
57
- }
58
-
59
- /**
60
- * Option keys:
61
- * https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities#ie-specific
62
- * @enum {string}
63
- */
64
- const Key = {
65
- IGNORE_PROTECTED_MODE_SETTINGS: 'ignoreProtectedModeSettings',
66
- IGNORE_ZOOM_SETTING: 'ignoreZoomSetting',
67
- INITIAL_BROWSER_URL: 'initialBrowserUrl',
68
- ENABLE_PERSISTENT_HOVER: 'enablePersistentHover',
69
- ENABLE_ELEMENT_CACHE_CLEANUP: 'enableElementCacheCleanup',
70
- ELEMENT_SCROLL_BEHAVIOR: 'elementScrollBehavior',
71
- REQUIRE_WINDOW_FOCUS: 'requireWindowFocus',
72
- BROWSER_ATTACH_TIMEOUT: 'browserAttachTimeout',
73
- FORCE_CREATE_PROCESS: 'ie.forceCreateProcessApi',
74
- BROWSER_COMMAND_LINE_SWITCHES: 'ie.browserCommandLineSwitches',
75
- USE_PER_PROCESS_PROXY: 'ie.usePerProcessProxy',
76
- ENSURE_CLEAN_SESSION: 'ie.ensureCleanSession',
77
- LOG_FILE: 'logFile',
78
- LOG_LEVEL: 'logLevel',
79
- HOST: 'host',
80
- EXTRACT_PATH: 'extractPath',
81
- SILENT: 'silent',
82
- FILE_UPLOAD_DIALOG_TIMEOUT: 'ie.fileUploadDialogTimeout',
83
- ATTACH_TO_EDGE_CHROMIUM: 'ie.edgechromium',
84
- EDGE_EXECUTABLE_PATH: 'ie.edgepath',
85
- }
86
-
87
- /**
88
- * Class for managing IEDriver specific options.
89
- */
90
- class Options extends Capabilities {
91
- /**
92
- * @param {(Capabilities|Map<string, ?>|Object)=} other Another set of
93
- * capabilities to initialize this instance from.
94
- */
95
- constructor(other = undefined) {
96
- super(other)
97
-
98
- /** @private {!Object} */
99
- this.options_ = this.get(OPTIONS_CAPABILITY_KEY) || {}
100
-
101
- this.set(OPTIONS_CAPABILITY_KEY, this.options_)
102
- this.setBrowserName(Browser.INTERNET_EXPLORER)
103
- }
104
-
105
- /**
106
- * Whether to disable the protected mode settings check when the session is
107
- * created. Disabling this setting may lead to significant instability as the
108
- * browser may become unresponsive/hang. Only "best effort" support is provided
109
- * when using this capability.
110
- *
111
- * For more information, refer to the IEDriver's
112
- * [required system configuration](http://goo.gl/eH0Yi3).
113
- *
114
- * @param {boolean} ignoreSettings Whether to ignore protected mode settings.
115
- * @return {!Options} A self reference.
116
- */
117
- introduceFlakinessByIgnoringProtectedModeSettings(ignoreSettings) {
118
- this.options_[Key.IGNORE_PROTECTED_MODE_SETTINGS] = !!ignoreSettings
119
- return this
120
- }
121
-
122
- /**
123
- * Indicates whether to skip the check that the browser's zoom level is set to
124
- * 100%.
125
- *
126
- * @param {boolean} ignore Whether to ignore the browser's zoom level settings.
127
- * @return {!Options} A self reference.
128
- */
129
- ignoreZoomSetting(ignore) {
130
- this.options_[Key.IGNORE_ZOOM_SETTING] = !!ignore
131
- return this
132
- }
133
-
134
- /**
135
- * Sets the initial URL loaded when IE starts. This is intended to be used with
136
- * {@link #introduceFlakinessByIgnoringProtectedModeSettings} to allow the user to initialize IE in
137
- * the proper Protected Mode zone. Setting this option may cause browser
138
- * instability or flaky and unresponsive code. Only "best effort" support is
139
- * provided when using this option.
140
- *
141
- * @param {string} url The initial browser URL.
142
- * @return {!Options} A self reference.
143
- */
144
- initialBrowserUrl(url) {
145
- this.options_[Key.INITIAL_BROWSER_URL] = url
146
- return this
147
- }
148
-
149
- /**
150
- * Configures whether to enable persistent mouse hovering (true by default).
151
- * Persistent hovering is achieved by continuously firing mouse over events at
152
- * the last location the mouse cursor has been moved to.
153
- *
154
- * @param {boolean} enable Whether to enable persistent hovering.
155
- * @return {!Options} A self reference.
156
- */
157
- enablePersistentHover(enable) {
158
- this.options_[Key.ENABLE_PERSISTENT_HOVER] = !!enable
159
- return this
160
- }
161
-
162
- /**
163
- * Configures whether the driver should attempt to remove obsolete
164
- * {@linkplain webdriver.WebElement WebElements} from its internal cache on
165
- * page navigation (true by default). Disabling this option will cause the
166
- * driver to run with a larger memory footprint.
167
- *
168
- * @param {boolean} enable Whether to enable element reference cleanup.
169
- * @return {!Options} A self reference.
170
- */
171
- enableElementCacheCleanup(enable) {
172
- this.options_[Key.ENABLE_ELEMENT_CACHE_CLEANUP] = !!enable
173
- return this
174
- }
175
-
176
- /**
177
- * Configures whether to require the IE window to have input focus before
178
- * performing any user interactions (i.e. mouse or keyboard events). This
179
- * option is disabled by default, but delivers much more accurate interaction
180
- * events when enabled.
181
- *
182
- * @param {boolean} require Whether to require window focus.
183
- * @return {!Options} A self reference.
184
- */
185
- requireWindowFocus(require) {
186
- this.options_[Key.REQUIRE_WINDOW_FOCUS] = !!require
187
- return this
188
- }
189
-
190
- /**
191
- * Configures the timeout, in milliseconds, that the driver will attempt to
192
- * located and attach to a newly opened instance of Internet Explorer. The
193
- * default is zero, which indicates waiting indefinitely.
194
- *
195
- * @param {number} timeout How long to wait for IE.
196
- * @return {!Options} A self reference.
197
- */
198
- browserAttachTimeout(timeout) {
199
- this.options_[Key.BROWSER_ATTACH_TIMEOUT] = Math.max(timeout, 0)
200
- return this
201
- }
202
-
203
- /**
204
- * Configures whether to launch Internet Explorer using the CreateProcess API.
205
- * If this option is not specified, IE is launched using IELaunchURL, if
206
- * available. For IE 8 and above, this option requires the TabProcGrowth
207
- * registry value to be set to 0.
208
- *
209
- * @param {boolean} force Whether to use the CreateProcess API.
210
- * @return {!Options} A self reference.
211
- */
212
- forceCreateProcessApi(force) {
213
- this.options_[Key.FORCE_CREATE_PROCESS] = !!force
214
- return this
215
- }
216
-
217
- /**
218
- * Specifies command-line switches to use when launching Internet Explorer.
219
- * This is only valid when used with {@link #forceCreateProcessApi}.
220
- *
221
- * @param {...(string|!Array.<string>)} args The arguments to add.
222
- * @return {!Options} A self reference.
223
- */
224
-
225
- addBrowserCommandSwitches(...args) {
226
- let current = this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] || []
227
- if (typeof current == 'string') current = current.split(' ')
228
- this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] = current
229
- .concat(args)
230
- .join(' ')
231
- return this
232
- }
233
-
234
- /**
235
- * Specifies command-line switches to use when launching Internet Explorer.
236
- * This is only valid when used with {@link #forceCreateProcessApi}.
237
- *
238
- * @param {...(string|!Array.<string>)} args The arguments to add.
239
- * @deprecated Use {@link #addBrowserCommandSwitches} instead.
240
- * @return {!Options} A self reference.
241
- */
242
-
243
- addArguments(...args) {
244
- let current = this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] || []
245
- if (typeof current == 'string') current = current.split(' ')
246
- this.options_[Key.BROWSER_COMMAND_LINE_SWITCHES] = current
247
- .concat(args)
248
- .join(' ')
249
- return this
250
- }
251
-
252
- /**
253
- * Configures whether proxies should be configured on a per-process basis. If
254
- * not set, setting a {@linkplain #setProxy proxy} will configure the system
255
- * proxy. The default behavior is to use the system proxy.
256
- *
257
- * @param {boolean} enable Whether to enable per-process proxy settings.
258
- * @return {!Options} A self reference.
259
- */
260
- usePerProcessProxy(enable) {
261
- this.options_[Key.USE_PER_PROCESS_PROXY] = !!enable
262
- return this
263
- }
264
-
265
- /**
266
- * Configures whether to clear the cache, cookies, history, and saved form data
267
- * before starting the browser. _Using this capability will clear session data
268
- * for all running instances of Internet Explorer, including those started
269
- * manually._
270
- *
271
- * @param {boolean} cleanSession Whether to clear all session data on startup.
272
- * @return {!Options} A self reference.
273
- */
274
- ensureCleanSession(cleanSession) {
275
- this.options_[Key.ENSURE_CLEAN_SESSION] = !!cleanSession
276
- return this
277
- }
278
-
279
- /**
280
- * Sets the path to the log file the driver should log to.
281
- * @param {string} file The log file path.
282
- * @return {!Options} A self reference.
283
- */
284
- setLogFile(file) {
285
- this.options_[Key.LOG_FILE] = file
286
- return this
287
- }
288
-
289
- /**
290
- * Sets the IEDriverServer's logging {@linkplain Level level}.
291
- * @param {Level} level The logging level.
292
- * @return {!Options} A self reference.
293
- */
294
- setLogLevel(level) {
295
- this.options_[Key.LOG_LEVEL] = level
296
- return this
297
- }
298
-
299
- /**
300
- * Sets the IP address of the driver's host adapter.
301
- * @param {string} host The IP address to use.
302
- * @return {!Options} A self reference.
303
- */
304
- setHost(host) {
305
- this.options_[Key.HOST] = host
306
- return this
307
- }
308
-
309
- /**
310
- * Sets the path of the temporary data directory to use.
311
- * @param {string} path The log file path.
312
- * @return {!Options} A self reference.
313
- */
314
- setExtractPath(path) {
315
- this.options_[Key.EXTRACT_PATH] = path
316
- return this
317
- }
318
-
319
- /**
320
- * Sets whether the driver should start in silent mode.
321
- * @param {boolean} silent Whether to run in silent mode.
322
- * @return {!Options} A self reference.
323
- */
324
- silent(silent) {
325
- this.options_[Key.SILENT] = silent
326
- return this
327
- }
328
-
329
- /**
330
- * The options File Upload Dialog Timeout in milliseconds
331
- *
332
- * @param {number} timeout How long to wait for IE.
333
- * @return {!Options} A self reference.
334
- */
335
- fileUploadDialogTimeout(timeout) {
336
- this.options_[Key.FILE_UPLOAD_DIALOG_TIMEOUT] = Math.max(timeout, 0)
337
- return this
338
- }
339
-
340
- /**
341
- * Sets the path of the EdgeChromium driver.
342
- * @param {string} path The EdgeChromium driver path.
343
- * @return {!Options} A self reference.
344
- */
345
- setEdgePath(path) {
346
- this.options_[Key.EDGE_EXECUTABLE_PATH] = path
347
- return this
348
- }
349
-
350
- /**
351
- * Sets the IEDriver to drive Chromium-based Edge in Internet Explorer mode.
352
- *
353
- * @param {boolean} attachEdgeChromium Whether to run in Chromium-based-Edge in IE mode
354
- * @return {!Options} A self reference.
355
- */
356
- setEdgeChromium(attachEdgeChromium) {
357
- this.options_[Key.ATTACH_TO_EDGE_CHROMIUM] = !!attachEdgeChromium
358
- return this
359
- }
360
-
361
- /**
362
- * Sets how elements should be scrolled into view for interaction.
363
- * @param {number} behavior The desired scroll behavior: either 0 to align with
364
- * the top of the viewport or 1 to align with the bottom.
365
- * @return {!Options} A self reference.
366
- */
367
- setScrollBehavior(behavior) {
368
- if (
369
- behavior &&
370
- behavior !== SCROLL_BEHAVIOUR.TOP &&
371
- behavior !== SCROLL_BEHAVIOUR.BOTTOM
372
- ) {
373
- throw new error.InvalidArgumentError(`Element Scroll Behavior out of range.
374
- It should be either ${SCROLL_BEHAVIOUR.TOP} or ${SCROLL_BEHAVIOUR.BOTTOM}`)
375
- }
376
- this.options_[Key.ELEMENT_SCROLL_BEHAVIOR] = behavior
377
- return this
378
- }
379
- }
380
-
381
- /**
382
- * _Synchronously_ attempts to locate the IE driver executable on the current
383
- * system.
384
- *
385
- * @return {?string} the located executable, or `null`.
386
- */
387
- function locateSynchronously() {
388
- return process.platform === 'win32' ? io.findInPath(IEDRIVER_EXE, true) : null
389
- }
390
-
391
- function createServiceFromCapabilities(capabilities) {
392
- if (process.platform !== 'win32') {
393
- throw Error(
394
- 'The IEDriver may only be used on Windows, but you appear to be on ' +
395
- process.platform +
396
- '. Did you mean to run against a remote ' +
397
- 'WebDriver server?'
398
- )
399
- }
400
-
401
- let exe = locateSynchronously()
402
- if (!exe || !fs.existsSync(exe)) {
403
- throw Error(
404
- `${IEDRIVER_EXE} could not be found on the current PATH. Please ` +
405
- `download the latest version of ${IEDRIVER_EXE} from ` +
406
- 'http://selenium-release.storage.googleapis.com/index.html and ' +
407
- 'ensure it can be found on your system PATH.'
408
- )
409
- }
410
-
411
- var args = []
412
- if (capabilities.has(Key.HOST)) {
413
- args.push('--host=' + capabilities.get(Key.HOST))
414
- }
415
- if (capabilities.has(Key.LOG_FILE)) {
416
- args.push('--log-file=' + capabilities.get(Key.LOG_FILE))
417
- }
418
- if (capabilities.has(Key.LOG_LEVEL)) {
419
- args.push('--log-level=' + capabilities.get(Key.LOG_LEVEL))
420
- }
421
- if (capabilities.has(Key.EXTRACT_PATH)) {
422
- args.push('--extract-path=' + capabilities.get(Key.EXTRACT_PATH))
423
- }
424
- if (capabilities.get(Key.SILENT)) {
425
- args.push('--silent')
426
- }
427
-
428
- var port = portprober.findFreePort()
429
- return new remote.DriverService(exe, {
430
- loopback: true,
431
- port: port,
432
- args: port.then(function (port) {
433
- return args.concat('--port=' + port)
434
- }),
435
- stdio: 'ignore',
436
- })
437
- }
438
-
439
- /**
440
- * Creates {@link selenium-webdriver/remote.DriverService} instances that manage
441
- * an [IEDriverServer](https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver)
442
- * server in a child process.
443
- */
444
- class ServiceBuilder extends remote.DriverService.Builder {
445
- /**
446
- * @param {string=} opt_exe Path to the server executable to use. If omitted,
447
- * the builder will attempt to locate the IEDriverServer on the system PATH.
448
- */
449
- constructor(opt_exe) {
450
- super(opt_exe || IEDRIVER_EXE)
451
- this.setLoopback(true) // Required.
452
- }
453
- }
454
-
455
- /**
456
- * A WebDriver client for Microsoft's Internet Explorer.
457
- */
458
- class Driver extends webdriver.WebDriver {
459
- /**
460
- * Creates a new session for Microsoft's Internet Explorer.
461
- *
462
- * @param {(Capabilities|Options)=} options The configuration options.
463
- * @param {(remote.DriverService)=} opt_service The `DriverService` to use
464
- * to start the IEDriverServer in a child process, optionally.
465
- * @return {!Driver} A new driver instance.
466
- */
467
- static createSession(options, opt_service) {
468
- options = options || new Options()
469
-
470
- let service
471
-
472
- if (opt_service instanceof remote.DriverService) {
473
- service = opt_service
474
- } else {
475
- service = createServiceFromCapabilities(options)
476
- }
477
-
478
- let client = service.start().then((url) => new http.HttpClient(url))
479
- let executor = new http.Executor(client)
480
-
481
- return /** @type {!Driver} */ (super.createSession(executor, options, () =>
482
- service.kill()
483
- ))
484
- }
485
-
486
- /**
487
- * This function is a no-op as file detectors are not supported by this
488
- * implementation.
489
- * @override
490
- */
491
- setFileDetector() {}
492
- }
493
-
494
- // PUBLIC API
495
-
496
- exports.Driver = Driver
497
- exports.Options = Options
498
- exports.Level = Level
499
- exports.ServiceBuilder = ServiceBuilder
500
- exports.Key = Key
501
- exports.VENDOR_COMMAND_PREFIX = OPTIONS_CAPABILITY_KEY
502
- exports.Behavior = SCROLL_BEHAVIOUR
503
- exports.locateSynchronously = locateSynchronously