selenium-webdriver 4.1.1 → 4.1.2

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