\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26341}{}\doxysubsection{Bug Fixes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26341}

\begin{DoxyItemize}
\item The Capabilities factory methods should only specify the name of the browser.
\item Protect against the remote end sometimes not returning a list to find\+Elements commands.
\item Properly reset state in {\ttfamily remote.\+Driver\+Service\#kill()}
\item The firefox module will no longer apply the preferences required by the legacy Firefox\+Driver. These preferences were only required when using the legacy driver, support for which was dropped in v3.\+5.\+0.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26342}{}\doxysubsection{API Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26342}

\begin{DoxyItemize}
\item Added new methods to {\ttfamily selenium-\/webdriver/firefox.\+Options}\+:
\begin{DoxyItemize}
\item add\+Arguments()
\item headless()
\item window\+Size()
\end{DoxyItemize}
\item Deprecated {\ttfamily selenium-\/webdriver/firefox/binary.\+Binary}
\item Removed {\ttfamily selenium-\/webdriver/firefox.\+Options\#use\+Gecko\+Driver()}
\item Removed the unused {\ttfamily selenium-\/webdriver/firefox/profile.\+decode()}
\item Removed methods from {\ttfamily selenium-\/webdriver/firefox/profile.\+Profile} that had no effect since support for the legacy Firefox\+Driver was dropped in 3.\+5.\+0\+:
\begin{DoxyItemize}
\item set\+Native\+Events\+Enabled
\item native\+Events\+Enabled
\item get\+Port
\item set\+Port
\end{DoxyItemize}
\item Removed {\ttfamily selenium-\/webdriver/firefox.\+Service\+Builder\#set\+Firefox\+Binary()}; custom binaries should be configured through the {\ttfamily firefox.\+Options} class.
\item Removed {\ttfamily selenium-\/webdriver/firefox.\+Capability}. These hold overs from the legacy Firefox\+Driver are no longer supported.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26343}{}\doxysubsection{Changes for W3\+C Web\+Driver Spec Compliance}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26343}

\begin{DoxyItemize}
\item Deprecated {\ttfamily error.\+Element\+Not\+Visible\+Error} in favor of the more generic {\ttfamily error.\+Element\+Not\+Interactable\+Error}.
\item Support the {\ttfamily http\+Only} option when adding a cookie.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26344}{}\doxysection{v3.\+5.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26344}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26345}{}\doxysubsection{Notice}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26345}
Native support for Firefox 45 (ESR) has been removed. Users will have to connect to a remote Selenium server that supports Firefox 45.\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26346}{}\doxysubsection{Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26346}

\begin{DoxyItemize}
\item Removed native support for Firefox 46 and older.
\begin{DoxyItemize}
\item The {\ttfamily SELENIUM\+\_\+\+MARIONETTE} enviornment variable no longer has an effect.
\item {\ttfamily selenium-\/webdriver/firefox.\+Capability.\+MARIONETTE} is deprecated.
\item {\ttfamily selenium-\/webdriver/firefox.\+Options\#use\+Gecko\+Driver()} is deprecated and now a no-\/op.
\end{DoxyItemize}
\item {\ttfamily firefox.\+Options} will no longer discard the {\ttfamily \char`\"{}moz\+:firefox\+Options\char`\"{}} set in user provided capabilities (via {\ttfamily Builder.\+with\+Capabilities(\{\})}). When both are used, the settings in {\ttfamily firefox.\+Options} will be applied {\itshape last}.
\item Added {\ttfamily chrome.\+Options\#headless()} and {\ttfamily chrome.\+Options\#window\+Size()}, which may be used to start Chrome in headless mode (requires Chrome 59+) and to set the initial window size, respectively.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26347}{}\doxysubsection{Changes for W3\+C Web\+Driver Spec Compliance}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26347}

\begin{DoxyItemize}
\item Added {\ttfamily error.\+Web\+Driver\+Error\#remote\+Stacktrace} to capture the stacktrace reported by a remote Web\+Driver endpoint (if any).
\item Fixed {\ttfamily Web\+Element\#send\+Keys} to send text as a string instead of an array of strings.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26348}{}\doxysection{v3.\+4.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26348}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26349}{}\doxysubsection{Notice}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26349}
This release requires \href{https://github.com/mozilla/geckodriver/releases/tag/v0.15.0}{\texttt{ geckodriver 0.\+15.\+0}} or newer.\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26350}{}\doxysubsection{API Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26350}

\begin{DoxyItemize}
\item Added {\ttfamily Options\#get\+Timeouts()} for retrieving the currently configured session timeouts (i.\+e. implicit wait). This method will only work with W3C compatible Web\+Driver implementations.
\item Deprecated the {\ttfamily Timeouts} class in favor of {\ttfamily Options\#set\+Timeouts()}, which supports setting multiple timeouts at once.
\item Added support for emulating different network conditions (e.\+g., offline, 2G, Wi\+Fi) on Chrome.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26351}{}\doxysubsection{Changes for W3\+C Web\+Driver Spec Compliance}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26351}

\begin{DoxyItemize}
\item Fixed W3C response parsing, which expects response data to always be a JSON object with a {\ttfamily value} key.
\item Added W3C endpoints for interacting with various types of \href{https://w3c.github.io/webdriver/webdriver-spec.html\#user-prompts}{\texttt{ user prompts}}.
\item Added W3C endpoints for remotely executing scripts.
\item Added W3C endpoints to get current window handle and all windows handles.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26352}{}\doxysection{v3.\+3.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26352}

\begin{DoxyItemize}
\item Added warning log messages when the user creates new managed promises, or schedules unchained tasks. Users may opt in to printing these log messages with
\end{DoxyItemize}


\begin{DoxyCode}{0}
\DoxyCodeLine{const \{logging\} = require('selenium-\/webdriver');}
\DoxyCodeLine{logging.installConsoleHandler();}
\DoxyCodeLine{logging.getLogger('promise.ControlFlow').setLevel(logging.Level.WARNING);}

\end{DoxyCode}

\begin{DoxyItemize}
\item If the {\ttfamily JAVA\+\_\+\+HOME} environment variable is set, use it to locate java.\+exe.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26353}{}\doxysection{v3.\+2.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26353}

\begin{DoxyItemize}
\item Release skipped to stay in sync with the main Selenium project.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26354}{}\doxysection{v3.\+1.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26354}

\begin{DoxyItemize}
\item The {\ttfamily lib} package is once again platform agnostic (excluding {\ttfamily lib/devmode}).
\item Deprecated {\ttfamily promise.\+when(value, callback, errback)}. Use {\ttfamily promise.\+fulfilled(value).then(callback, errback)}
\item Changed {\ttfamily promise.\+fulfilled(value)}, {\ttfamily promise.\+rejected(reason)} and {\ttfamily promise.\+defer()} to all use native promises when the promise manager is disabled.
\item Properly handle W3C error responses to new session commands.
\item Updated {\ttfamily selenium-\/webdriver/testing} to export {\ttfamily describe.\+only} along with {\ttfamily describe.\+skip}.
\item Fixed {\ttfamily selenium-\/webdriver/lib/until.\+able\+To\+Switch\+To\+Frame}. It was previously dropping arguments and would never work.
\item Added the ability to use Firefox Nightly
\item If Firefox cannot be found in the default location, look for it on the PATH
\item Allow Safari\+Driver to use Safari Technology Preview.
\item Use the proper wire command for Web\+Element.\+get\+Location() and Web\+Element.\+get\+Size() for W3C compliant drivers.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26355}{}\doxysection{v3.\+0.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26355}

\begin{DoxyItemize}
\item More API adjustments to align with native Promises
\begin{DoxyItemize}
\item Deprecated {\ttfamily promise.\+fulfilled(value)}, use {\ttfamily promise.\+Promise\#resolve(value)}
\item Deprecated {\ttfamily promise.\+rejected(reason)}, use {\ttfamily promise.\+Promise\#reject(reason)}
\end{DoxyItemize}
\item When a {\ttfamily wait()} condition times out, the returned promise will now be rejected with an {\ttfamily error.\+Timeout\+Error} instead of a generic {\ttfamily Error} object.
\item {\ttfamily Web\+Driver\#wait()} will now throw a Type\+Error if an invalid wait condition is provided.
\item Properly catch unhandled promise rejections with an action sequence (only impacts when the promise manager is disabled).
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26356}{}\doxysection{v3.\+0.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26356}

\begin{DoxyItemize}
\item ({\bfseries{NOTICE}}) The minimum supported version of Node is now 6.\+9.\+0 LTS
\item Removed support for the Safari\+Driver browser extension. This has been replaced by Apple\textquotesingle{}s safaridriver, which is included wtih Safari 10 (available on OS X El Capitan and mac\+OS Sierra).

To use Safari 9 or older, users will have to use an older version of Selenium.
\item geckodriver v0.\+11.\+0 or newer is now required for Firefox.
\item Fixed potential reference errors in {\ttfamily selenium-\/webdriver/testing} when users create a cycle with mocha by running with mocha\textquotesingle{}s {\ttfamily -\/-\/hook} flag.
\item Fixed {\ttfamily Web\+Driver.\+switch\+To().active\+Element()} to use the correct HTTP method for compatibility with the W3C spec.
\item Update the {\ttfamily selenium-\/webdriver/firefox} module to use geckodriver\textquotesingle{}s \char`\"{}moz\+:firefox\+Options\char`\"{} dictionary for Firefox-\/specific configuration values.
\item Extending the {\ttfamily selenium-\/webdriver/testing} module to support tests defined using generator functions.
\item The promise manager can be disabled by setting an enviornment variable\+: {\ttfamily SELENIUM\+\_\+\+PROMISE\+\_\+\+MANAGER=0}. This is part of a larger plan to remove the promise manager, as documented at \href{https://github.com/SeleniumHQ/selenium/issues/2969}{\texttt{ https\+://github.\+com/\+Selenium\+HQ/selenium/issues/2969}}
\item When communicating with a W3\+C-\/compliant remote end, use the atoms library for the {\ttfamily Web\+Element.\+get\+Attribute()} and {\ttfamily Web\+Element.\+is\+Displayed()} commands. This behavior is consistent with the java, .net, python, and ruby clients.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26357}{}\doxysubsection{API Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26357}

\begin{DoxyItemize}
\item Removed {\ttfamily safari.\+Options\#use\+Legacy\+Driver()}
\item Reduced the API on {\ttfamily promise.\+Thenable} for compatibility with native promises\+:
\begin{DoxyItemize}
\item Removed {\ttfamily \#is\+Pending()}
\item Removed {\ttfamily \#cancel()}
\item Removed {\ttfamily \#finally()}
\end{DoxyItemize}
\item Changed all subclasses of {\ttfamily webdriver.\+Web\+Driver} to overload the static function {\ttfamily Web\+Driver.\+create\+Session()} instead of doing work in the constructor. All constructors now inherit the base class\textquotesingle{} function signature. Users are still encouraged to use the {\ttfamily Builder} class instead of creating drivers directly.
\item {\ttfamily Builder\#build()} now returns a \char`\"{}thenable\char`\"{} Web\+Driver instance, allowing users to immediately schedule commands (as before), or issue them through standard promise callbacks. This is the same pattern already employed for Web\+Elements.
\item Removed {\ttfamily Builder\#build\+Async()} as it was redundant with the new semantics of {\ttfamily build()}.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26358}{}\doxysection{v3.\+0.\+0-\/beta-\/3}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26358}

\begin{DoxyItemize}
\item Fixed a bug where the promise manager would silently drop callbacks after recovering from an unhandled promise rejection.
\item Added the {\ttfamily firefox.\+Service\+Builder} class, which may be used to customize the geckodriver used for {\ttfamily firefox.\+Driver} instances.
\item Added support for Safari 10 safaridriver. safaridriver may be disabled via tha API, {\ttfamily safari.\+Options\#use\+Legacy\+Driver}, to use the safari extension driver.
\item Updated the {\ttfamily lib/proxy} module to support configuring a SOCKS proxy.
\item For the {\ttfamily promise.\+Control\+Flow}, fire the \char`\"{}uncaught\+Exception\char`\"{} event in a new turn of the JS event loop. As a result of this change, any errors thrown by an event listener will propagate to the global error handler. Previously, this event was fired with in the context of a (native) promise callback, causing errors to be silently suppressed in the promise chain.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26359}{}\doxysubsection{API Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26359}

\begin{DoxyItemize}
\item Added {\ttfamily remote.\+Driver\+Service.\+Builder} as a base class for configuring Driver\+Service instances that run in a child-\/process. The {\ttfamily chrome.\+Service\+Builder}, {\ttfamily edge.\+Service\+Builder}, and {\ttfamily opera.\+Service\+Builder} classes now all extend this base class with browser-\/specific options.
\item For each of the Service\+Builder clases, renamed {\ttfamily using\+Port} and {\ttfamily with\+Environment} to {\ttfamily set\+Port} and {\ttfamily set\+Environment}, respectively.
\item Renamed {\ttfamily chrome.\+Service\+Builder\#set\+Url\+Base\+Path} to {\ttfamily \#set\+Path}
\item Changed the signature of the {\ttfamily firefox.\+Driver} from {\ttfamily (config, flow, executor)} to {\ttfamily (config, executor, flow)}.
\item Exposed the {\ttfamily Condition} and {\ttfamily Web\+Element\+Condition} classes from the top-\/level {\ttfamily selenium-\/webdriver} module (these were previously only available from {\ttfamily lib/webdriver}).
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26360}{}\doxysubsection{Changes for W3\+C Web\+Driver Spec Compliance}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26360}

\begin{DoxyItemize}
\item Updated command mappings for \href{https://w3c.github.io/webdriver/webdriver-spec.html\#get-window-position}{\texttt{ getting}} and \href{https://w3c.github.io/webdriver/webdriver-spec.html\#set-window-position}{\texttt{ setting}} the window position.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26361}{}\doxysection{v3.\+0.\+0-\/beta-\/2}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26361}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26362}{}\doxysubsection{API Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26362}

\begin{DoxyItemize}
\item Moved the {\ttfamily builder.\+Builder} class into the main module ({\ttfamily selenium-\/webdriver}).
\item Removed the {\ttfamily builder} module.
\item Fix {\ttfamily webdriver.\+Web\+Driver\#set\+File\+Detector} when driving Chrome or Firefox on a remote machine.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26363}{}\doxysection{v3.\+0.\+0-\/beta-\/1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26363}

\begin{DoxyItemize}
\item Allow users to set the agent used for HTTP connections through {\ttfamily builder.\+Builder\#using\+Http\+Agent()}
\item Added new wait conditions\+: {\ttfamily until.\+url\+Is()}, {\ttfamily until.\+url\+Contains()}, {\ttfamily until.\+url\+Matches()}
\item Added work around for \href{https://bugzilla.mozilla.org/show_bug.cgi?id=1274924}{\texttt{ Gecko\+Driver bug}} raising a type conversion error
\item Internal cleanup replacing uses of managed promises with native promises
\item Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
\item Fixed timeouts\textquotesingle{} URL
\item Properly send HTTP requests when using a Web\+Driver server proxy
\item Properly configure proxies when using the geckodriver
\item {\ttfamily http.\+Executor} now accepts a promised client. The {\ttfamily builder.\+Builder} class will now use this instead of a {\ttfamily command.\+Deferred\+Executor} when creating Web\+Driver instances.
\item For Chrome and Firefox, the {\ttfamily builder.\+Builder} class will always return an instanceof {\ttfamily chrome.\+Driver} and {\ttfamily firefox.\+Driver}, respectively, even when configured to use a remote server (from {\ttfamily builder.\+Builder\#using\+Server(url)}, {\ttfamily SELENIUM\+\_\+\+REMOTE\+\_\+\+URL}, etc).
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26364}{}\doxysubsection{API Changes}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26364}

\begin{DoxyItemize}
\item {\ttfamily promise.\+Deferred} is no longer a thenable object.
\item {\ttfamily Options\#add\+Cookie()} now takes a record object instead of 7 individual parameters. A Type\+Error will be thrown if add\+Cookie() is called with invalid arguments.
\item When adding cookies, the desired expiry must be provided as a Date or in {\itshape seconds} since epoch. When retrieving cookies, the expiration is always returned in seconds.
\item Renamed {\ttfamily firefox.\+Options\#use\+Marionette} to {\ttfamily firefox.\+Options\#use\+Gecko\+Driver}
\item Removed deprecated modules\+:
\begin{DoxyItemize}
\item {\ttfamily selenium-\/webdriver/error} (use {\ttfamily selenium-\/webdriver/lib/error},\textbackslash{} or the {\ttfamily error} property exported by {\ttfamily selenium-\/webdriver})
\item {\ttfamily selenium-\/webdriver/executors} — this was not previously deprecated, but is no longer used.
\end{DoxyItemize}
\item Removed deprecated types\+:
\begin{DoxyItemize}
\item {\ttfamily command.\+Deferred\+Executor} — this was not previously deprecated, but is no longer used. It can be trivially implemented by clients should it be needed.
\item {\ttfamily error.\+Invalid\+Session\+Id\+Error} (use {\ttfamily error.\+No\+Such\+Session\+Error})
\item {\ttfamily executors.\+Deferred\+Executor}
\item {\ttfamily until.\+Condition} (use {\ttfamily webdriver.\+Condition})
\item {\ttfamily until.\+Web\+Element\+Condition} (use {\ttfamily webdriver.\+Web\+Element\+Condition})
\item {\ttfamily webdriver.\+Unhandled\+Alert\+Error} (use {\ttfamily error.\+Unexpected\+Alert\+Open\+Error})
\end{DoxyItemize}
\item Removed deprecated functions\+:
\begin{DoxyItemize}
\item {\ttfamily Deferred\#cancel()}
\item {\ttfamily Deferred\#catch()}
\item {\ttfamily Deferred\#finally()}
\item {\ttfamily Deferred\#is\+Pending()}
\item {\ttfamily Deferred\#then()}
\item {\ttfamily Promise\#then\+Catch()}
\item {\ttfamily Promise\#then\+Finally()}
\item {\ttfamily Web\+Driver\#is\+Element\+Present()}
\item {\ttfamily Web\+Element\#get\+Inner\+Html()}
\item {\ttfamily Web\+Element\#get\+Outer\+Html()}
\item {\ttfamily Web\+Element\#get\+Raw\+Id()}
\item {\ttfamily Web\+Element\#is\+Element\+Present()}
\end{DoxyItemize}
\item Removed deprecated properties\+:
\begin{DoxyItemize}
\item {\ttfamily Web\+Driver\+Error\#code}
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26365}{}\doxysection{v2.\+53.\+2}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26365}

\begin{DoxyItemize}
\item Changed {\ttfamily io.\+exists()} to return a rejected promise if the input path is not a string
\item Deprecated {\ttfamily Promise\#then\+Finally()} -\/ use {\ttfamily Promise\#finally()}. The then\+Finally shim added to the promise module in v2.\+53.\+0 will be removed in v3.\+0 Sorry for the churn!
\item FIXED\+: capabilities serialization now properly handles undefined vs. false-\/like values.
\item FIXED\+: properly handle responses from the remote end in {\ttfamily Web\+Driver.\+attach\+To\+Session}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26366}{}\doxysection{v2.\+53.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26366}

\begin{DoxyItemize}
\item FIXED\+: for consistency with the other language bindings, {\ttfamily remote.\+File\+Detector} will ignore paths that refer to a directory.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26367}{}\doxysection{v2.\+53.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26367}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26368}{}\doxysubsection{Change Summary}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26368}

\begin{DoxyItemize}
\item Added preliminary support for Marionette, Mozilla\textquotesingle{}s Web\+Driver implementation for Firefox. Marionette may be enabled via the API, {\ttfamily firefox.\+Options\#use\+Marionette}, or by setting the {\ttfamily SELENIUM\+\_\+\+MARIONETTE} environment variable.
\item Moved all logic for parsing and interpreting responses from the remote end into the individual {\ttfamily command.\+Executor} implementations.
\item For consistency with the other Selenium language bindings, {\ttfamily Web\+Driver\#is\+Element\+Present()} and {\ttfamily Web\+Element\#is\+Element\+Present()} have been deprecated. These methods will be removed in v3.\+0. Use the find\+Elements command to test for the presence of an element\+:

driver.\+find\+Elements(By.\+css(\textquotesingle{}.foo\textquotesingle{})).then(found =$>$ !!found.length);
\item Added support for W3\+C-\/spec compliant servers.
\item For consistent naming, deprecating {\ttfamily error.\+Invalid\+Session\+Id\+Error} in favor of {\ttfamily error.\+No\+Such\+Session\+Error}.
\item Moved the {\ttfamily error} module to {\ttfamily lib/error} so all core modules are co-\/located. The top-\/level {\ttfamily error} module will be removed in v3.\+0.
\item Moved {\ttfamily until.\+Condition} and {\ttfamily until.\+Web\+Element\+Condition} to the webdriver module to break a circular dependency.
\item Added support for setting the username and password in basic auth pop-\/up dialogs (currently IE only).
\item Deprecated {\ttfamily Web\+Element\#get\+Inner\+Html()} and {\ttfamily Web\+Eleemnt\#get\+Outer\+Html()}
\item Deprecated {\ttfamily Promise\#then\+Catch()} -\/ use {\ttfamily Promise\#catch()} instead
\item Deprecated {\ttfamily Promise\#then\+Finally()} -\/ use {\ttfamily promise.\+then\+Finally()} instead
\item FIXED\+: {\ttfamily io.\+find\+In\+Path()} will no longer match against directories that have the same basename as the target file.
\item FIXED\+: {\ttfamily phantomjs.\+Driver} now takes a third argument that defines the path to a log file to use for the phantomjs executable\textquotesingle{}s output. This may be quickly set at runtime with the {\ttfamily SELENIUM\+\_\+\+PHANTOMJS\+\_\+\+LOG} environment variable.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26369}{}\doxysubsection{Changes for W3\+C Web\+Driver Spec Compliance}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26369}

\begin{DoxyItemize}
\item Changed {\ttfamily element.\+send\+Keys(...)} to send the key sequence as an array where each element defines a single key. The legacy wire protocol permits arrays where each element is a string of arbitrary length. This change is solely at the protocol level and should have no user-\/visible effect.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26370}{}\doxysection{v2.\+52.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26370}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26371}{}\doxysubsection{Notice}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26371}
Starting with v2.\+52.\+0, each release of selenium-\/webdriver will support the latest {\itshape minor} LTS and stable Node releases. All releases between the LTS and stable release will have best effort support. Further details are available in the selenium-\/webdriver package README.\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26372}{}\doxysubsection{Change Summary}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26372}

\begin{DoxyItemize}
\item Add support for Microsoft\textquotesingle{}s Edge web browser
\item Added {\ttfamily webdriver.\+Builder\#build\+Async()}, which returns a promise that will be fulfilled with the newly created Web\+Driver instance once the associated browser has been full initialized. This is purely a convenient alternative to the existing build() method as the Web\+Driver class will always defer commands until it has a fully created browser.
\item Added {\ttfamily firefox.\+Profile\#set\+Host()} which may be used to set the host that the Firefox\+Driver\textquotesingle{}s server listens for commands on. The server uses \char`\"{}localhost\char`\"{} by default.
\item Added {\ttfamily promise.\+Promise\#catch()} for API compatibility with native Promises. {\ttfamily promise.\+Promise\#then\+Catch()} is not yet deprecated, but it simply delegates to {\ttfamily catch}.
\item Changed some {\ttfamily io} operations to use native promises.
\item Changed {\ttfamily command.\+Executor\#execute()} and {\ttfamily Http\+Client\#send()} to return promises instead of using callback passing.
\item Replaced the {\ttfamily Serializable} class with an internal, Symbol-\/defined method.
\item Changed the {\ttfamily Capabilities} class to extend the native {\ttfamily Map} type.
\item Changed the {\ttfamily Capabilities.\+has(key)} to only test if a capability has been set (Map semantics). To check whether the value is true, use {\ttfamily get(key)}.
\item Deprecated {\ttfamily executors.\+Deferred\+Executor} in favor of {\ttfamily lib/command.\+Deferred\+Executor}.
\item API documentation is no longer distributed with the npm package, but remains available at \href{http://seleniumhq.github.io/selenium/docs/api/javascript/}{\texttt{ http\+://seleniumhq.\+github.\+io/selenium/docs/api/javascript/}}
\item Rewrote the {\ttfamily error} module to export an Error subtype for each type of error defined in the \href{https://w3c.github.io/webdriver/webdriver-spec.html\#handling-errors}{\texttt{ W3C Web\+Driver spec}}.
\item Changed the {\ttfamily http.\+Request} and {\ttfamily http.\+Response} classes to store headers in maps instead of object literals.
\item Updated {\ttfamily ws} dependency to version {\ttfamily 1.\+0.\+1}.
\item Removed fluent predicates \char`\"{}is\char`\"{} and \char`\"{}not\char`\"{} from the experimental {\ttfamily testing/assert} module.
\item Wait conditions that locate an element, or that wait on an element\textquotesingle{}s state, will return a Web\+Element\+Promise.
\item Lots of internal clean-\/up to break selenium-\/webdriver\textquotesingle{}s long standing dependency on Google\textquotesingle{}s Closure library.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26373}{}\doxysubsection{Changes for W3\+C Web\+Driver Spec Compliance}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26373}

\begin{DoxyItemize}
\item Updated the {\ttfamily By} locators that are not in the W3C spec to delegated to using CSS selectors\+: {\ttfamily By.\+class\+Name}, {\ttfamily By.\+id}, {\ttfamily By.\+name}, and {\ttfamily By.\+tag\+Name}.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26374}{}\doxysection{v2.\+49-\/51}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26374}

\begin{DoxyItemize}
\item {\itshape Releases skipped to stay in sync with the rest of the Selenium project}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26375}{}\doxysection{v2.\+48.\+2}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26375}

\begin{DoxyItemize}
\item Added {\ttfamily Web\+Element\#take\+Screenshot()}.
\item More adjustments to promise callback tracking.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26376}{}\doxysection{v2.\+48.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26376}

\begin{DoxyItemize}
\item FIXED\+: Adjusted how the control flow tracks promise callbacks to avoid a potential deadlock.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26377}{}\doxysection{v2.\+48.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26377}

\begin{DoxyItemize}
\item Node v0.\+12.\+x users must run with --harmony. {\itshape This is the last release that will support v0.\+12.\+x}
\item FIXED\+: (Promise/\+A+ compliance) When a promise is rejected with a thenable, the promise adopts the thenable as its rejection reason instead of waiting for it to settle. The previous (incorrect) behavior was hidden by bugs in the {\ttfamily promises-\/aplus-\/tests} compliance test suite that were fixed in version {\ttfamily 2.\+1.\+1}.
\item FIXED\+: the {\ttfamily webdriver.\+promise.\+Control\+Flow} now has a consistent execution order for tasks/callbacks scheduled in different turns of the JS event loop. Refer to the {\ttfamily webdriver.\+promise} documentation for more details.
\item FIXED\+: do not drop user auth from the Web\+Driver server URL.
\item FIXED\+: a single {\ttfamily firefox.\+Binary} instance may be used to configure and launch multiple Firefox\+Driver sessions.

var binary = new firefox.\+Binary(); var options = new firefox.\+Options().set\+Binary(binary); var builder = new Builder().set\+Firefox\+Options(options);

var driver1 = builder.\+build(); var driver2 = builder.\+build();
\item FIXED\+: zip files created for transfer to a remote Web\+Driver server are no longer compressed. If the zip contained a file that was already compressed, the server would return an \char`\"{}invalid code lengths set\char`\"{} error.
\item FIXED\+: Surfaced the {\ttfamily loopback} option to {\ttfamily remote/\+Selenium\+Server}. When set, the server will be accessed using the current host\textquotesingle{}s loopback address.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26378}{}\doxysection{v2.\+47.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26378}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26379}{}\doxysubsection{Notice}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26379}
This is the last release for {\ttfamily selenium-\/webdriver} that will support ES5. Subsequent releases will depend on ES6 features that are enabled by \href{https://nodejs.org/en/docs/es6/}{\texttt{ default}} in Node v4.\+0.\+0. Node v0.\+12.\+x will continue to be supported, but will require setting the {\ttfamily -\/-\/harmony} flag.\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26380}{}\doxysubsection{Change Summary}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26380}

\begin{DoxyItemize}
\item Add support for \href{https://nodejs.org/en/blog/release/v4.0.0/}{\texttt{ Node v4.\+0.\+0}}
\begin{DoxyItemize}
\item Updated {\ttfamily ws} dependency from {\ttfamily 0.\+7.\+1} to {\ttfamily 0.\+8.\+0}
\end{DoxyItemize}
\item Bumped the minimum supported version of Node from {\ttfamily 0.\+10.\+x} to {\ttfamily 0.\+12.\+x}. This is in accordance with the Node support policy established in {\ttfamily v2.\+45.\+0}.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26381}{}\doxysection{v2.\+46.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26381}

\begin{DoxyItemize}
\item Fixed internal module loading on Windows.
\item Fixed error message format on timeouts for {\ttfamily until.\+element\+Located()} and {\ttfamily until.\+elements\+Located()}.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26382}{}\doxysection{v2.\+46.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26382}

\begin{DoxyItemize}
\item Exposed a new logging API via the {\ttfamily webdriver.\+logging} module. For usage, see {\ttfamily example/logging.\+js}.
\item Added support for using a proxy server for Web\+Driver commands. See {\ttfamily Builder\#using\+Web\+Driver\+Proxy()} for more info.
\item Removed deprecated functions\+:
\begin{DoxyItemize}
\item Capabilities\+::to\+JSON()
\item Unhandled\+Alert\+Error\+::get\+Alert()
\item chrome.\+create\+Driver()
\item phantomjs.\+create\+Driver()
\item promise.\+Control\+Flow\+::annotate\+Error()
\item promise.\+Control\+Flow\+::await()
\item promise.\+Control\+Flow\+::clear\+History()
\item promise.\+Control\+Flow\+::get\+History()
\end{DoxyItemize}
\item Removed deprecated enum values\+: {\ttfamily Error\+Code.\+NO\+\_\+\+MODAL\+\_\+\+DIALOG\+\_\+\+OPEN} and {\ttfamily Error\+Code.\+MODAL\+\_\+\+DIALOG\+\_\+\+OPENED}. Use {\ttfamily Error\+Code.\+NO\+\_\+\+SUCH\+\_\+\+ALERT} and {\ttfamily Error\+Code.\+UNEXPECTED\+\_\+\+ALERT\+\_\+\+OPEN}, respectively.
\item FIXED\+: The {\ttfamily promise.\+Control\+Flow} will maintain state for promise chains generated in a loop.
\item FIXED\+: Correct serialize target elements used in an action sequence.
\item FIXED\+: {\ttfamily promise.\+Control\+Flow\#wait()} now has consistent semantics for an omitted or 0-\/timeout\+: it will wait indefinitely.
\item FIXED\+: {\ttfamily remote.\+Driver\+Service\#start()} will now fail if the child process dies while waiting for the server to start accepting requests. Previously, start would continue to poll the server address until the timeout expired.
\item FIXED\+: Skip launching Firefox with the {\ttfamily -\/silent} flag to preheat the profile. Starting with Firefox 38, this would cause the browser to crash. This step, which was first introduced for Selenium\textquotesingle{}s java client back with Firefox 2, no longer appears to be required.
\item FIXED\+: 8564\+: {\ttfamily firefox.\+Driver\#quit()} will wait for the Firefox process to terminate before deleting the temporary webdriver profile. This eliminates a race condition where Firefox would write profile data during shutdown, causing the {\ttfamily rm -\/rf} operation on the profile directory to fail.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26383}{}\doxysection{v2.\+45.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26383}

\begin{DoxyItemize}
\item FIXED\+: 8548\+: Task callbacks are once again dropped if the task was cancelled due to a previously uncaught error within the frame.
\item FIXED\+: 8496\+: Extended the {\ttfamily chrome.\+Options} API to cover all configuration options (e.\+g. mobile emulation and performance logging) documented on the Chrome\+Driver \href{https://sites.google.com/a/chromium.org/chromedriver/capabilities}{\texttt{ project site}}.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26384}{}\doxysection{v2.\+45.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26384}
\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26385}{}\doxysubsection{Important Policy Change}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26385}
Starting with the 2.\+45.\+0 release, selenium-\/webdriver will support the last two stable minor releases for Node. For 2.\+45.\+0, this means Selenium will support Node 0.\+10.\+x and 0.\+12.\+x. Support for the intermediate, un-\/stable release (0.\+11.\+x) is \char`\"{}best-\/effort\char`\"{}. This policy will be re-\/evaluated once Node has a major version release (i.\+e. 1.\+0.\+0).\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26386}{}\doxysubsection{Change Summary}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26386}

\begin{DoxyItemize}
\item Added native browser support for Internet Explorer, Opera 26+, and Safari
\item With the release of \href{http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/}{\texttt{ Node 0.\+12.\+0}} (finally!), the minimum supported version of Node is now {\ttfamily 0.\+10.\+x}.
\item The {\ttfamily promise} module is now \href{https://promisesaplus.com/}{\texttt{ Promises/\+A+}} compliant. The biggest compliance change is that promise callbacks are now invoked in a future turn of the JS event loop. For example\+: \begin{DoxyVerb}var promise = require('selenium-webdriver').promise;
console.log('start');
promise.fulfilled().then(function() {
  console.log('middle');
});
console.log('end');

// Output in selenium-webdriver@2.44.0
// start
// middle
// end
//
// Output in selenium-webdriver@2.45.0
// start
// end
// middle
\end{DoxyVerb}
 The {\ttfamily promise.\+Control\+Flow} class has been updated to track the asynchronous breaks required by Promises/\+A+, so there are no changes to task execution order.
\item Updated how errors are annotated on failures. When a task fails, the stacktrace from when that task was scheduled is appended to the rejection reason with a {\ttfamily From\+:} prefix (if it is an Error object). For example\+: \begin{DoxyVerb}var driver = new webdriver.Builder().forBrowser('chrome').build();
driver.get('http://www.google.com/ncr');
driver.call(function() {
  driver.wait(function() {
    return driver.isElementPresent(webdriver.By.id('not-there'));
  }, 2000, 'element not found');
});
\end{DoxyVerb}
 This code will fail an error like\+: \begin{DoxyVerb}Error: element not found
Wait timed out after 2002ms
    at <stack trace>
From: Task: element not found
    at <stack trace>
From: Task: WebDriver.call(function)
    at <stack trace>
\end{DoxyVerb}

\item Changed the format of strings returned by {\ttfamily promise.\+Control\+Flow\#get\+Schedule}. This function now accepts a boolean to control whether the returned string should include the stacktraces for when each task was scheduled.
\item Deprecating {\ttfamily promise.\+Control\+Flow\#get\+History}, {\ttfamily promise.\+Control\+Flow\#clear\+History}, and {\ttfamily promise.\+Control\+Flow\#annotate\+Error}. These functions were all intended for internal use and are no longer necessary, so they have been made no-\/ops.
\item {\ttfamily Web\+Driver.\+wait()} may now be used to wait for a promise to resolve, with an optional timeout. Refer to the API documentation for more information.
\item Added support for copying files to a remote Selenium via {\ttfamily send\+Keys} to test file uploads. Refer to the API documentation for more information. Sample usage included in {\ttfamily test/upload\+\_\+test.\+js}
\item Expanded the interactions API to include touch actions. See {\ttfamily Web\+Driver.\+touch\+Actions()}.
\item FIXED\+: 8380\+: {\ttfamily firefox.\+Driver} will delete its temporary profile on {\ttfamily quit}.
\item FIXED\+: 8306\+: Stack overflow in promise callbacks eliminated.
\item FIXED\+: 8221\+: Added support for defining custom command mappings. Includes support for Phantom\+JS\textquotesingle{}s {\ttfamily execute\+Phantom\+JS} (requires Phantom\+JS 1.\+9.\+7 or Ghost\+Driver 1.\+1.\+0).
\item FIXED\+: 8128\+: When the Firefox\+Driver marshals an object to the page for {\ttfamily execute\+Script}, it defines additional properties (required by the driver\textquotesingle{}s implementation). These properties will no longer be enumerable and should be omitted (i.\+e. they won\textquotesingle{}t show up in JSON.\+stringify output).
\item FIXED\+: 8094\+: The control flow will no longer deadlock when a task returns a promise that depends on the completion of sub-\/tasks.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26387}{}\doxysection{v2.\+44.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26387}

\begin{DoxyItemize}
\item Added the {\ttfamily until} module, which defines common explicit wait conditions. Sample usage\+: \begin{DoxyVerb}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);
\end{DoxyVerb}

\item FIXED\+: 8000\+: {\ttfamily Builder.\+for\+Browser()} now accepts an empty string since some Web\+Driver implementations ignore the value. A value must still be specified, however, since it is a required field in Web\+Driver\textquotesingle{}s wire protocol.
\item FIXED\+: 7994\+: The {\ttfamily stacktrace} module will not modify stack traces if the initial parse fails (e.\+g. the user defined {\ttfamily Error.\+prepare\+Stack\+Trace})
\item FIXED\+: 5855\+: Added a module ({\ttfamily until}) that defines several common conditions for use with explicit waits. See updated examples for usage.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26388}{}\doxysection{v2.\+43.\+5}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26388}

\begin{DoxyItemize}
\item FIXED\+: 7905\+: {\ttfamily Builder.\+using\+Server(url)} once again returns {\ttfamily this} for chaining.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26389}{}\doxysection{v2.\+43.\+2-\/4}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26389}

\begin{DoxyItemize}
\item No changes; version bumps while attempting to work around an issue with publishing to npm (a version string may only be used once).
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26390}{}\doxysection{v2.\+43.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26390}

\begin{DoxyItemize}
\item Fixed an issue with flakiness when setting up the Firefox profile that could prevent the driver from initializing properly.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26391}{}\doxysection{v2.\+43.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26391}

\begin{DoxyItemize}
\item Added native support for Firefox -\/ the Java Selenium server is no longer required.
\item Added support for generator functions to {\ttfamily Control\+Flow\#execute} and {\ttfamily Control\+Flow\#wait}. For more information, see documentation on {\ttfamily webdriver.\+promise.\+consume}. Requires harmony support (run with {\ttfamily node -\/-\/harmony-\/generators} in {\ttfamily v0.\+11.\+x}).
\item Various improvements to the {\ttfamily Builder} API. Notably, the {\ttfamily build()} function will no longer default to attempting to use a server at {\ttfamily \href{http://localhost:4444/wd/hub}{\texttt{ http\+://localhost\+:4444/wd/hub}}} if it cannot start a browser directly -\/ you must specify the Web\+Driver server with {\ttfamily using\+Server(url)}. You can also set the target browser and Web\+Driver server through a pair of environment variables. See the documentation on the {\ttfamily Builder} constructor for more information.
\item For consistency with the other language bindings, added browser specific classes that can be used to start a browser without the builder. \begin{DoxyVerb}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();
\end{DoxyVerb}

\item Promise A+ compliance\+: a promise may no longer resolve to itself.
\item For consistency with other language bindings, deprecated {\ttfamily Unhandled\+Alert\+Error\#get\+Alert} and added {\ttfamily \#get\+Alert\+Text}. {\ttfamily get\+Alert} will be removed in {\ttfamily 2.\+45.\+0}.
\item FIXED\+: 7641\+: Deprecated {\ttfamily Error\+Code.\+NO\+\_\+\+MODAL\+\_\+\+DIALOG\+\_\+\+OPEN} and {\ttfamily Error\+Code.\+MODAL\+\_\+\+DIALOG\+\_\+\+OPENED} in favor of the new {\ttfamily Error\+Code.\+NO\+\_\+\+SUCH\+\_\+\+ALERT} and {\ttfamily Error\+Code.\+UNEXPECTED\+\_\+\+ALERT\+\_\+\+OPEN}, respectively.
\item FIXED\+: 7563\+: Mocha integration no longer disables timeouts. Default Mocha timeouts apply (2000 ms) and may be changed using {\ttfamily this.\+timeout(ms)}.
\item FIXED\+: 7470\+: Make it easier to create Web\+Driver instances in custom flows for parallel execution.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26392}{}\doxysection{v2.\+42.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26392}

\begin{DoxyItemize}
\item FIXED\+: 7465\+: Fixed {\ttfamily net.\+get\+Loopback\+Address} on Windows
\item FIXED\+: 7277\+: Support {\ttfamily done} callback in Mocha\textquotesingle{}s BDD interface
\item FIXED\+: 7156\+: {\ttfamily Promise\#then\+Finally} should not suppress original error
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26393}{}\doxysection{v2.\+42.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26393}

\begin{DoxyItemize}
\item Removed deprecated functions {\ttfamily Promise\#add\+Callback()}, {\ttfamily Promise\#add\+Callbacks()}, {\ttfamily Promise\#add\+Errback()}, and {\ttfamily Promise\#add\+Both()}.
\item Fail with a more descriptive error if the server returns a malformed redirect
\item FIXED\+: 7300\+: Connect to Chrome\+Driver using the loopback address since Chrome\+Driver 2.\+10.\+267517 binds to localhost by default.
\item FIXED\+: 7339\+: Preserve wrapped test function\textquotesingle{}s string representation for Mocha\textquotesingle{}s BDD interface.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26394}{}\doxysection{v2.\+41.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26394}

\begin{DoxyItemize}
\item FIXED\+: 7138\+: export logging API from webdriver module.
\item FIXED\+: 7105\+: before\+Each/it/after\+Each properly bind {\ttfamily this} for Mocha tests.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26395}{}\doxysection{v2.\+40.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26395}

\begin{DoxyItemize}
\item API documentation is now included in the docs directory.
\item Added utility functions for working with an array of promises\+: {\ttfamily promise.\+all}, {\ttfamily promise.\+map}, and {\ttfamily promise.\+filter}
\item Introduced {\ttfamily Promise\#then\+Catch()} and {\ttfamily Promise\#then\+Finally()}.
\item Deprecated {\ttfamily Promise\#add\+Callback()}, {\ttfamily Promise\#add\+Callbacks()}, {\ttfamily Promise\#add\+Errback()}, and {\ttfamily Promise\#add\+Both()}.
\item Removed deprecated function {\ttfamily webdriver.\+Web\+Driver\#get\+Capability}.
\item FIXED\+: 6826\+: Added support for custom locators.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26396}{}\doxysection{v2.\+39.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26396}

\begin{DoxyItemize}
\item Version bump to stay in sync with the Selenium project.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26397}{}\doxysection{v2.\+38.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26397}

\begin{DoxyItemize}
\item FIXED\+: 6686\+: Changed {\ttfamily webdriver.\+promise.\+Deferred\#cancel()} to silently no-\/op if the deferred has already been resolved.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26398}{}\doxysection{v2.\+38.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26398}

\begin{DoxyItemize}
\item When a promise is rejected, always annotate the stacktrace with the parent flow state so users can identify the source of an error.
\item Updated tests to reflect features not working correctly in the Safari\+Driver (cookie management and proxy support; see issues 5051, 5212, and 5503)
\item FIXED\+: 6284\+: For mouse moves, correctly omit the x/y offsets if not specified as a function argument (instead of passing (0,0)).
\item FIXED\+: 6471\+: Updated documentation on {\ttfamily webdriver.\+Web\+Element\#get\+Attribute}
\item FIXED\+: 6612\+: On Unix, use the default IANA ephemeral port range if unable to retrieve the current system\textquotesingle{}s port range.
\item FIXED\+: 6617\+: Avoid triggering the node debugger when initializing the stacktrace module.
\item FIXED\+: 6627\+: Safely rebuild chrome.\+Options from a partial JSON spec.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26399}{}\doxysection{v2.\+37.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26399}

\begin{DoxyItemize}
\item FIXED\+: 6346\+: The remote.\+Selenium\+Server class now accepts JVM arguments using the {\ttfamily jvm\+Args} option.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26400}{}\doxysection{v2.\+36.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26400}

\begin{DoxyItemize}
\item {\itshape Release skipped to stay in sync with main Selenium project.}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26401}{}\doxysection{v2.\+35.\+2}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26401}

\begin{DoxyItemize}
\item FIXED\+: 6200\+: Pass arguments to the Selenium server instead of to the JVM.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26402}{}\doxysection{v2.\+35.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26402}

\begin{DoxyItemize}
\item FIXED\+: 6090\+: Changed example scripts to use chromedriver.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26403}{}\doxysection{v2.\+35.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26403}

\begin{DoxyItemize}
\item Version bump to stay in sync with the Selenium project.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26404}{}\doxysection{v2.\+34.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26404}

\begin{DoxyItemize}
\item FIXED\+: 6079\+: The parent process should not wait for spawn driver service processes (chromedriver, phantomjs, etc.)
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26405}{}\doxysection{v2.\+34.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26405}

\begin{DoxyItemize}
\item Added the {\ttfamily selenium-\/webdriver/testing/assert} module. This module simplifies writing assertions against promised values (see example in module documentation).
\item Added the {\ttfamily webdriver.\+Capabilities} class.
\item Added native support for the Chrome\+Driver. When using the {\ttfamily Builder}, requesting chrome without specifying a remote server URL will default to the native Chrome\+Driver implementation. The \href{https://code.google.com/p/chromedriver/downloads/list}{\texttt{ Chrome\+Driver server}} must be downloaded separately. \begin{DoxyVerb}// 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();
\end{DoxyVerb}

\item Added support for configuring proxies through the builder. For examples, see {\ttfamily selenium-\/webdriver/test/proxy\+\_\+test}.
\item Added native support for Phantom\+JS.
\item Changed signature of {\ttfamily Selenium\+Server} to {\ttfamily Selenium\+Server(jar, options)}.
\item Tests are now included in the npm published package. See {\ttfamily README.\+md} for execution instructions
\item Removed the deprecated {\ttfamily webdriver.\+Deferred\#resolve} and {\ttfamily webdriver.\+promise.\+resolved} functions.
\item Removed the ability to connect to an existing session from the Builder. This feature is intended for use with the browser-\/based client.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26406}{}\doxysection{v2.\+33.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26406}

\begin{DoxyItemize}
\item Added support for Web\+Driver\textquotesingle{}s logging API
\item FIXED\+: 5511\+: Added webdriver.\+manage().timeouts().page\+Load\+Timeout(ms)
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26407}{}\doxysection{v2.\+32.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26407}

\begin{DoxyItemize}
\item FIXED\+: 5541\+: Added missing return statement for windows in {\ttfamily portprober.\+find\+Free\+Port()}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26408}{}\doxysection{v2.\+32.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26408}

\begin{DoxyItemize}
\item Added the {\ttfamily selenium-\/webdriver/testing} package, which provides a basic framework for writing tests using Mocha. See {\ttfamily selenium-\/webdriver/example/google\+\_\+search\+\_\+test.\+js} for usage.
\item 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.
\item Removed deprecated functions originally scheduled for removal in 2.\+31.\+0
\begin{DoxyItemize}
\item promise.\+Application.\+get\+Instance()
\item promise.\+Control\+Flow\+::schedule()
\item promise.\+Control\+Flow\+::schedule\+Timeout()
\item promise.\+Control\+Flow\+::schedule\+Wait()
\end{DoxyItemize}
\item Renamed some functions for consistency with Promises/\+A+ terminology. The original functions have been deprecated and will be removed in 2.\+34.\+0\+:
\begin{DoxyItemize}
\item promise.\+resolved() -\/$>$ promise.\+fulfilled()
\item promise.\+Deferred\+::resolve() -\/$>$ promise.\+Deferred\+::fulfill()
\end{DoxyItemize}
\item FIXED\+: remote.\+Selenium\+Server\+::stop now shuts down within the active control flow, allowing scripts to finish. Use \#kill to shutdown immediately.
\item FIXED\+: 5321\+: cookie deletion commands
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26409}{}\doxysection{v2.\+31.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26409}

\begin{DoxyItemize}
\item Added an example script.
\item Added a class for controlling the standalone Selenium server (server available separately)
\item Added a portprober for finding free ports
\item FIXED\+: Web\+Elements now belong to the same flow as their parent driver.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26410}{}\doxysection{v2.\+30.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26410}

\begin{DoxyItemize}
\item Ensures promise rejections are always Error values.
\item Version bump to keep in sync with the Selenium project.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26411}{}\doxysection{v2.\+29.\+1}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26411}

\begin{DoxyItemize}
\item Fixed a bug that could lead to an infinite loop.
\item Added a README.\+md
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26412}{}\doxysection{v2.\+29.\+0}\label{md_sfcode_node_modules_selenium_webdriver_CHANGES_autotoc_md26412}

\begin{DoxyItemize}
\item Initial release for npm\+: \begin{DoxyVerb}  npm install selenium-webdriver
\end{DoxyVerb}
 
\end{DoxyItemize}