selenium-webdriver 4.0.0 → 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 +523 -552
- package/LICENSE +1 -1
- package/NOTICE +1 -1
- package/README.md +4 -4
- package/chrome.js +10 -6
- package/chromium.js +91 -30
- package/devtools/CDPConnection.js +9 -4
- package/devtools/networkinterceptor.js +60 -61
- package/edge.js +10 -8
- package/example/google_search.js +1 -1
- package/firefox.js +32 -17
- package/http/index.js +13 -14
- package/http/util.js +14 -20
- package/index.js +15 -15
- package/io/index.js +58 -55
- package/io/zip.js +1 -3
- package/lib/atoms/find-elements.js +2 -2
- package/lib/by.js +9 -10
- package/lib/capabilities.js +1 -1
- package/lib/command.js +6 -11
- package/lib/error.js +24 -19
- package/lib/http.js +62 -153
- 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/webdriver.js +410 -226
- package/net/index.js +14 -7
- package/net/portprober.js +5 -4
- package/opera.js +19 -22
- package/package.json +2 -3
- package/remote/index.js +13 -10
- package/testing/index.js +21 -16
package/CHANGES.md
CHANGED
|
@@ -1,10 +1,54 @@
|
|
|
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
|
+
|
|
16
|
+
## v4.1.1
|
|
17
|
+
|
|
18
|
+
* Add support for installing unpacked addons at runtime in Firefox webdriver (#10216)
|
|
19
|
+
* Enables firefox debugger for devtools test
|
|
20
|
+
* Sets correct browserName when set via SELENIUM_BROWSER fixes #10218
|
|
21
|
+
* add support for Chrome v97
|
|
22
|
+
* Adds new desktop cast command for Chromium #10190 (#10191)
|
|
23
|
+
* ignore errors arising from trying to use file detector fixes #6343
|
|
24
|
+
* Added RelativeBy class on the main api (#10148)
|
|
25
|
+
* Code cleanup and minor improvements
|
|
26
|
+
* Implements 'getDomAttribute' to get attribute value as defined by w3c spec and removes legacy command usages
|
|
27
|
+
* Remove legacy JWP support and w3c<boolean> switch (#10095)
|
|
28
|
+
* update map/filter clean up to common format (#10094)
|
|
29
|
+
|
|
30
|
+
## v4.1.0
|
|
31
|
+
|
|
32
|
+
* add support for handling Shadow DOM elements
|
|
33
|
+
* Capture browser console logs when using BiDi onLogEvent api
|
|
34
|
+
* add CDP support for v96 and remove v93
|
|
35
|
+
* remove useless package, change io public api import to more common approach (#10037)
|
|
36
|
+
* Fix flaky CDP dom mutation (#10029)
|
|
37
|
+
* Fix edge test failures (#10012)
|
|
38
|
+
* code cleanup second iteration (#9979)
|
|
39
|
+
* Ensure correct serialization of extensions in chromium.Options (#6676)
|
|
40
|
+
* Remove explicit id passing for CDP commands
|
|
41
|
+
* Attach to page target while creating a CDP connection (#10005)
|
|
42
|
+
* Add support for form submit in W3C mode (fixes #9916) (#9936)
|
|
43
|
+
* Fixes relative locator 'locateWith' export
|
|
44
|
+
* update doc string for CDP Commands (#9929)
|
|
45
|
+
|
|
1
46
|
## v4.0.0
|
|
2
47
|
|
|
3
48
|
* Fixes cdp for Chrome and Firefox (#9909)
|
|
4
49
|
* Add cdp 95 to python and JS
|
|
5
50
|
* Removing unused target for cdpConnection
|
|
6
51
|
|
|
7
|
-
|
|
8
52
|
## v4.0.0-rc-2
|
|
9
53
|
|
|
10
54
|
* Fix builder test
|
|
@@ -26,15 +70,13 @@
|
|
|
26
70
|
* Add default Opera capabilities. Fixes #9654
|
|
27
71
|
* Add support for ChromeDriver `--enable-chrome-logs` (#9575) [Author: Mark Stacey]
|
|
28
72
|
|
|
29
|
-
The `--enable-chrome-logs` ChromeDriver option can now be enabled using
|
|
30
|
-
|
|
31
|
-
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.
|
|
32
75
|
|
|
33
76
|
* Add the debuggerAddress option to chromium.js (#9561) [Author: Brandon Walderman]
|
|
34
77
|
* Adds http client options (#9638)[Author: Dharin Shah]
|
|
35
78
|
* Updating edge.js to extend chromium.driver (fixes #9626)
|
|
36
79
|
|
|
37
|
-
|
|
38
80
|
## v4.0.0-beta.4
|
|
39
81
|
|
|
40
82
|
* Add windowTypes option support for ChromiumDriver (#7897)
|
|
@@ -42,14 +84,13 @@
|
|
|
42
84
|
|
|
43
85
|
## v4.0.0-beta.3
|
|
44
86
|
|
|
45
|
-
* Removed support for legacy actions.
|
|
46
|
-
|
|
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.
|
|
47
89
|
* Remove devtools support for v86,v87 and adding support for v89, v90, v91
|
|
48
90
|
* make isPromise() return boolean value for null and undefined cases (#6785)
|
|
49
91
|
* code cleanup (#9158)
|
|
50
92
|
* replacing asserts equal with strictEqual and deepEqual with deepStrictEqual
|
|
51
93
|
|
|
52
|
-
|
|
53
94
|
## v4.0.0-beta.2
|
|
54
95
|
|
|
55
96
|
* Removed support for Edge legacy.
|
|
@@ -102,12 +143,11 @@
|
|
|
102
143
|
|
|
103
144
|
* Removed BUILD.bazel files from the build artifact
|
|
104
145
|
|
|
105
|
-
|
|
106
146
|
## v4.0.0-alpha.3
|
|
107
147
|
|
|
108
148
|
### Notice
|
|
109
149
|
|
|
110
|
-
*
|
|
150
|
+
* The minimum supported version of Node is now 10.15.0 LTS
|
|
111
151
|
|
|
112
152
|
### Changes
|
|
113
153
|
|
|
@@ -117,16 +157,15 @@
|
|
|
117
157
|
|
|
118
158
|
### API Changes
|
|
119
159
|
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
|
|
123
|
-
|
|
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})`.
|
|
124
163
|
|
|
125
164
|
## v4.0.0-alpha.1
|
|
126
165
|
|
|
127
166
|
### Notice
|
|
128
167
|
|
|
129
|
-
*
|
|
168
|
+
* The minimum supported version of Node is now 8.9.0 LTS
|
|
130
169
|
|
|
131
170
|
### Changes to Supported Browsers
|
|
132
171
|
|
|
@@ -140,200 +179,192 @@ mode (see `example/headless.js`)
|
|
|
140
179
|
|
|
141
180
|
### Changes for W3C WebDriver Spec Compliance
|
|
142
181
|
|
|
143
|
-
*
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
* Replaced `WebElement.getSize()` and `WebElement.getLocation()` with a single
|
|
162
|
-
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()`.
|
|
163
200
|
|
|
164
201
|
### API Changes
|
|
165
202
|
|
|
166
|
-
*
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
*
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
*
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
*
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
*
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
*
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
*
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
*
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
*
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
*
|
|
232
|
-
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
*
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
*
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
*
|
|
274
|
-
|
|
275
|
-
*
|
|
276
|
-
|
|
277
|
-
*
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
- afterEach
|
|
300
|
-
- it
|
|
301
|
-
- 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
|
|
302
336
|
`example/google_search_test.js`
|
|
303
337
|
|
|
304
|
-
|
|
305
|
-
|
|
306
338
|
## v3.6.0
|
|
307
339
|
|
|
308
340
|
### Bug Fixes
|
|
309
341
|
|
|
310
342
|
* The Capabilities factory methods should only specify the name of the browser.
|
|
311
|
-
* Protect against the remote end sometimes not returning a list to findElements
|
|
312
|
-
commands.
|
|
343
|
+
* Protect against the remote end sometimes not returning a list to findElements commands.
|
|
313
344
|
* Properly reset state in `remote.DriverService#kill()`
|
|
314
|
-
* The firefox module will no longer apply the preferences required by the legacy
|
|
315
|
-
|
|
316
|
-
|
|
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.
|
|
317
348
|
|
|
318
349
|
### API Changes
|
|
319
350
|
|
|
320
351
|
* Added new methods to `selenium-webdriver/firefox.Options`:
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
352
|
+
- addArguments()
|
|
353
|
+
- headless()
|
|
354
|
+
- windowSize()
|
|
324
355
|
* Deprecated `selenium-webdriver/firefox/binary.Binary`
|
|
325
356
|
* Removed `selenium-webdriver/firefox.Options#useGeckoDriver()`
|
|
326
357
|
* Removed the unused `selenium-webdriver/firefox/profile.decode()`
|
|
327
|
-
* Removed methods from `selenium-webdriver/firefox/profile.Profile` that had
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
* Removed `selenium-webdriver/firefox.ServiceBuilder#setFirefoxBinary()`; custom
|
|
334
|
-
|
|
335
|
-
* Removed `selenium-webdriver/firefox.Capability`. These hold overs from the
|
|
336
|
-
|
|
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.
|
|
337
368
|
|
|
338
369
|
### Changes for W3C WebDriver Spec Compliance
|
|
339
370
|
|
|
@@ -341,7 +372,6 @@ mode (see `example/headless.js`)
|
|
|
341
372
|
`error.ElementNotInteractableError`.
|
|
342
373
|
* Support the `httpOnly` option when adding a cookie.
|
|
343
374
|
|
|
344
|
-
|
|
345
375
|
## v3.5.0
|
|
346
376
|
|
|
347
377
|
### Notice
|
|
@@ -352,23 +382,20 @@ to a remote Selenium server that supports Firefox 45.
|
|
|
352
382
|
### Changes
|
|
353
383
|
|
|
354
384
|
* Removed native support for Firefox 46 and older.
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
* `firefox.Options` will no longer discard the `"moz:firefoxOptions"` set in
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
* Added `chrome.Options#headless()` and `chrome.Options#windowSize()`, which
|
|
362
|
-
|
|
363
|
-
the initial window size, respectively.
|
|
364
|
-
|
|
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.
|
|
365
393
|
|
|
366
394
|
### Changes for W3C WebDriver Spec Compliance
|
|
367
395
|
|
|
368
|
-
* Added `error.WebDriverError#remoteStacktrace` to capture the stacktrace
|
|
369
|
-
|
|
370
|
-
* Fixed `WebElement#sendKeys` to send text as a string instead of an array of
|
|
371
|
-
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.
|
|
372
399
|
|
|
373
400
|
## v3.4.0
|
|
374
401
|
|
|
@@ -378,28 +405,25 @@ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodrive
|
|
|
378
405
|
|
|
379
406
|
### API Changes
|
|
380
407
|
|
|
381
|
-
* Added `Options#getTimeouts()` for retrieving the currently configured session
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
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.
|
|
386
412
|
* Added support for emulating different network conditions (e.g., offline, 2G, WiFi) on Chrome.
|
|
387
413
|
|
|
388
414
|
### Changes for W3C WebDriver Spec Compliance
|
|
389
415
|
|
|
390
|
-
* Fixed W3C response parsing, which expects response data to always be a JSON
|
|
391
|
-
|
|
416
|
+
* Fixed W3C response parsing, which expects response data to always be a JSON object with a `value`
|
|
417
|
+
key.
|
|
392
418
|
* Added W3C endpoints for interacting with various types of
|
|
393
419
|
[user prompts](https://w3c.github.io/webdriver/webdriver-spec.html#user-prompts).
|
|
394
420
|
* Added W3C endpoints for remotely executing scripts.
|
|
395
421
|
* Added W3C endpoints to get current window handle and all windows handles.
|
|
396
422
|
|
|
397
|
-
|
|
398
423
|
## v3.3.0
|
|
399
424
|
|
|
400
|
-
* Added warning log messages when the user creates new managed promises, or
|
|
401
|
-
|
|
402
|
-
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
|
|
403
427
|
|
|
404
428
|
```js
|
|
405
429
|
const {logging} = require('selenium-webdriver');
|
|
@@ -408,115 +432,103 @@ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodrive
|
|
|
408
432
|
```
|
|
409
433
|
* If the `JAVA_HOME` environment variable is set, use it to locate java.exe.
|
|
410
434
|
|
|
411
|
-
|
|
412
435
|
## v3.2.0
|
|
413
436
|
|
|
414
437
|
* Release skipped to stay in sync with the main Selenium project.
|
|
415
438
|
|
|
416
|
-
|
|
417
439
|
## v3.1.0
|
|
418
440
|
|
|
419
441
|
* The `lib` package is once again platform agnostic (excluding `lib/devmode`).
|
|
420
442
|
* Deprecated `promise.when(value, callback, errback)`.
|
|
421
443
|
Use `promise.fulfilled(value).then(callback, errback)`
|
|
422
444
|
* Changed `promise.fulfilled(value)`, `promise.rejected(reason)` and
|
|
423
|
-
`promise.defer()` to all use native promises when the promise manager is
|
|
424
|
-
disabled.
|
|
445
|
+
`promise.defer()` to all use native promises when the promise manager is disabled.
|
|
425
446
|
* Properly handle W3C error responses to new session commands.
|
|
426
447
|
* Updated `selenium-webdriver/testing` to export `describe.only` along with
|
|
427
448
|
`describe.skip`.
|
|
428
|
-
* Fixed `selenium-webdriver/lib/until.ableToSwitchToFrame`. It was previously
|
|
429
|
-
|
|
449
|
+
* Fixed `selenium-webdriver/lib/until.ableToSwitchToFrame`. It was previously dropping arguments and
|
|
450
|
+
would never work.
|
|
430
451
|
* Added the ability to use Firefox Nightly
|
|
431
452
|
* If Firefox cannot be found in the default location, look for it on the PATH
|
|
432
453
|
* Allow SafariDriver to use Safari Technology Preview.
|
|
433
|
-
* Use the proper wire command for WebElement.getLocation() and
|
|
434
|
-
|
|
435
|
-
|
|
454
|
+
* Use the proper wire command for WebElement.getLocation() and WebElement.getSize() for W3C
|
|
455
|
+
compliant drivers.
|
|
436
456
|
|
|
437
457
|
## v3.0.1
|
|
438
458
|
|
|
439
459
|
* More API adjustments to align with native Promises
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
* When a `wait()` condition times out, the returned promise will now be
|
|
443
|
-
|
|
444
|
-
* `WebDriver#wait()` will now throw a TypeError if an invalid wait condition is
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
impacts when the promise manager is disabled).
|
|
448
|
-
|
|
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).
|
|
449
467
|
|
|
450
468
|
## v3.0.0
|
|
451
469
|
|
|
452
470
|
* (__NOTICE__) The minimum supported version of Node is now 6.9.0 LTS
|
|
453
|
-
* Removed support for the SafariDriver browser extension. This has been
|
|
454
|
-
|
|
471
|
+
* Removed support for the SafariDriver browser extension. This has been replaced by Apple's
|
|
472
|
+
safaridriver, which is included wtih Safari 10
|
|
455
473
|
(available on OS X El Capitan and macOS Sierra).
|
|
456
474
|
|
|
457
475
|
To use Safari 9 or older, users will have to use an older version of Selenium.
|
|
458
476
|
|
|
459
477
|
* geckodriver v0.11.0 or newer is now required for Firefox.
|
|
460
|
-
* Fixed potential reference errors in `selenium-webdriver/testing` when users
|
|
461
|
-
|
|
462
|
-
* Fixed `WebDriver.switchTo().activeElement()` to use the correct HTTP method
|
|
463
|
-
|
|
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.
|
|
464
482
|
* Update the `selenium-webdriver/firefox` module to use geckodriver's
|
|
465
483
|
"moz:firefoxOptions" dictionary for Firefox-specific configuration values.
|
|
466
|
-
* Extending the `selenium-webdriver/testing` module to support tests defined
|
|
467
|
-
|
|
484
|
+
* Extending the `selenium-webdriver/testing` module to support tests defined using generator
|
|
485
|
+
functions.
|
|
468
486
|
* The promise manager can be disabled by setting an enviornment variable:
|
|
469
|
-
`SELENIUM_PROMISE_MANAGER=0`. This is part of a larger plan to remove the
|
|
470
|
-
|
|
487
|
+
`SELENIUM_PROMISE_MANAGER=0`. This is part of a larger plan to remove the promise manager, as
|
|
488
|
+
documented at
|
|
471
489
|
<https://github.com/SeleniumHQ/selenium/issues/2969>
|
|
472
490
|
* When communicating with a W3C-compliant remote end, use the atoms library for
|
|
473
|
-
the `WebElement.getAttribute()` and `WebElement.isDisplayed()` commands. This
|
|
474
|
-
|
|
475
|
-
|
|
491
|
+
the `WebElement.getAttribute()` and `WebElement.isDisplayed()` commands. This behavior is
|
|
492
|
+
consistent with the java, .net, python, and ruby clients.
|
|
476
493
|
|
|
477
494
|
### API Changes
|
|
478
495
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
`build()`.
|
|
494
|
-
|
|
495
|
-
|
|
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()`.
|
|
496
510
|
|
|
497
511
|
## v3.0.0-beta-3
|
|
498
512
|
|
|
499
|
-
* Fixed a bug where the promise manager would silently drop callbacks after
|
|
500
|
-
|
|
501
|
-
* Added the `firefox.ServiceBuilder` class, which may be used to customize the
|
|
502
|
-
|
|
503
|
-
* Added support for Safari 10 safaridriver. safaridriver may be disabled
|
|
504
|
-
|
|
505
|
-
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.
|
|
506
519
|
* Updated the `lib/proxy` module to support configuring a SOCKS proxy.
|
|
507
|
-
* For the `promise.ControlFlow`, fire the "uncaughtException" event in a new
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
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.
|
|
512
524
|
|
|
513
525
|
### API Changes
|
|
514
526
|
|
|
515
|
-
* Added `remote.DriverService.Builder` as a base class for configuring
|
|
516
|
-
|
|
527
|
+
* Added `remote.DriverService.Builder` as a base class for configuring DriverService instances that
|
|
528
|
+
run in a child-process. The
|
|
517
529
|
`chrome.ServiceBuilder`, `edge.ServiceBuilder`, and `opera.ServiceBuilder`
|
|
518
530
|
classes now all extend this base class with browser-specific options.
|
|
519
|
-
* For each of the ServiceBuilder
|
|
531
|
+
* For each of the ServiceBuilder classes, renamed `usingPort` and
|
|
520
532
|
`withEnvironment` to `setPort` and `setEnvironment`, respectively.
|
|
521
533
|
* Renamed `chrome.ServiceBuilder#setUrlBasePath` to `#setPath`
|
|
522
534
|
* Changed the signature of the `firefox.Driver` from `(config, flow, executor)`
|
|
@@ -525,144 +537,129 @@ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodrive
|
|
|
525
537
|
`selenium-webdriver` module (these were previously only available from
|
|
526
538
|
`lib/webdriver`).
|
|
527
539
|
|
|
528
|
-
|
|
529
540
|
### Changes for W3C WebDriver Spec Compliance
|
|
530
541
|
|
|
531
542
|
* Updated command mappings for [getting](https://w3c.github.io/webdriver/webdriver-spec.html#get-window-position)
|
|
532
543
|
and [setting](https://w3c.github.io/webdriver/webdriver-spec.html#set-window-position)
|
|
533
544
|
the window position.
|
|
534
545
|
|
|
535
|
-
|
|
536
546
|
## v3.0.0-beta-2
|
|
537
547
|
|
|
538
548
|
### API Changes
|
|
539
549
|
|
|
540
550
|
* Moved the `builder.Builder` class into the main module (`selenium-webdriver`).
|
|
541
551
|
* Removed the `builder` module.
|
|
542
|
-
* Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a
|
|
543
|
-
remote machine.
|
|
544
|
-
|
|
552
|
+
* Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a remote machine.
|
|
545
553
|
|
|
546
554
|
## v3.0.0-beta-1
|
|
547
555
|
|
|
548
556
|
* Allow users to set the agent used for HTTP connections through
|
|
549
|
-
|
|
557
|
+
`builder.Builder#usingHttpAgent()`
|
|
550
558
|
* Added new wait conditions: `until.urlIs()`, `until.urlContains()`,
|
|
551
|
-
|
|
559
|
+
`until.urlMatches()`
|
|
552
560
|
* Added work around for [GeckoDriver bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1274924)
|
|
553
|
-
|
|
561
|
+
raising a type conversion error
|
|
554
562
|
* Internal cleanup replacing uses of managed promises with native promises
|
|
555
563
|
* Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
|
|
556
564
|
* Fixed timeouts' URL
|
|
557
565
|
* Properly send HTTP requests when using a WebDriver server proxy
|
|
558
566
|
* Properly configure proxies when using the geckodriver
|
|
559
|
-
* `http.Executor` now accepts a promised client. The `builder.Builder` class
|
|
560
|
-
|
|
561
|
-
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.
|
|
562
569
|
* For Chrome and Firefox, the `builder.Builder` class will always return an
|
|
563
|
-
instanceof `chrome.Driver` and `firefox.Driver`, respectively, even when
|
|
564
|
-
|
|
570
|
+
instanceof `chrome.Driver` and `firefox.Driver`, respectively, even when configured to use a
|
|
571
|
+
remote server (from `builder.Builder#usingServer(url)`,
|
|
565
572
|
`SELENIUM_REMOTE_URL`, etc).
|
|
566
573
|
|
|
567
574
|
### API Changes
|
|
568
575
|
|
|
569
576
|
* `promise.Deferred` is no longer a thenable object.
|
|
570
|
-
* `Options#addCookie()` now takes a record object instead of 7 individual
|
|
571
|
-
|
|
572
|
-
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.
|
|
573
579
|
* When adding cookies, the desired expiry must be provided as a Date or in
|
|
574
|
-
_seconds_ since epoch. When retrieving cookies, the expiration is always
|
|
575
|
-
returned in seconds.
|
|
580
|
+
_seconds_ since epoch. When retrieving cookies, the expiration is always returned in seconds.
|
|
576
581
|
* Renamed `firefox.Options#useMarionette` to `firefox.Options#useGeckoDriver`
|
|
577
582
|
* Removed deprecated modules:
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
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.
|
|
582
586
|
* Removed deprecated types:
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
- `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`)
|
|
591
594
|
* Removed deprecated functions:
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
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()`
|
|
604
607
|
* Removed deprecated properties:
|
|
605
|
-
|
|
606
|
-
|
|
608
|
+
- `WebDriverError#code`
|
|
607
609
|
|
|
608
610
|
## v2.53.2
|
|
609
611
|
|
|
610
|
-
* Changed `io.exists()` to return a rejected promise if the input path is not
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
Sorry for the churn!
|
|
615
|
-
* FIXED: capabilities serialization now properly handles undefined vs.
|
|
616
|
-
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.
|
|
617
616
|
* FIXED: properly handle responses from the remote end in
|
|
618
|
-
|
|
617
|
+
`WebDriver.attachToSession`
|
|
619
618
|
|
|
620
619
|
## v2.53.1
|
|
621
620
|
|
|
622
621
|
* FIXED: for consistency with the other language bindings, `remote.FileDetector`
|
|
623
|
-
|
|
622
|
+
will ignore paths that refer to a directory.
|
|
624
623
|
|
|
625
624
|
## v2.53.0
|
|
626
625
|
|
|
627
626
|
### Change Summary
|
|
628
627
|
|
|
629
|
-
* Added preliminary support for Marionette, Mozilla's WebDriver implementation
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
* Moved all logic for parsing and interpreting responses from the remote end
|
|
634
|
-
|
|
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.
|
|
635
634
|
* For consistency with the other Selenium language bindings,
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
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:
|
|
639
638
|
|
|
640
639
|
driver.findElements(By.css('.foo')).then(found => !!found.length);
|
|
641
640
|
* Added support for W3C-spec compliant servers.
|
|
642
641
|
* For consistent naming, deprecating `error.InvalidSessionIdError` in favor of
|
|
643
|
-
|
|
644
|
-
* Moved the `error` module to `lib/error` so all core modules are co-located.
|
|
645
|
-
|
|
646
|
-
* Moved `until.Condition` and `until.WebElementCondition` to the webdriver
|
|
647
|
-
|
|
648
|
-
* Added support for setting the username and password in basic auth pop-up
|
|
649
|
-
|
|
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).
|
|
650
649
|
* Deprecated `WebElement#getInnerHtml()` and `WebEleemnt#getOuterHtml()`
|
|
651
650
|
* Deprecated `Promise#thenCatch()` - use `Promise#catch()` instead
|
|
652
651
|
* Deprecated `Promise#thenFinally()` - use `promise.thenFinally()` instead
|
|
653
|
-
* FIXED: `io.findInPath()` will no longer match against directories that have
|
|
654
|
-
|
|
655
|
-
* FIXED: `phantomjs.Driver` now takes a third argument that defines the path to
|
|
656
|
-
|
|
657
|
-
|
|
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.
|
|
658
657
|
|
|
659
658
|
### Changes for W3C WebDriver Spec Compliance
|
|
660
659
|
|
|
661
|
-
* Changed `element.sendKeys(...)` to send the key sequence as an array where
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
at the protocol level and should have no user-visible effect.
|
|
665
|
-
|
|
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.
|
|
666
663
|
|
|
667
664
|
## v2.52.0
|
|
668
665
|
|
|
@@ -676,51 +673,47 @@ the selenium-webdriver package README.
|
|
|
676
673
|
### Change Summary
|
|
677
674
|
|
|
678
675
|
* Add support for Microsoft's Edge web browser
|
|
679
|
-
* Added `webdriver.Builder#buildAsync()`, which returns a promise that will be
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
"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.
|
|
687
683
|
* Added `promise.Promise#catch()` for API compatibility with native Promises.
|
|
688
|
-
|
|
689
|
-
delegates to `catch`.
|
|
684
|
+
`promise.Promise#thenCatch()` is not yet deprecated, but it simply delegates to `catch`.
|
|
690
685
|
* Changed some `io` operations to use native promises.
|
|
691
|
-
* Changed `command.Executor#execute()` and `HttpClient#send()` to return
|
|
692
|
-
|
|
686
|
+
* Changed `command.Executor#execute()` and `HttpClient#send()` to return promises instead of using
|
|
687
|
+
callback passing.
|
|
693
688
|
* Replaced the `Serializable` class with an internal, Symbol-defined method.
|
|
694
689
|
* Changed the `Capabilities` class to extend the native `Map` type.
|
|
695
690
|
* Changed the `Capabilities.has(key)` to only test if a capability has been set
|
|
696
|
-
|
|
691
|
+
(Map semantics). To check whether the value is true, use `get(key)`.
|
|
697
692
|
* Deprecated `executors.DeferredExecutor` in favor of
|
|
698
|
-
|
|
699
|
-
* API documentation is no longer distributed with the npm package, but remains
|
|
700
|
-
|
|
701
|
-
* Rewrote the `error` module to export an Error subtype for each type of error
|
|
702
|
-
|
|
703
|
-
* Changed the `http.Request` and `http.Response` classes to store headers in
|
|
704
|
-
|
|
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.
|
|
705
700
|
* Updated `ws` dependency to version `1.0.1`.
|
|
706
701
|
* Removed fluent predicates "is" and "not" from the experimental
|
|
707
|
-
|
|
708
|
-
* Wait conditions that locate an element, or that wait on an element's state,
|
|
709
|
-
|
|
710
|
-
* Lots of internal clean-up to break selenium-webdriver's long standing
|
|
711
|
-
|
|
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.
|
|
712
707
|
|
|
713
708
|
### Changes for W3C WebDriver Spec Compliance
|
|
714
709
|
|
|
715
|
-
* Updated the `By` locators that are not in the W3C spec to delegated to using
|
|
716
|
-
|
|
717
|
-
|
|
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`.
|
|
718
712
|
|
|
719
713
|
## v2.49-51
|
|
720
714
|
|
|
721
715
|
* _Releases skipped to stay in sync with the rest of the Selenium project_
|
|
722
716
|
|
|
723
|
-
|
|
724
717
|
## v2.48.2
|
|
725
718
|
|
|
726
719
|
* Added `WebElement#takeScreenshot()`.
|
|
@@ -728,24 +721,22 @@ the selenium-webdriver package README.
|
|
|
728
721
|
|
|
729
722
|
## v2.48.1
|
|
730
723
|
|
|
731
|
-
* FIXED: Adjusted how the control flow tracks promise callbacks to avoid a
|
|
732
|
-
potential deadlock.
|
|
724
|
+
* FIXED: Adjusted how the control flow tracks promise callbacks to avoid a potential deadlock.
|
|
733
725
|
|
|
734
726
|
## v2.48.0
|
|
735
727
|
|
|
736
|
-
* Node v0.12.x users must run with --harmony. _This is the last release that
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
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.
|
|
746
737
|
* FIXED: do not drop user auth from the WebDriver server URL.
|
|
747
|
-
* FIXED: a single `firefox.Binary` instance may be used to configure and
|
|
748
|
-
|
|
738
|
+
* FIXED: a single `firefox.Binary` instance may be used to configure and launch multiple
|
|
739
|
+
FirefoxDriver sessions.
|
|
749
740
|
|
|
750
741
|
var binary = new firefox.Binary();
|
|
751
742
|
var options = new firefox.Options().setBinary(binary);
|
|
@@ -754,11 +745,11 @@ the selenium-webdriver package README.
|
|
|
754
745
|
var driver1 = builder.build();
|
|
755
746
|
var driver2 = builder.build();
|
|
756
747
|
|
|
757
|
-
* FIXED: zip files created for transfer to a remote WebDriver server are no
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
* FIXED: Surfaced the `loopback` option to `remote/SeleniumServer`. When set,
|
|
761
|
-
|
|
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.
|
|
762
753
|
|
|
763
754
|
## v2.47.0
|
|
764
755
|
|
|
@@ -773,21 +764,21 @@ continue to be supported, but will require setting the `--harmony` flag.
|
|
|
773
764
|
|
|
774
765
|
* Add support for [Node v4.0.0](https://nodejs.org/en/blog/release/v4.0.0/)
|
|
775
766
|
* Updated `ws` dependency from `0.7.1` to `0.8.0`
|
|
776
|
-
* Bumped the minimum supported version of Node from `0.10.x` to `0.12.x`. This
|
|
777
|
-
|
|
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`.
|
|
778
769
|
|
|
779
770
|
## v2.46.1
|
|
780
771
|
|
|
781
772
|
* Fixed internal module loading on Windows.
|
|
782
773
|
* Fixed error message format on timeouts for `until.elementLocated()`
|
|
783
|
-
|
|
774
|
+
and `until.elementsLocated()`.
|
|
784
775
|
|
|
785
776
|
## v2.46.0
|
|
786
777
|
|
|
787
778
|
* Exposed a new logging API via the `webdriver.logging` module. For usage, see
|
|
788
|
-
|
|
789
|
-
* Added support for using a proxy server for WebDriver commands.
|
|
790
|
-
|
|
779
|
+
`example/logging.js`.
|
|
780
|
+
* Added support for using a proxy server for WebDriver commands. See `Builder#usingWebDriverProxy()`
|
|
781
|
+
for more info.
|
|
791
782
|
* Removed deprecated functions:
|
|
792
783
|
* Capabilities#toJSON()
|
|
793
784
|
* UnhandledAlertError#getAlert()
|
|
@@ -798,32 +789,30 @@ continue to be supported, but will require setting the `--harmony` flag.
|
|
|
798
789
|
* promise.ControlFlow#clearHistory()
|
|
799
790
|
* promise.ControlFlow#getHistory()
|
|
800
791
|
* Removed deprecated enum values: `ErrorCode.NO_MODAL_DIALOG_OPEN` and
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
* FIXED: The `promise.ControlFlow` will maintain state for promise chains
|
|
804
|
-
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.
|
|
805
795
|
* FIXED: Correct serialize target elements used in an action sequence.
|
|
806
|
-
* FIXED: `promise.ControlFlow#wait()` now has consistent semantics for an
|
|
807
|
-
|
|
808
|
-
* FIXED: `remote.DriverService#start()` will now fail if the child process dies
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
* FIXED: Skip launching Firefox with the `-silent` flag to preheat the profile.
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
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.
|
|
819
808
|
|
|
820
809
|
## v2.45.1
|
|
821
810
|
|
|
822
|
-
* FIXED: 8548: Task callbacks are once again dropped if the task was cancelled
|
|
823
|
-
|
|
824
|
-
* FIXED: 8496: Extended the `chrome.Options` API to cover all configuration
|
|
825
|
-
|
|
826
|
-
|
|
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).
|
|
827
816
|
|
|
828
817
|
## v2.45.0
|
|
829
818
|
|
|
@@ -839,10 +828,10 @@ major version release (i.e. 1.0.0).
|
|
|
839
828
|
|
|
840
829
|
* Added native browser support for Internet Explorer, Opera 26+, and Safari
|
|
841
830
|
* With the release of [Node 0.12.0](http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/)
|
|
842
|
-
|
|
831
|
+
(finally!), the minimum supported version of Node is now `0.10.x`.
|
|
843
832
|
* The `promise` module is now [Promises/A+](https://promisesaplus.com/)
|
|
844
|
-
|
|
845
|
-
|
|
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:
|
|
846
835
|
|
|
847
836
|
var promise = require('selenium-webdriver').promise;
|
|
848
837
|
console.log('start');
|
|
@@ -861,12 +850,11 @@ major version release (i.e. 1.0.0).
|
|
|
861
850
|
// end
|
|
862
851
|
// middle
|
|
863
852
|
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
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:
|
|
870
858
|
|
|
871
859
|
var driver = new webdriver.Builder().forBrowser('chrome').build();
|
|
872
860
|
driver.get('http://www.google.com/ncr');
|
|
@@ -876,7 +864,7 @@ major version release (i.e. 1.0.0).
|
|
|
876
864
|
}, 2000, 'element not found');
|
|
877
865
|
});
|
|
878
866
|
|
|
879
|
-
|
|
867
|
+
This code will fail an error like:
|
|
880
868
|
|
|
881
869
|
Error: element not found
|
|
882
870
|
Wait timed out after 2002ms
|
|
@@ -886,36 +874,31 @@ major version release (i.e. 1.0.0).
|
|
|
886
874
|
From: Task: WebDriver.call(function)
|
|
887
875
|
at <stack trace>
|
|
888
876
|
|
|
889
|
-
* Changed the format of strings returned by `promise.ControlFlow#getSchedule`.
|
|
890
|
-
|
|
891
|
-
|
|
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.
|
|
892
880
|
* Deprecating `promise.ControlFlow#getHistory`,
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
usage included in `test/upload_test.js`
|
|
901
|
-
* Expanded the interactions API to include touch actions.
|
|
902
|
-
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()`.
|
|
903
888
|
* FIXED: 8380: `firefox.Driver` will delete its temporary profile on `quit`.
|
|
904
889
|
* FIXED: 8306: Stack overflow in promise callbacks eliminated.
|
|
905
|
-
* FIXED: 8221: Added support for defining custom command mappings. Includes
|
|
906
|
-
|
|
907
|
-
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).
|
|
908
892
|
* FIXED: 8128: When the FirefoxDriver marshals an object to the page for
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
* FIXED: 8094: The control flow will no longer deadlock when a task returns
|
|
913
|
-
|
|
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.
|
|
914
898
|
|
|
915
899
|
## v2.44.0
|
|
916
900
|
|
|
917
|
-
* Added the `until` module, which defines common explicit wait conditions.
|
|
918
|
-
Sample usage:
|
|
901
|
+
* Added the `until` module, which defines common explicit wait conditions. Sample usage:
|
|
919
902
|
|
|
920
903
|
var firefox = require('selenium-webdriver/firefox'),
|
|
921
904
|
until = require('selenium-webdriver/until');
|
|
@@ -924,46 +907,43 @@ major version release (i.e. 1.0.0).
|
|
|
924
907
|
driver.get('http://www.google.com/ncr');
|
|
925
908
|
driver.wait(until.titleIs('Google Search'), 1000);
|
|
926
909
|
|
|
927
|
-
* FIXED: 8000: `Builder.forBrowser()` now accepts an empty string since some
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
* FIXED: 7994: The `stacktrace` module will not modify stack traces if the
|
|
931
|
-
|
|
932
|
-
* FIXED: 5855: Added a module (`until`) that defines several common conditions
|
|
933
|
-
|
|
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.
|
|
934
917
|
|
|
935
918
|
## v2.43.5
|
|
936
919
|
|
|
937
|
-
* FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for
|
|
938
|
-
chaining.
|
|
920
|
+
* FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for chaining.
|
|
939
921
|
|
|
940
922
|
## v2.43.2-4
|
|
941
923
|
|
|
942
|
-
* No changes; version bumps while attempting to work around an issue with
|
|
943
|
-
|
|
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).
|
|
944
926
|
|
|
945
927
|
## v2.43.1
|
|
946
928
|
|
|
947
|
-
* Fixed an issue with flakiness when setting up the Firefox profile that could
|
|
948
|
-
|
|
929
|
+
* Fixed an issue with flakiness when setting up the Firefox profile that could prevent the driver
|
|
930
|
+
from initializing properly.
|
|
949
931
|
|
|
950
932
|
## v2.43.0
|
|
951
933
|
|
|
952
|
-
* Added native support for Firefox - the Java Selenium server is no longer
|
|
953
|
-
required.
|
|
934
|
+
* Added native support for Firefox - the Java Selenium server is no longer required.
|
|
954
935
|
* Added support for generator functions to `ControlFlow#execute` and
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
* Various improvements to the `Builder` API. Notably, the `build()` function
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
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.
|
|
967
947
|
|
|
968
948
|
var webdriver = require('selenium-webdriver')
|
|
969
949
|
chrome = require('selenium-webdriver/chrome');
|
|
@@ -974,16 +954,14 @@ major version release (i.e. 1.0.0).
|
|
|
974
954
|
|
|
975
955
|
* Promise A+ compliance: a promise may no longer resolve to itself.
|
|
976
956
|
* For consistency with other language bindings, deprecated
|
|
977
|
-
|
|
978
|
-
|
|
957
|
+
`UnhandledAlertError#getAlert` and added `#getAlertText`.
|
|
958
|
+
`getAlert` will be removed in `2.45.0`.
|
|
979
959
|
* FIXED: 7641: Deprecated `ErrorCode.NO_MODAL_DIALOG_OPEN` and
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
* FIXED: 7470: Make it easier to create WebDriver instances in custom flows for
|
|
986
|
-
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.
|
|
987
965
|
|
|
988
966
|
## v2.42.1
|
|
989
967
|
|
|
@@ -994,12 +972,11 @@ major version release (i.e. 1.0.0).
|
|
|
994
972
|
## v2.42.0
|
|
995
973
|
|
|
996
974
|
* Removed deprecated functions `Promise#addCallback()`,
|
|
997
|
-
|
|
975
|
+
`Promise#addCallbacks()`, `Promise#addErrback()`, and `Promise#addBoth()`.
|
|
998
976
|
* Fail with a more descriptive error if the server returns a malformed redirect
|
|
999
|
-
* FIXED: 7300: Connect to ChromeDriver using the loopback address since
|
|
1000
|
-
|
|
1001
|
-
* FIXED: 7339: Preserve wrapped test function's string representation for
|
|
1002
|
-
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.
|
|
1003
980
|
|
|
1004
981
|
## v2.41.0
|
|
1005
982
|
|
|
@@ -1010,10 +987,10 @@ major version release (i.e. 1.0.0).
|
|
|
1010
987
|
|
|
1011
988
|
* API documentation is now included in the docs directory.
|
|
1012
989
|
* Added utility functions for working with an array of promises:
|
|
1013
|
-
|
|
990
|
+
`promise.all`, `promise.map`, and `promise.filter`
|
|
1014
991
|
* Introduced `Promise#thenCatch()` and `Promise#thenFinally()`.
|
|
1015
992
|
* Deprecated `Promise#addCallback()`, `Promise#addCallbacks()`,
|
|
1016
|
-
|
|
993
|
+
`Promise#addErrback()`, and `Promise#addBoth()`.
|
|
1017
994
|
* Removed deprecated function `webdriver.WebDriver#getCapability`.
|
|
1018
995
|
* FIXED: 6826: Added support for custom locators.
|
|
1019
996
|
|
|
@@ -1023,28 +1000,26 @@ major version release (i.e. 1.0.0).
|
|
|
1023
1000
|
|
|
1024
1001
|
## v2.38.1
|
|
1025
1002
|
|
|
1026
|
-
* FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op
|
|
1027
|
-
|
|
1003
|
+
* FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op if the deferred has
|
|
1004
|
+
already been resolved.
|
|
1028
1005
|
|
|
1029
1006
|
## v2.38.0
|
|
1030
1007
|
|
|
1031
|
-
* When a promise is rejected, always annotate the stacktrace with the parent
|
|
1032
|
-
|
|
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.
|
|
1033
1010
|
* Updated tests to reflect features not working correctly in the SafariDriver
|
|
1034
|
-
|
|
1035
|
-
* FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not
|
|
1036
|
-
|
|
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)).
|
|
1037
1014
|
* FIXED: 6471: Updated documentation on `webdriver.WebElement#getAttribute`
|
|
1038
|
-
* FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to
|
|
1039
|
-
|
|
1040
|
-
* FIXED: 6617: Avoid triggering the node debugger when initializing the
|
|
1041
|
-
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.
|
|
1042
1018
|
* FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.
|
|
1043
1019
|
|
|
1044
1020
|
## v2.37.0
|
|
1045
1021
|
|
|
1046
|
-
* FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using
|
|
1047
|
-
the `jvmArgs` option.
|
|
1022
|
+
* FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using the `jvmArgs` option.
|
|
1048
1023
|
|
|
1049
1024
|
## v2.36.0
|
|
1050
1025
|
|
|
@@ -1064,20 +1039,18 @@ major version release (i.e. 1.0.0).
|
|
|
1064
1039
|
|
|
1065
1040
|
## v2.34.1
|
|
1066
1041
|
|
|
1067
|
-
* FIXED: 6079: The parent process should not wait for spawn driver service
|
|
1068
|
-
|
|
1042
|
+
* FIXED: 6079: The parent process should not wait for spawn driver service processes (chromedriver,
|
|
1043
|
+
phantomjs, etc.)
|
|
1069
1044
|
|
|
1070
1045
|
## v2.34.0
|
|
1071
1046
|
|
|
1072
|
-
* Added the `selenium-webdriver/testing/assert` module. This module
|
|
1073
|
-
|
|
1074
|
-
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).
|
|
1075
1049
|
* Added the `webdriver.Capabilities` class.
|
|
1076
|
-
* Added native support for the ChromeDriver. When using the `Builder`,
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
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.
|
|
1081
1054
|
|
|
1082
1055
|
// Will start ChromeDriver locally.
|
|
1083
1056
|
var driver = new webdriver.Builder().
|
|
@@ -1091,15 +1064,14 @@ major version release (i.e. 1.0.0).
|
|
|
1091
1064
|
build();
|
|
1092
1065
|
|
|
1093
1066
|
* Added support for configuring proxies through the builder. For examples, see
|
|
1094
|
-
|
|
1067
|
+
`selenium-webdriver/test/proxy_test`.
|
|
1095
1068
|
* Added native support for PhantomJS.
|
|
1096
1069
|
* Changed signature of `SeleniumServer` to `SeleniumServer(jar, options)`.
|
|
1097
|
-
* Tests are now included in the npm published package. See `README.md` for
|
|
1098
|
-
execution instructions
|
|
1070
|
+
* Tests are now included in the npm published package. See `README.md` for execution instructions
|
|
1099
1071
|
* Removed the deprecated `webdriver.Deferred#resolve` and
|
|
1100
|
-
|
|
1101
|
-
* Removed the ability to connect to an existing session from the Builder. This
|
|
1102
|
-
|
|
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.
|
|
1103
1075
|
|
|
1104
1076
|
## v2.33.0
|
|
1105
1077
|
|
|
@@ -1109,33 +1081,32 @@ major version release (i.e. 1.0.0).
|
|
|
1109
1081
|
## v2.32.1
|
|
1110
1082
|
|
|
1111
1083
|
* FIXED: 5541: Added missing return statement for windows in
|
|
1112
|
-
|
|
1084
|
+
`portprober.findFreePort()`
|
|
1113
1085
|
|
|
1114
1086
|
## v2.32.0
|
|
1115
1087
|
|
|
1116
|
-
* Added the `selenium-webdriver/testing` package, which provides a basic
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
* For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured
|
|
1120
|
-
|
|
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.
|
|
1121
1093
|
* Removed deprecated functions originally scheduled for removal in 2.31.0
|
|
1122
1094
|
* promise.Application.getInstance()
|
|
1123
1095
|
* promise.ControlFlow#schedule()
|
|
1124
1096
|
* promise.ControlFlow#scheduleTimeout()
|
|
1125
1097
|
* promise.ControlFlow#scheduleWait()
|
|
1126
|
-
* Renamed some functions for consistency with Promises/A+ terminology. The
|
|
1127
|
-
|
|
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:
|
|
1128
1100
|
* promise.resolved() -> promise.fulfilled()
|
|
1129
1101
|
* promise.Deferred#resolve() -> promise.Deferred#fulfill()
|
|
1130
|
-
* FIXED: remote.SeleniumServer#stop now shuts down within the active control
|
|
1131
|
-
|
|
1102
|
+
* FIXED: remote.SeleniumServer#stop now shuts down within the active control flow, allowing scripts
|
|
1103
|
+
to finish. Use #kill to shutdown immediately.
|
|
1132
1104
|
* FIXED: 5321: cookie deletion commands
|
|
1133
1105
|
|
|
1134
1106
|
## v2.31.0
|
|
1135
1107
|
|
|
1136
1108
|
* Added an example script.
|
|
1137
|
-
* Added a class for controlling the standalone Selenium server (server
|
|
1138
|
-
available separately)
|
|
1109
|
+
* Added a class for controlling the standalone Selenium server (server available separately)
|
|
1139
1110
|
* Added a portprober for finding free ports
|
|
1140
1111
|
* FIXED: WebElements now belong to the same flow as their parent driver.
|
|
1141
1112
|
|