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