-
Added the
until
module, which defines common explicit wait conditions. Sample usage:var firefox = require('selenium-webdriver/firefox'), until = require('selenium-webdriver/until'); var driver = new firefox.Driver(); driver.get('http://www.google.com/ncr'); driver.wait(until.titleIs('Google Search'), 1000);
-
FIXED: 8000:
Builder.forBrowser()
now accepts an empty string since some WebDriver implementations ignore the value. A value must still be specified, however, since it is a required field in WebDriver's wire protocol. -
FIXED: 7994: The
stacktrace
module will not modify stack traces if the initial parse fails (e.g. the user definedError.prepareStackTrace
) -
FIXED: 5855: Added a module (
until
) that defines several common conditions for use with explicit waits. See updated examples for usage.
- FIXED: 7905:
Builder.usingServer(url)
once again returnsthis
for chaining.
- No changes; version bumps while attempting to work around an issue with publishing to npm (a version string may only be used once).
- Fixed an issue with flakiness when setting up the Firefox profile that could prevent the driver from initializing properly.
-
Added native support for Firefox - the Java Selenium server is no longer required.
-
Added support for generator functions to
ControlFlow#execute
andControlFlow#wait
. For more information, see documentation onwebdriver.promise.consume
. Requires harmony support (run withnode --harmony-generators
inv0.11.x
). -
Various improvements to the
Builder
API. Notably, thebuild()
function will no longer default to attempting to use a server athttp://localhost:4444/wd/hub
if it cannot start a browser directly - you must specify the WebDriver server withusingServer(url)
. You can also set the target browser and WebDriver server through a pair of environment variables. See the documentation on theBuilder
constructor for more information. -
For consistency with the other language bindings, added browser specific classes that can be used to start a browser without the builder.
var webdriver = require('selenium-webdriver') chrome = require('selenium-webdriver/chrome'); // The following are equivalent. var driver1 = new webdriver.Builder().forBrowser('chrome').build(); var driver2 = new chrome.Driver();
-
Promise A+ compliance: a promise may no longer resolve to itself.
-
For consistency with other language bindings, deprecated
UnhandledAlertError#getAlert
and added#getAlertText
.getAlert
will be removed in2.45.0
. -
FIXED: 7641: Deprecated
ErrorCode.NO_MODAL_DIALOG_OPEN
andErrorCode.MODAL_DIALOG_OPENED
in favor of the newErrorCode.NO_SUCH_ALERT
andErrorCode.UNEXPECTED_ALERT_OPEN
, respecitvely. -
FIXED: 7563: Mocha integration no longer disables timeouts. Default Mocha timeouts apply (2000 ms) and may be changed using
this.timeout(ms)
. -
FIXED: 7470: Make it easier to create WebDriver instances in custom flows for parallel execution.
- FIXED: 7465: Fixed
net.getLoopbackAddress
on Windows - FIXED: 7277: Support
done
callback in Mocha's BDD interface - FIXED: 7156:
Promise#thenFinally
should not suppress original error
- Removed deprecated functions
Promise#addCallback()
,Promise#addCallbacks()
,Promise#addErrback()
, andPromise#addBoth()
. - Fail with a more descriptive error if the server returns a malformed redirect
- FIXED: 7300: Connect to ChromeDriver using the loopback address since ChromeDriver 2.10.267517 binds to localhost by default.
- FIXED: 7339: Preserve wrapped test function's string representation for Mocha's BDD interface.
- FIXED: 7138: export logging API from webdriver module.
- FIXED: 7105: beforeEach/it/afterEach properly bind
this
for Mocha tests.
- API documentation is now included in the docs directory.
- Added utility functions for working with an array of promises:
promise.all
,promise.map
, andpromise.filter
- Introduced
Promise#thenCatch()
andPromise#thenFinally()
. - Deprecated
Promise#addCallback()
,Promise#addCallbacks()
,Promise#addErrback()
, andPromise#addBoth()
. - Removed deprecated function
webdriver.WebDriver#getCapability
. - FIXED: 6826: Added support for custom locators.
- Version bump to stay in sync with the Selenium project.
- FIXED: 6686: Changed
webdriver.promise.Deferred#cancel()
to silently no-op if the deferred has already been resolved.
- When a promise is rejected, always annotate the stacktrace with the parent flow state so users can identify the source of an error.
- Updated tests to reflect features not working correctly in the SafariDriver (cookie management and proxy support; see issues 5051, 5212, and 5503)
- FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not specified as a function argument (instead of passing (0,0)).
- FIXED: 6471: Updated documentation on
webdriver.WebElement#getAttribute
- FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to retrieve the current system's port range.
- FIXED: 6617: Avoid triggering the node debugger when initializing the stacktrace module.
- FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.
- FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using
the
jvmArgs
option.
- Release skipped to stay in sync with main Selenium project.
- FIXED: 6200: Pass arguments to the Selenium server instead of to the JVM.
- FIXED: 6090: Changed example scripts to use chromedriver.
- Version bump to stay in sync with the Selenium project.
- FIXED: 6079: The parent process should not wait for spawn driver service processes (chromedriver, phantomjs, etc.)
-
Added the
selenium-webdriver/testing/assert
module. This module simplifies writing assertions against promised values (see example in module documentation). -
Added the
webdriver.Capabilities
class. -
Added native support for the ChromeDriver. When using the
Builder
, requesting chrome without specifying a remote server URL will default to the native ChromeDriver implementation. The ChromeDriver server must be downloaded separately.// Will start ChromeDriver locally. var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build(); // Will start ChromeDriver using the remote server. var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). usingServer('http://server:1234/wd/hub'). build();
-
Added support for configuring proxies through the builder. For examples, see
selenium-webdriver/test/proxy_test
. -
Added native support for PhantomJS.
-
Changed signature of
SeleniumServer
toSeleniumServer(jar, options)
. -
Tests are now included in the npm published package. See
README.md
for execution instructions -
Removed the deprecated
webdriver.Deferred#resolve
andwebdriver.promise.resolved
functions. -
Removed the ability to connect to an existing session from the Builder. This feature is intended for use with the browser-based client.
- Added support for WebDriver's logging API
- FIXED: 5511: Added webdriver.manage().timeouts().pageLoadTimeout(ms)
- FIXED: 5541: Added missing return statement for windows in
portprober.findFreePort()
- Added the
selenium-webdriver/testing
package, which provides a basic framework for writing tests using Mocha. Seeselenium-webdriver/example/google_search_test.js
for usage. - For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured rejections were always Error objects. Rejection reasons are now left as is.
- Removed deprecated functions originally scheduled for removal in 2.31.0
- promise.Application.getInstance()
- promise.ControlFlow#schedule()
- promise.ControlFlow#scheduleTimeout()
- promise.ControlFlow#scheduleWait()
- Renamed some functions for consistency with Promises/A+ terminology. The
original functions have been deprecated and will be removed in 2.34.0:
- promise.resolved() -> promise.fulfilled()
- promise.Deferred#resolve() -> promise.Deferred#fulfill()
- FIXED: remote.SeleniumServer#stop now shuts down within the active control flow, allowing scripts to finish. Use #kill to shutdown immediately.
- FIXED: 5321: cookie deletion commands
- Added an example script.
- Added a class for controlling the standalone Selenium server (server available separately)
- Added a portprober for finding free ports
- FIXED: WebElements now belong to the same flow as their parent driver.
- Ensures promise rejections are always Error values.
- Version bump to keep in sync with the Selenium project.
- Fixed a bug that could lead to an infinite loop.
- Added a README.md
-
Initial release for npm:
npm install selenium-webdriver