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